From 408c608fc7bf1557ee987dd7fbe662fabed21a53 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 07:39:03 +0200 Subject: Adding upstream version 1.1.1. Signed-off-by: Daniel Baumann --- examples/CMakeLists.txt | 16 + examples/enum_to_string.cpp | 172 +++ examples/enum_to_string_hash.cpp | 127 +++ examples/html_entities_map.cpp | 2147 ++++++++++++++++++++++++++++++++++++++ examples/pixel_art.cpp | 120 +++ examples/static_assert.cpp | 9 + examples/value_modification.cpp | 37 + 7 files changed, 2628 insertions(+) create mode 100644 examples/CMakeLists.txt create mode 100644 examples/enum_to_string.cpp create mode 100644 examples/enum_to_string_hash.cpp create mode 100644 examples/html_entities_map.cpp create mode 100644 examples/pixel_art.cpp create mode 100644 examples/static_assert.cpp create mode 100644 examples/value_modification.cpp (limited to 'examples') diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 0000000..2ae5917 --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,16 @@ +set(frozen.examples.srcs enum_to_string enum_to_string_hash pixel_art static_assert value_modification) + +if ("${CMAKE_CXX_COMPILER_ID}" MATCHES ".*Clang") + list(APPEND frozen.examples.srcs html_entities_map) +endif() + +foreach(src IN LISTS frozen.examples.srcs) + add_executable(frozen.example.${src} ${src}.cpp) + target_link_libraries(frozen.example.${src} PUBLIC frozen::frozen) +endforeach() + +if (TARGET frozen.example.html_entities_map) + target_compile_options(frozen.example.html_entities_map PUBLIC + $<$:-fconstexpr-steps=123456789> + $<$:-fconstexpr-steps=123456789>) +endif() diff --git a/examples/enum_to_string.cpp b/examples/enum_to_string.cpp new file mode 100644 index 0000000..a602400 --- /dev/null +++ b/examples/enum_to_string.cpp @@ -0,0 +1,172 @@ +#include // for std::puts + +/* ELF Relocations */ + +#define ELF_RELOC(name, value) name = value, + +/** i386 relocations. */ +enum RELOC_i386 { + +#ifndef ELF_RELOC +#error "ELF_RELOC must be defined" +#endif + +/* TODO: this is just a subset */ +ELF_RELOC(R_386_NONE, 0) +ELF_RELOC(R_386_32, 1) +ELF_RELOC(R_386_PC32, 2) +ELF_RELOC(R_386_GOT32, 3) +ELF_RELOC(R_386_PLT32, 4) +ELF_RELOC(R_386_COPY, 5) +ELF_RELOC(R_386_GLOB_DAT, 6) +ELF_RELOC(R_386_JUMP_SLOT, 7) +ELF_RELOC(R_386_RELATIVE, 8) +ELF_RELOC(R_386_GOTOFF, 9) +ELF_RELOC(R_386_GOTPC, 10) +ELF_RELOC(R_386_32PLT, 11) +ELF_RELOC(R_386_TLS_TPOFF, 14) +ELF_RELOC(R_386_TLS_IE, 15) +ELF_RELOC(R_386_TLS_GOTIE, 16) +ELF_RELOC(R_386_TLS_LE, 17) +ELF_RELOC(R_386_TLS_GD, 18) +ELF_RELOC(R_386_TLS_LDM, 19) +ELF_RELOC(R_386_16, 20) +ELF_RELOC(R_386_PC16, 21) +ELF_RELOC(R_386_8, 22) +ELF_RELOC(R_386_PC8, 23) +ELF_RELOC(R_386_TLS_GD_32, 24) +ELF_RELOC(R_386_TLS_GD_PUSH, 25) +ELF_RELOC(R_386_TLS_GD_CALL, 26) +ELF_RELOC(R_386_TLS_GD_POP, 27) +ELF_RELOC(R_386_TLS_LDM_32, 28) +ELF_RELOC(R_386_TLS_LDM_PUSH, 29) +ELF_RELOC(R_386_TLS_LDM_CALL, 30) +ELF_RELOC(R_386_TLS_LDM_POP, 31) +ELF_RELOC(R_386_TLS_LDO_32, 32) +ELF_RELOC(R_386_TLS_IE_32, 33) +ELF_RELOC(R_386_TLS_LE_32, 34) +ELF_RELOC(R_386_TLS_DTPMOD32, 35) +ELF_RELOC(R_386_TLS_DTPOFF32, 36) +ELF_RELOC(R_386_TLS_TPOFF32, 37) +ELF_RELOC(R_386_TLS_GOTDESC, 39) +ELF_RELOC(R_386_TLS_DESC_CALL, 40) +ELF_RELOC(R_386_TLS_DESC, 41) +ELF_RELOC(R_386_IRELATIVE, 42) +ELF_RELOC(R_386_NUM, 43) +}; + +#ifndef SWITCH_VERSION + +#ifdef FROZEN_VERSION +#include "frozen/map.h" +#else +#include +#endif + +#ifdef FROZEN_VERSION +constexpr +frozen::map +#else +const +std::map +#endif +e2s = { + { RELOC_i386::R_386_NONE, "NONE"}, + { RELOC_i386::R_386_32, "R32"}, + { RELOC_i386::R_386_PC32, "PC32"}, + { RELOC_i386::R_386_GOT32, "GOT32"}, + { RELOC_i386::R_386_PLT32, "PLT32"}, + { RELOC_i386::R_386_COPY, "COPY"}, + { RELOC_i386::R_386_GLOB_DAT, "GLOB_DAT"}, + { RELOC_i386::R_386_JUMP_SLOT, "JUMP_SLOT"}, + { RELOC_i386::R_386_RELATIVE, "RELATIVE"}, + { RELOC_i386::R_386_GOTOFF, "GOTOFF"}, + { RELOC_i386::R_386_GOTPC, "GOTPC"}, + { RELOC_i386::R_386_32PLT, "R32PLT"}, + { RELOC_i386::R_386_TLS_TPOFF, "TLS_TPOFF"}, + { RELOC_i386::R_386_TLS_IE, "TLS_IE"}, + { RELOC_i386::R_386_TLS_GOTIE, "TLS_GOTIE"}, + { RELOC_i386::R_386_TLS_LE, "TLS_LE"}, + { RELOC_i386::R_386_TLS_GD, "TLS_GD"}, + { RELOC_i386::R_386_TLS_LDM, "TLS_LDM"}, + { RELOC_i386::R_386_16, "R16"}, + { RELOC_i386::R_386_PC16, "PC16"}, + { RELOC_i386::R_386_8, "R8"}, + { RELOC_i386::R_386_PC8, "PC8"}, + { RELOC_i386::R_386_TLS_GD_32, "TLS_GD_32"}, + { RELOC_i386::R_386_TLS_GD_PUSH, "TLS_GD_PUSH"}, + { RELOC_i386::R_386_TLS_GD_CALL, "TLS_GD_CALL"}, + { RELOC_i386::R_386_TLS_GD_POP, "TLS_GD_POP"}, + { RELOC_i386::R_386_TLS_LDM_32, "TLS_LDM_32"}, + { RELOC_i386::R_386_TLS_LDM_PUSH, "TLS_LDM_PUSH"}, + { RELOC_i386::R_386_TLS_LDM_CALL, "TLS_LDM_CALL"}, + { RELOC_i386::R_386_TLS_LDM_POP, "TLS_LDM_POP"}, + { RELOC_i386::R_386_TLS_LDO_32, "TLS_LDO_32"}, + { RELOC_i386::R_386_TLS_IE_32, "TLS_IE_32"}, + { RELOC_i386::R_386_TLS_LE_32, "TLS_LE_32"}, + { RELOC_i386::R_386_TLS_DTPMOD32, "TLS_DTPMOD32"}, + { RELOC_i386::R_386_TLS_DTPOFF32, "TLS_DTPOFF32"}, + { RELOC_i386::R_386_TLS_TPOFF32, "TLS_TPOFF32"}, + { RELOC_i386::R_386_TLS_GOTDESC, "TLS_GOTDESC"}, + { RELOC_i386::R_386_TLS_DESC_CALL, "TLS_DESC_CALL"}, + { RELOC_i386::R_386_TLS_DESC, "TLS_DESC"}, + { RELOC_i386::R_386_IRELATIVE, "IRELATIVE"}, + { RELOC_i386::R_386_NUM, "NUM"}, +}; + +char const * enum_to_string(RELOC_i386 e) { + return e2s.at(e); +} +#else +char const * enum_to_string(RELOC_i386 e) { + switch(e) { + case RELOC_i386::R_386_NONE: return "NONE"; + case RELOC_i386::R_386_32: return "R32"; + case RELOC_i386::R_386_PC32: return "PC32"; + case RELOC_i386::R_386_GOT32: return "GOT32"; + case RELOC_i386::R_386_PLT32: return "PLT32"; + case RELOC_i386::R_386_COPY: return "COPY"; + case RELOC_i386::R_386_GLOB_DAT: return "GLOB_DAT"; + case RELOC_i386::R_386_JUMP_SLOT: return "JUMP_SLOT"; + case RELOC_i386::R_386_RELATIVE: return "RELATIVE"; + case RELOC_i386::R_386_GOTOFF: return "GOTOFF"; + case RELOC_i386::R_386_GOTPC: return "GOTPC"; + case RELOC_i386::R_386_32PLT: return "R32PLT"; + case RELOC_i386::R_386_TLS_TPOFF: return "TLS_TPOFF"; + case RELOC_i386::R_386_TLS_IE: return "TLS_IE"; + case RELOC_i386::R_386_TLS_GOTIE: return "TLS_GOTIE"; + case RELOC_i386::R_386_TLS_LE: return "TLS_LE"; + case RELOC_i386::R_386_TLS_GD: return "TLS_GD"; + case RELOC_i386::R_386_TLS_LDM: return "TLS_LDM"; + case RELOC_i386::R_386_16: return "R16"; + case RELOC_i386::R_386_PC16: return "PC16"; + case RELOC_i386::R_386_8: return "R8"; + case RELOC_i386::R_386_PC8: return "PC8"; + case RELOC_i386::R_386_TLS_GD_32: return "TLS_GD_32"; + case RELOC_i386::R_386_TLS_GD_PUSH: return "TLS_GD_PUSH"; + case RELOC_i386::R_386_TLS_GD_CALL: return "TLS_GD_CALL"; + case RELOC_i386::R_386_TLS_GD_POP: return "TLS_GD_POP"; + case RELOC_i386::R_386_TLS_LDM_32: return "TLS_LDM_32"; + case RELOC_i386::R_386_TLS_LDM_PUSH: return "TLS_LDM_PUSH"; + case RELOC_i386::R_386_TLS_LDM_CALL: return "TLS_LDM_CALL"; + case RELOC_i386::R_386_TLS_LDM_POP: return "TLS_LDM_POP"; + case RELOC_i386::R_386_TLS_LDO_32: return "TLS_LDO_32"; + case RELOC_i386::R_386_TLS_IE_32: return "TLS_IE_32"; + case RELOC_i386::R_386_TLS_LE_32: return "TLS_LE_32"; + case RELOC_i386::R_386_TLS_DTPMOD32: return "TLS_DTPMOD32"; + case RELOC_i386::R_386_TLS_DTPOFF32: return "TLS_DTPOFF32"; + case RELOC_i386::R_386_TLS_TPOFF32: return "TLS_TPOFF32"; + case RELOC_i386::R_386_TLS_GOTDESC: return "TLS_GOTDESC"; + case RELOC_i386::R_386_TLS_DESC_CALL: return "TLS_DESC_CALL"; + case RELOC_i386::R_386_TLS_DESC: return "TLS_DESC"; + case RELOC_i386::R_386_IRELATIVE: return "IRELATIVE"; + case RELOC_i386::R_386_NUM: return "NUM"; + } +} + +#endif + +int main() { + std::puts(enum_to_string(RELOC_i386::R_386_8)); + return 0; +} diff --git a/examples/enum_to_string_hash.cpp b/examples/enum_to_string_hash.cpp new file mode 100644 index 0000000..18b0b69 --- /dev/null +++ b/examples/enum_to_string_hash.cpp @@ -0,0 +1,127 @@ +#include // for std::puts + +/* ELF Relocations */ + +#define ELF_RELOC(name, value) name = value, + +/** i386 relocations. */ +enum RELOC_i386 { + +#ifndef ELF_RELOC +#error "ELF_RELOC must be defined" +#endif + +/* TODO: this is just a subset */ +ELF_RELOC(R_386_NONE, 0) +ELF_RELOC(R_386_32, 1) +ELF_RELOC(R_386_PC32, 2) +ELF_RELOC(R_386_GOT32, 3) +ELF_RELOC(R_386_PLT32, 4) +ELF_RELOC(R_386_COPY, 5) +ELF_RELOC(R_386_GLOB_DAT, 6) +ELF_RELOC(R_386_JUMP_SLOT, 7) +ELF_RELOC(R_386_RELATIVE, 8) +ELF_RELOC(R_386_GOTOFF, 9) +ELF_RELOC(R_386_GOTPC, 10) +ELF_RELOC(R_386_32PLT, 11) +ELF_RELOC(R_386_TLS_TPOFF, 14) +ELF_RELOC(R_386_TLS_IE, 15) +ELF_RELOC(R_386_TLS_GOTIE, 16) +ELF_RELOC(R_386_TLS_LE, 17) +ELF_RELOC(R_386_TLS_GD, 18) +ELF_RELOC(R_386_TLS_LDM, 19) +ELF_RELOC(R_386_16, 20) +ELF_RELOC(R_386_PC16, 21) +ELF_RELOC(R_386_8, 22) +ELF_RELOC(R_386_PC8, 23) +ELF_RELOC(R_386_TLS_GD_32, 24) +ELF_RELOC(R_386_TLS_GD_PUSH, 25) +ELF_RELOC(R_386_TLS_GD_CALL, 26) +ELF_RELOC(R_386_TLS_GD_POP, 27) +ELF_RELOC(R_386_TLS_LDM_32, 28) +ELF_RELOC(R_386_TLS_LDM_PUSH, 29) +ELF_RELOC(R_386_TLS_LDM_CALL, 30) +ELF_RELOC(R_386_TLS_LDM_POP, 31) +ELF_RELOC(R_386_TLS_LDO_32, 32) +ELF_RELOC(R_386_TLS_IE_32, 33) +ELF_RELOC(R_386_TLS_LE_32, 34) +ELF_RELOC(R_386_TLS_DTPMOD32, 35) +ELF_RELOC(R_386_TLS_DTPOFF32, 36) +ELF_RELOC(R_386_TLS_TPOFF32, 37) +ELF_RELOC(R_386_TLS_GOTDESC, 39) +ELF_RELOC(R_386_TLS_DESC_CALL, 40) +ELF_RELOC(R_386_TLS_DESC, 41) +ELF_RELOC(R_386_IRELATIVE, 42) +ELF_RELOC(R_386_NUM, 43) +}; + +#ifdef FROZEN_VERSION +#include "frozen/unordered_map.h" +namespace frozen { + template <> struct elsa : elsa { + }; +} +#else +#include +#endif + +#ifdef FROZEN_VERSION +constexpr +frozen::unordered_map +#else +const +std::unordered_map +#endif +e2s = { + { RELOC_i386::R_386_NONE, "NONE"}, + { RELOC_i386::R_386_32, "R32"}, + { RELOC_i386::R_386_PC32, "PC32"}, + { RELOC_i386::R_386_GOT32, "GOT32"}, + { RELOC_i386::R_386_PLT32, "PLT32"}, + { RELOC_i386::R_386_COPY, "COPY"}, + { RELOC_i386::R_386_GLOB_DAT, "GLOB_DAT"}, + { RELOC_i386::R_386_JUMP_SLOT, "JUMP_SLOT"}, + { RELOC_i386::R_386_RELATIVE, "RELATIVE"}, + { RELOC_i386::R_386_GOTOFF, "GOTOFF"}, + { RELOC_i386::R_386_GOTPC, "GOTPC"}, + { RELOC_i386::R_386_32PLT, "R32PLT"}, + { RELOC_i386::R_386_TLS_TPOFF, "TLS_TPOFF"}, + { RELOC_i386::R_386_TLS_IE, "TLS_IE"}, + { RELOC_i386::R_386_TLS_GOTIE, "TLS_GOTIE"}, + { RELOC_i386::R_386_TLS_LE, "TLS_LE"}, + { RELOC_i386::R_386_TLS_GD, "TLS_GD"}, + { RELOC_i386::R_386_TLS_LDM, "TLS_LDM"}, + { RELOC_i386::R_386_16, "R16"}, + { RELOC_i386::R_386_PC16, "PC16"}, + { RELOC_i386::R_386_8, "R8"}, + { RELOC_i386::R_386_PC8, "PC8"}, + { RELOC_i386::R_386_TLS_GD_32, "TLS_GD_32"}, + { RELOC_i386::R_386_TLS_GD_PUSH, "TLS_GD_PUSH"}, + { RELOC_i386::R_386_TLS_GD_CALL, "TLS_GD_CALL"}, + { RELOC_i386::R_386_TLS_GD_POP, "TLS_GD_POP"}, + { RELOC_i386::R_386_TLS_LDM_32, "TLS_LDM_32"}, + { RELOC_i386::R_386_TLS_LDM_PUSH, "TLS_LDM_PUSH"}, + { RELOC_i386::R_386_TLS_LDM_CALL, "TLS_LDM_CALL"}, + { RELOC_i386::R_386_TLS_LDM_POP, "TLS_LDM_POP"}, + { RELOC_i386::R_386_TLS_LDO_32, "TLS_LDO_32"}, + { RELOC_i386::R_386_TLS_IE_32, "TLS_IE_32"}, + { RELOC_i386::R_386_TLS_LE_32, "TLS_LE_32"}, + { RELOC_i386::R_386_TLS_DTPMOD32, "TLS_DTPMOD32"}, + { RELOC_i386::R_386_TLS_DTPOFF32, "TLS_DTPOFF32"}, + { RELOC_i386::R_386_TLS_TPOFF32, "TLS_TPOFF32"}, + { RELOC_i386::R_386_TLS_GOTDESC, "TLS_GOTDESC"}, + { RELOC_i386::R_386_TLS_DESC_CALL, "TLS_DESC_CALL"}, + { RELOC_i386::R_386_TLS_DESC, "TLS_DESC"}, + { RELOC_i386::R_386_IRELATIVE, "IRELATIVE"}, + { RELOC_i386::R_386_NUM, "NUM"}, +}; + +char const * enum_to_string(RELOC_i386 e) { + return e2s.at(e); +} + +int main() { + std::puts(enum_to_string(RELOC_i386::R_386_8)); + return 0; +} + diff --git a/examples/html_entities_map.cpp b/examples/html_entities_map.cpp new file mode 100644 index 0000000..ac7d922 --- /dev/null +++ b/examples/html_entities_map.cpp @@ -0,0 +1,2147 @@ + +#include +#include +#include + +struct codes_t +{ + uint32_t iCodepoint1; + uint32_t iCodepoint2{0}; +}; + +static constexpr std::pair s_Entities[] +{ + { "AElig" , { 0xC6 }}, + { "AMP" , { 0x26 }}, + { "Aacute" , { 0xC1 }}, + { "Abreve" , { 0x0102 }}, + { "Acirc" , { 0xC2 }}, + { "Acy" , { 0x0410 }}, + { "Afr" , { 0x01D504 }}, + { "Agrave" , { 0xC0 }}, + { "Alpha" , { 0x0391 }}, + { "Amacr" , { 0x0100 }}, + { "And" , { 0x2A53 }}, + { "Aogon" , { 0x0104 }}, + { "Aopf" , { 0x01D538 }}, + { "ApplyFunction" , { 0x2061 }}, + { "Aring" , { 0xC5 }}, + { "Ascr" , { 0x01D49C }}, + { "Assign" , { 0x2254 }}, + { "Atilde" , { 0xC3 }}, + { "Auml" , { 0xC4 }}, + { "Backslash" , { 0x2216 }}, + { "Barv" , { 0x2AE7 }}, + { "Barwed" , { 0x2306 }}, + { "Bcy" , { 0x0411 }}, + { "Because" , { 0x2235 }}, + { "Bernoullis" , { 0x212C }}, + { "Beta" , { 0x0392 }}, + { "Bfr" , { 0x01D505 }}, + { "Bopf" , { 0x01D539 }}, + { "Breve" , { 0x02D8 }}, + { "Bscr" , { 0x212C }}, + { "Bumpeq" , { 0x224E }}, + { "CHcy" , { 0x0427 }}, + { "COPY" , { 0xA9 }}, + { "Cacute" , { 0x0106 }}, + { "Cap" , { 0x22D2 }}, + { "CapitalDifferentialD" , { 0x2145 }}, + { "Cayleys" , { 0x212D }}, + { "Ccaron" , { 0x010C }}, + { "Ccedil" , { 0xC7 }}, + { "Ccirc" , { 0x0108 }}, + { "Cconint" , { 0x2230 }}, + { "Cdot" , { 0x010A }}, + { "Cedilla" , { 0xB8 }}, + { "CenterDot" , { 0xB7 }}, + { "Cfr" , { 0x212D }}, + { "Chi" , { 0x03A7 }}, + { "CircleDot" , { 0x2299 }}, + { "CircleMinus" , { 0x2296 }}, + { "CirclePlus" , { 0x2295 }}, + { "CircleTimes" , { 0x2297 }}, + { "ClockwiseContourIntegral" , { 0x2232 }}, + { "CloseCurlyDoubleQuote" , { 0x201D }}, + { "CloseCurlyQuote" , { 0x2019 }}, + { "Colon" , { 0x2237 }}, + { "Colone" , { 0x2A74 }}, + { "Congruent" , { 0x2261 }}, + { "Conint" , { 0x222F }}, + { "ContourIntegral" , { 0x222E }}, + { "Copf" , { 0x2102 }}, + { "Coproduct" , { 0x2210 }}, + { "CounterClockwiseContourIntegral" , { 0x2233 }}, + { "Cross" , { 0x2A2F }}, + { "Cscr" , { 0x01D49E }}, + { "Cup" , { 0x22D3 }}, + { "CupCap" , { 0x224D }}, + { "DD" , { 0x2145 }}, + { "DDotrahd" , { 0x2911 }}, + { "DJcy" , { 0x0402 }}, + { "DScy" , { 0x0405 }}, + { "DZcy" , { 0x040F }}, + { "Dagger" , { 0x2021 }}, + { "Darr" , { 0x21A1 }}, + { "Dashv" , { 0x2AE4 }}, + { "Dcaron" , { 0x010E }}, + { "Dcy" , { 0x0414 }}, + { "Del" , { 0x2207 }}, + { "Delta" , { 0x0394 }}, + { "Dfr" , { 0x01D507 }}, + { "DiacriticalAcute" , { 0xB4 }}, + { "DiacriticalDot" , { 0x02D9 }}, + { "DiacriticalDoubleAcute" , { 0x02DD }}, + { "DiacriticalGrave" , { 0x60 }}, + { "DiacriticalTilde" , { 0x02DC }}, + { "Diamond" , { 0x22C4 }}, + { "DifferentialD" , { 0x2146 }}, + { "Dopf" , { 0x01D53B }}, + { "Dot" , { 0xA8 }}, + { "DotDot" , { 0x20DC }}, + { "DotEqual" , { 0x2250 }}, + { "DoubleContourIntegral" , { 0x222F }}, + { "DoubleDot" , { 0xA8 }}, + { "DoubleDownArrow" , { 0x21D3 }}, + { "DoubleLeftArrow" , { 0x21D0 }}, + { "DoubleLeftRightArrow" , { 0x21D4 }}, + { "DoubleLeftTee" , { 0x2AE4 }}, + { "DoubleLongLeftArrow" , { 0x27F8 }}, + { "DoubleLongLeftRightArrow" , { 0x27FA }}, + { "DoubleLongRightArrow" , { 0x27F9 }}, + { "DoubleRightArrow" , { 0x21D2 }}, + { "DoubleRightTee" , { 0x22A8 }}, + { "DoubleUpArrow" , { 0x21D1 }}, + { "DoubleUpDownArrow" , { 0x21D5 }}, + { "DoubleVerticalBar" , { 0x2225 }}, + { "DownArrow" , { 0x2193 }}, + { "DownArrowBar" , { 0x2913 }}, + { "DownArrowUpArrow" , { 0x21F5 }}, + { "DownBreve" , { 0x0311 }}, + { "DownLeftRightVector" , { 0x2950 }}, + { "DownLeftTeeVector" , { 0x295E }}, + { "DownLeftVector" , { 0x21BD }}, + { "DownLeftVectorBar" , { 0x2956 }}, + { "DownRightTeeVector" , { 0x295F }}, + { "DownRightVector" , { 0x21C1 }}, + { "DownRightVectorBar" , { 0x2957 }}, + { "DownTee" , { 0x22A4 }}, + { "DownTeeArrow" , { 0x21A7 }}, + { "Downarrow" , { 0x21D3 }}, + { "Dscr" , { 0x01D49F }}, + { "Dstrok" , { 0x0110 }}, + { "ENG" , { 0x014A }}, + { "ETH" , { 0xD0 }}, + { "Eacute" , { 0xC9 }}, + { "Ecaron" , { 0x011A }}, + { "Ecirc" , { 0xCA }}, + { "Ecy" , { 0x042D }}, + { "Edot" , { 0x0116 }}, + { "Efr" , { 0x01D508 }}, + { "Egrave" , { 0xC8 }}, + { "Element" , { 0x2208 }}, + { "Emacr" , { 0x0112 }}, + { "EmptySmallSquare" , { 0x25FB }}, + { "EmptyVerySmallSquare" , { 0x25AB }}, + { "Eogon" , { 0x0118 }}, + { "Eopf" , { 0x01D53C }}, + { "Epsilon" , { 0x0395 }}, + { "Equal" , { 0x2A75 }}, + { "EqualTilde" , { 0x2242 }}, + { "Equilibrium" , { 0x21CC }}, + { "Escr" , { 0x2130 }}, + { "Esim" , { 0x2A73 }}, + { "Eta" , { 0x0397 }}, + { "Euml" , { 0xCB }}, + { "Exists" , { 0x2203 }}, + { "ExponentialE" , { 0x2147 }}, + { "Fcy" , { 0x0424 }}, + { "Ffr" , { 0x01D509 }}, + { "FilledSmallSquare" , { 0x25FC }}, + { "FilledVerySmallSquare" , { 0x25AA }}, + { "Fopf" , { 0x01D53D }}, + { "ForAll" , { 0x2200 }}, + { "Fouriertrf" , { 0x2131 }}, + { "Fscr" , { 0x2131 }}, + { "GJcy" , { 0x0403 }}, + { "GT" , { 0x3E }}, + { "Gamma" , { 0x0393 }}, + { "Gammad" , { 0x03DC }}, + { "Gbreve" , { 0x011E }}, + { "Gcedil" , { 0x0122 }}, + { "Gcirc" , { 0x011C }}, + { "Gcy" , { 0x0413 }}, + { "Gdot" , { 0x0120 }}, + { "Gfr" , { 0x01D50A }}, + { "Gg" , { 0x22D9 }}, + { "Gopf" , { 0x01D53E }}, + { "GreaterEqual" , { 0x2265 }}, + { "GreaterEqualLess" , { 0x22DB }}, + { "GreaterFullEqual" , { 0x2267 }}, + { "GreaterGreater" , { 0x2AA2 }}, + { "GreaterLess" , { 0x2277 }}, + { "GreaterSlantEqual" , { 0x2A7E }}, + { "GreaterTilde" , { 0x2273 }}, + { "Gscr" , { 0x01D4A2 }}, + { "Gt" , { 0x226B }}, + { "HARDcy" , { 0x042A }}, + { "Hacek" , { 0x02C7 }}, + { "Hat" , { 0x5E }}, + { "Hcirc" , { 0x0124 }}, + { "Hfr" , { 0x210C }}, + { "HilbertSpace" , { 0x210B }}, + { "Hopf" , { 0x210D }}, + { "HorizontalLine" , { 0x2500 }}, + { "Hscr" , { 0x210B }}, + { "Hstrok" , { 0x0126 }}, + { "HumpDownHump" , { 0x224E }}, + { "HumpEqual" , { 0x224F }}, + { "IEcy" , { 0x0415 }}, + { "IJlig" , { 0x0132 }}, + { "IOcy" , { 0x0401 }}, + { "Iacute" , { 0xCD }}, + { "Icirc" , { 0xCE }}, + { "Icy" , { 0x0418 }}, + { "Idot" , { 0x0130 }}, + { "Ifr" , { 0x2111 }}, + { "Igrave" , { 0xCC }}, + { "Im" , { 0x2111 }}, + { "Imacr" , { 0x012A }}, + { "ImaginaryI" , { 0x2148 }}, + { "Implies" , { 0x21D2 }}, + { "Int" , { 0x222C }}, + { "Integral" , { 0x222B }}, + { "Intersection" , { 0x22C2 }}, + { "InvisibleComma" , { 0x2063 }}, + { "InvisibleTimes" , { 0x2062 }}, + { "Iogon" , { 0x012E }}, + { "Iopf" , { 0x01D540 }}, + { "Iota" , { 0x0399 }}, + { "Iscr" , { 0x2110 }}, + { "Itilde" , { 0x0128 }}, + { "Iukcy" , { 0x0406 }}, + { "Iuml" , { 0xCF }}, + { "Jcirc" , { 0x0134 }}, + { "Jcy" , { 0x0419 }}, + { "Jfr" , { 0x01D50D }}, + { "Jopf" , { 0x01D541 }}, + { "Jscr" , { 0x01D4A5 }}, + { "Jsercy" , { 0x0408 }}, + { "Jukcy" , { 0x0404 }}, + { "KHcy" , { 0x0425 }}, + { "KJcy" , { 0x040C }}, + { "Kappa" , { 0x039A }}, + { "Kcedil" , { 0x0136 }}, + { "Kcy" , { 0x041A }}, + { "Kfr" , { 0x01D50E }}, + { "Kopf" , { 0x01D542 }}, + { "Kscr" , { 0x01D4A6 }}, + { "LJcy" , { 0x0409 }}, + { "LT" , { 0x3C }}, + { "Lacute" , { 0x0139 }}, + { "Lambda" , { 0x039B }}, + { "Lang" , { 0x27EA }}, + { "Laplacetrf" , { 0x2112 }}, + { "Larr" , { 0x219E }}, + { "Lcaron" , { 0x013D }}, + { "Lcedil" , { 0x013B }}, + { "Lcy" , { 0x041B }}, + { "LeftAngleBracket" , { 0x27E8 }}, + { "LeftArrow" , { 0x2190 }}, + { "LeftArrowBar" , { 0x21E4 }}, + { "LeftArrowRightArrow" , { 0x21C6 }}, + { "LeftCeiling" , { 0x2308 }}, + { "LeftDoubleBracket" , { 0x27E6 }}, + { "LeftDownTeeVector" , { 0x2961 }}, + { "LeftDownVector" , { 0x21C3 }}, + { "LeftDownVectorBar" , { 0x2959 }}, + { "LeftFloor" , { 0x230A }}, + { "LeftRightArrow" , { 0x2194 }}, + { "LeftRightVector" , { 0x294E }}, + { "LeftTee" , { 0x22A3 }}, + { "LeftTeeArrow" , { 0x21A4 }}, + { "LeftTeeVector" , { 0x295A }}, + { "LeftTriangle" , { 0x22B2 }}, + { "LeftTriangleBar" , { 0x29CF }}, + { "LeftTriangleEqual" , { 0x22B4 }}, + { "LeftUpDownVector" , { 0x2951 }}, + { "LeftUpTeeVector" , { 0x2960 }}, + { "LeftUpVector" , { 0x21BF }}, + { "LeftUpVectorBar" , { 0x2958 }}, + { "LeftVector" , { 0x21BC }}, + { "LeftVectorBar" , { 0x2952 }}, + { "Leftarrow" , { 0x21D0 }}, + { "Leftrightarrow" , { 0x21D4 }}, + { "LessEqualGreater" , { 0x22DA }}, + { "LessFullEqual" , { 0x2266 }}, + { "LessGreater" , { 0x2276 }}, + { "LessLess" , { 0x2AA1 }}, + { "LessSlantEqual" , { 0x2A7D }}, + { "LessTilde" , { 0x2272 }}, + { "Lfr" , { 0x01D50F }}, + { "Ll" , { 0x22D8 }}, + { "Lleftarrow" , { 0x21DA }}, + { "Lmidot" , { 0x013F }}, + { "LongLeftArrow" , { 0x27F5 }}, + { "LongLeftRightArrow" , { 0x27F7 }}, + { "LongRightArrow" , { 0x27F6 }}, + { "Longleftarrow" , { 0x27F8 }}, + { "Longleftrightarrow" , { 0x27FA }}, + { "Longrightarrow" , { 0x27F9 }}, + { "Lopf" , { 0x01D543 }}, + { "LowerLeftArrow" , { 0x2199 }}, + { "LowerRightArrow" , { 0x2198 }}, + { "Lscr" , { 0x2112 }}, + { "Lsh" , { 0x21B0 }}, + { "Lstrok" , { 0x0141 }}, + { "Lt" , { 0x226A }}, + { "Map" , { 0x2905 }}, + { "Mcy" , { 0x041C }}, + { "MediumSpace" , { 0x205F }}, + { "Mellintrf" , { 0x2133 }}, + { "Mfr" , { 0x01D510 }}, + { "MinusPlus" , { 0x2213 }}, + { "Mopf" , { 0x01D544 }}, + { "Mscr" , { 0x2133 }}, + { "Mu" , { 0x039C }}, + { "NJcy" , { 0x040A }}, + { "Nacute" , { 0x0143 }}, + { "Ncaron" , { 0x0147 }}, + { "Ncedil" , { 0x0145 }}, + { "Ncy" , { 0x041D }}, + { "NegativeMediumSpace" , { 0x200B }}, + { "NegativeThickSpace" , { 0x200B }}, + { "NegativeThinSpace" , { 0x200B }}, + { "NegativeVeryThinSpace" , { 0x200B }}, + { "NestedGreaterGreater" , { 0x226B }}, + { "NestedLessLess" , { 0x226A }}, + { "NewLine" , { 0x0A }}, + { "Nfr" , { 0x01D511 }}, + { "NoBreak" , { 0x2060 }}, + { "NonBreakingSpace" , { 0xA0 }}, + { "Nopf" , { 0x2115 }}, + { "Not" , { 0x2AEC }}, + { "NotCongruent" , { 0x2262 }}, + { "NotCupCap" , { 0x226D }}, + { "NotDoubleVerticalBar" , { 0x2226 }}, + { "NotElement" , { 0x2209 }}, + { "NotEqual" , { 0x2260 }}, + { "NotEqualTilde" , { 0x2242, 0x0338 }}, + { "NotExists" , { 0x2204 }}, + { "NotGreater" , { 0x226F }}, + { "NotGreaterEqual" , { 0x2271 }}, + { "NotGreaterFullEqual" , { 0x2267, 0x0338 }}, + { "NotGreaterGreater" , { 0x226B, 0x0338 }}, + { "NotGreaterLess" , { 0x2279 }}, + { "NotGreaterSlantEqual" , { 0x2A7E, 0x0338 }}, + { "NotGreaterTilde" , { 0x2275 }}, + { "NotHumpDownHump" , { 0x224E, 0x0338 }}, + { "NotHumpEqual" , { 0x224F, 0x0338 }}, + { "NotLeftTriangle" , { 0x22EA }}, + { "NotLeftTriangleBar" , { 0x29CF, 0x0338 }}, + { "NotLeftTriangleEqual" , { 0x22EC }}, + { "NotLess" , { 0x226E }}, + { "NotLessEqual" , { 0x2270 }}, + { "NotLessGreater" , { 0x2278 }}, + { "NotLessLess" , { 0x226A, 0x0338 }}, + { "NotLessSlantEqual" , { 0x2A7D, 0x0338 }}, + { "NotLessTilde" , { 0x2274 }}, + { "NotNestedGreaterGreater" , { 0x2AA2, 0x0338 }}, + { "NotNestedLessLess" , { 0x2AA1, 0x0338 }}, + { "NotPrecedes" , { 0x2280 }}, + { "NotPrecedesEqual" , { 0x2AAF, 0x0338 }}, + { "NotPrecedesSlantEqual" , { 0x22E0 }}, + { "NotReverseElement" , { 0x220C }}, + { "NotRightTriangle" , { 0x22EB }}, + { "NotRightTriangleBar" , { 0x29D0, 0x0338 }}, + { "NotRightTriangleEqual" , { 0x22ED }}, + { "NotSquareSubset" , { 0x228F, 0x0338 }}, + { "NotSquareSubsetEqual" , { 0x22E2 }}, + { "NotSquareSuperset" , { 0x2290, 0x0338 }}, + { "NotSquareSupersetEqual" , { 0x22E3 }}, + { "NotSubset" , { 0x2282, 0x20D2 }}, + { "NotSubsetEqual" , { 0x2288 }}, + { "NotSucceeds" , { 0x2281 }}, + { "NotSucceedsEqual" , { 0x2AB0, 0x0338 }}, + { "NotSucceedsSlantEqual" , { 0x22E1 }}, + { "NotSucceedsTilde" , { 0x227F, 0x0338 }}, + { "NotSuperset" , { 0x2283, 0x20D2 }}, + { "NotSupersetEqual" , { 0x2289 }}, + { "NotTilde" , { 0x2241 }}, + { "NotTildeEqual" , { 0x2244 }}, + { "NotTildeFullEqual" , { 0x2247 }}, + { "NotTildeTilde" , { 0x2249 }}, + { "NotVerticalBar" , { 0x2224 }}, + { "Nscr" , { 0x01D4A9 }}, + { "Ntilde" , { 0xD1 }}, + { "Nu" , { 0x039D }}, + { "OElig" , { 0x0152 }}, + { "Oacute" , { 0xD3 }}, + { "Ocirc" , { 0xD4 }}, + { "Ocy" , { 0x041E }}, + { "Odblac" , { 0x0150 }}, + { "Ofr" , { 0x01D512 }}, + { "Ograve" , { 0xD2 }}, + { "Omacr" , { 0x014C }}, + { "Omega" , { 0x03A9 }}, + { "Omicron" , { 0x039F }}, + { "Oopf" , { 0x01D546 }}, + { "OpenCurlyDoubleQuote" , { 0x201C }}, + { "OpenCurlyQuote" , { 0x2018 }}, + { "Or" , { 0x2A54 }}, + { "Oscr" , { 0x01D4AA }}, + { "Oslash" , { 0xD8 }}, + { "Otilde" , { 0xD5 }}, + { "Otimes" , { 0x2A37 }}, + { "Ouml" , { 0xD6 }}, + { "OverBar" , { 0x203E }}, + { "OverBrace" , { 0x23DE }}, + { "OverBracket" , { 0x23B4 }}, + { "OverParenthesis" , { 0x23DC }}, + { "PartialD" , { 0x2202 }}, + { "Pcy" , { 0x041F }}, + { "Pfr" , { 0x01D513 }}, + { "Phi" , { 0x03A6 }}, + { "Pi" , { 0x03A0 }}, + { "PlusMinus" , { 0xB1 }}, + { "Poincareplane" , { 0x210C }}, + { "Popf" , { 0x2119 }}, + { "Pr" , { 0x2ABB }}, + { "Precedes" , { 0x227A }}, + { "PrecedesEqual" , { 0x2AAF }}, + { "PrecedesSlantEqual" , { 0x227C }}, + { "PrecedesTilde" , { 0x227E }}, + { "Prime" , { 0x2033 }}, + { "Product" , { 0x220F }}, + { "Proportion" , { 0x2237 }}, + { "Proportional" , { 0x221D }}, + { "Pscr" , { 0x01D4AB }}, + { "Psi" , { 0x03A8 }}, + { "QUOT" , { 0x22 }}, + { "Qfr" , { 0x01D514 }}, + { "Qopf" , { 0x211A }}, + { "Qscr" , { 0x01D4AC }}, + { "RBarr" , { 0x2910 }}, + { "REG" , { 0xAE }}, + { "Racute" , { 0x0154 }}, + { "Rang" , { 0x27EB }}, + { "Rarr" , { 0x21A0 }}, + { "Rarrtl" , { 0x2916 }}, + { "Rcaron" , { 0x0158 }}, + { "Rcedil" , { 0x0156 }}, + { "Rcy" , { 0x0420 }}, + { "Re" , { 0x211C }}, + { "ReverseElement" , { 0x220B }}, + { "ReverseEquilibrium" , { 0x21CB }}, + { "ReverseUpEquilibrium" , { 0x296F }}, + { "Rfr" , { 0x211C }}, + { "Rho" , { 0x03A1 }}, + { "RightAngleBracket" , { 0x27E9 }}, + { "RightArrow" , { 0x2192 }}, + { "RightArrowBar" , { 0x21E5 }}, + { "RightArrowLeftArrow" , { 0x21C4 }}, + { "RightCeiling" , { 0x2309 }}, + { "RightDoubleBracket" , { 0x27E7 }}, + { "RightDownTeeVector" , { 0x295D }}, + { "RightDownVector" , { 0x21C2 }}, + { "RightDownVectorBar" , { 0x2955 }}, + { "RightFloor" , { 0x230B }}, + { "RightTee" , { 0x22A2 }}, + { "RightTeeArrow" , { 0x21A6 }}, + { "RightTeeVector" , { 0x295B }}, + { "RightTriangle" , { 0x22B3 }}, + { "RightTriangleBar" , { 0x29D0 }}, + { "RightTriangleEqual" , { 0x22B5 }}, + { "RightUpDownVector" , { 0x294F }}, + { "RightUpTeeVector" , { 0x295C }}, + { "RightUpVector" , { 0x21BE }}, + { "RightUpVectorBar" , { 0x2954 }}, + { "RightVector" , { 0x21C0 }}, + { "RightVectorBar" , { 0x2953 }}, + { "Rightarrow" , { 0x21D2 }}, + { "Ropf" , { 0x211D }}, + { "RoundImplies" , { 0x2970 }}, + { "Rrightarrow" , { 0x21DB }}, + { "Rscr" , { 0x211B }}, + { "Rsh" , { 0x21B1 }}, + { "RuleDelayed" , { 0x29F4 }}, + { "SHCHcy" , { 0x0429 }}, + { "SHcy" , { 0x0428 }}, + { "SOFTcy" , { 0x042C }}, + { "Sacute" , { 0x015A }}, + { "Sc" , { 0x2ABC }}, + { "Scaron" , { 0x0160 }}, + { "Scedil" , { 0x015E }}, + { "Scirc" , { 0x015C }}, + { "Scy" , { 0x0421 }}, + { "Sfr" , { 0x01D516 }}, + { "ShortDownArrow" , { 0x2193 }}, + { "ShortLeftArrow" , { 0x2190 }}, + { "ShortRightArrow" , { 0x2192 }}, + { "ShortUpArrow" , { 0x2191 }}, + { "Sigma" , { 0x03A3 }}, + { "SmallCircle" , { 0x2218 }}, + { "Sopf" , { 0x01D54A }}, + { "Sqrt" , { 0x221A }}, + { "Square" , { 0x25A1 }}, + { "SquareIntersection" , { 0x2293 }}, + { "SquareSubset" , { 0x228F }}, + { "SquareSubsetEqual" , { 0x2291 }}, + { "SquareSuperset" , { 0x2290 }}, + { "SquareSupersetEqual" , { 0x2292 }}, + { "SquareUnion" , { 0x2294 }}, + { "Sscr" , { 0x01D4AE }}, + { "Star" , { 0x22C6 }}, + { "Sub" , { 0x22D0 }}, + { "Subset" , { 0x22D0 }}, + { "SubsetEqual" , { 0x2286 }}, + { "Succeeds" , { 0x227B }}, + { "SucceedsEqual" , { 0x2AB0 }}, + { "SucceedsSlantEqual" , { 0x227D }}, + { "SucceedsTilde" , { 0x227F }}, + { "SuchThat" , { 0x220B }}, + { "Sum" , { 0x2211 }}, + { "Sup" , { 0x22D1 }}, + { "Superset" , { 0x2283 }}, + { "SupersetEqual" , { 0x2287 }}, + { "Supset" , { 0x22D1 }}, + { "THORN" , { 0xDE }}, + { "TRADE" , { 0x2122 }}, + { "TSHcy" , { 0x040B }}, + { "TScy" , { 0x0426 }}, + { "Tab" , { 0x09 }}, + { "Tau" , { 0x03A4 }}, + { "Tcaron" , { 0x0164 }}, + { "Tcedil" , { 0x0162 }}, + { "Tcy" , { 0x0422 }}, + { "Tfr" , { 0x01D517 }}, + { "Therefore" , { 0x2234 }}, + { "Theta" , { 0x0398 }}, + { "ThickSpace" , { 0x205F, 0x200A }}, + { "ThinSpace" , { 0x2009 }}, + { "Tilde" , { 0x223C }}, + { "TildeEqual" , { 0x2243 }}, + { "TildeFullEqual" , { 0x2245 }}, + { "TildeTilde" , { 0x2248 }}, + { "Topf" , { 0x01D54B }}, + { "TripleDot" , { 0x20DB }}, + { "Tscr" , { 0x01D4AF }}, + { "Tstrok" , { 0x0166 }}, + { "Uacute" , { 0xDA }}, + { "Uarr" , { 0x219F }}, + { "Uarrocir" , { 0x2949 }}, + { "Ubrcy" , { 0x040E }}, + { "Ubreve" , { 0x016C }}, + { "Ucirc" , { 0xDB }}, + { "Ucy" , { 0x0423 }}, + { "Udblac" , { 0x0170 }}, + { "Ufr" , { 0x01D518 }}, + { "Ugrave" , { 0xD9 }}, + { "Umacr" , { 0x016A }}, + { "UnderBar" , { 0x5F }}, + { "UnderBrace" , { 0x23DF }}, + { "UnderBracket" , { 0x23B5 }}, + { "UnderParenthesis" , { 0x23DD }}, + { "Union" , { 0x22C3 }}, + { "UnionPlus" , { 0x228E }}, + { "Uogon" , { 0x0172 }}, + { "Uopf" , { 0x01D54C }}, + { "UpArrow" , { 0x2191 }}, + { "UpArrowBar" , { 0x2912 }}, + { "UpArrowDownArrow" , { 0x21C5 }}, + { "UpDownArrow" , { 0x2195 }}, + { "UpEquilibrium" , { 0x296E }}, + { "UpTee" , { 0x22A5 }}, + { "UpTeeArrow" , { 0x21A5 }}, + { "Uparrow" , { 0x21D1 }}, + { "Updownarrow" , { 0x21D5 }}, + { "UpperLeftArrow" , { 0x2196 }}, + { "UpperRightArrow" , { 0x2197 }}, + { "Upsi" , { 0x03D2 }}, + { "Upsilon" , { 0x03A5 }}, + { "Uring" , { 0x016E }}, + { "Uscr" , { 0x01D4B0 }}, + { "Utilde" , { 0x0168 }}, + { "Uuml" , { 0xDC }}, + { "VDash" , { 0x22AB }}, + { "Vbar" , { 0x2AEB }}, + { "Vcy" , { 0x0412 }}, + { "Vdash" , { 0x22A9 }}, + { "Vdashl" , { 0x2AE6 }}, + { "Vee" , { 0x22C1 }}, + { "Verbar" , { 0x2016 }}, + { "Vert" , { 0x2016 }}, + { "VerticalBar" , { 0x2223 }}, + { "VerticalLine" , { 0x7C }}, + { "VerticalSeparator" , { 0x2758 }}, + { "VerticalTilde" , { 0x2240 }}, + { "VeryThinSpace" , { 0x200A }}, + { "Vfr" , { 0x01D519 }}, + { "Vopf" , { 0x01D54D }}, + { "Vscr" , { 0x01D4B1 }}, + { "Vvdash" , { 0x22AA }}, + { "Wcirc" , { 0x0174 }}, + { "Wedge" , { 0x22C0 }}, + { "Wfr" , { 0x01D51A }}, + { "Wopf" , { 0x01D54E }}, + { "Wscr" , { 0x01D4B2 }}, + { "Xfr" , { 0x01D51B }}, + { "Xi" , { 0x039E }}, + { "Xopf" , { 0x01D54F }}, + { "Xscr" , { 0x01D4B3 }}, + { "YAcy" , { 0x042F }}, + { "YIcy" , { 0x0407 }}, + { "YUcy" , { 0x042E }}, + { "Yacute" , { 0xDD }}, + { "Ycirc" , { 0x0176 }}, + { "Ycy" , { 0x042B }}, + { "Yfr" , { 0x01D51C }}, + { "Yopf" , { 0x01D550 }}, + { "Yscr" , { 0x01D4B4 }}, + { "Yuml" , { 0x0178 }}, + { "ZHcy" , { 0x0416 }}, + { "Zacute" , { 0x0179 }}, + { "Zcaron" , { 0x017D }}, + { "Zcy" , { 0x0417 }}, + { "Zdot" , { 0x017B }}, + { "ZeroWidthSpace" , { 0x200B }}, + { "Zeta" , { 0x0396 }}, + { "Zfr" , { 0x2128 }}, + { "Zopf" , { 0x2124 }}, + { "Zscr" , { 0x01D4B5 }}, + { "aacute" , { 0xE1 }}, + { "abreve" , { 0x0103 }}, + { "ac" , { 0x223E }}, + { "acE" , { 0x223E, 0x0333 }}, + { "acd" , { 0x223F }}, + { "acirc" , { 0xE2 }}, + { "acute" , { 0xB4 }}, + { "acy" , { 0x0430 }}, + { "aelig" , { 0xE6 }}, + { "af" , { 0x2061 }}, + { "afr" , { 0x01D51E }}, + { "agrave" , { 0xE0 }}, + { "alefsym" , { 0x2135 }}, + { "aleph" , { 0x2135 }}, + { "alpha" , { 0x03B1 }}, + { "amacr" , { 0x0101 }}, + { "amalg" , { 0x2A3F }}, + { "amp" , { 0x26 }}, + { "and" , { 0x2227 }}, + { "andand" , { 0x2A55 }}, + { "andd" , { 0x2A5C }}, + { "andslope" , { 0x2A58 }}, + { "andv" , { 0x2A5A }}, + { "ang" , { 0x2220 }}, + { "ange" , { 0x29A4 }}, + { "angle" , { 0x2220 }}, + { "angmsd" , { 0x2221 }}, + { "angmsdaa" , { 0x29A8 }}, + { "angmsdab" , { 0x29A9 }}, + { "angmsdac" , { 0x29AA }}, + { "angmsdad" , { 0x29AB }}, + { "angmsdae" , { 0x29AC }}, + { "angmsdaf" , { 0x29AD }}, + { "angmsdag" , { 0x29AE }}, + { "angmsdah" , { 0x29AF }}, + { "angrt" , { 0x221F }}, + { "angrtvb" , { 0x22BE }}, + { "angrtvbd" , { 0x299D }}, + { "angsph" , { 0x2222 }}, + { "angst" , { 0xC5 }}, + { "angzarr" , { 0x237C }}, + { "aogon" , { 0x0105 }}, + { "aopf" , { 0x01D552 }}, + { "ap" , { 0x2248 }}, + { "apE" , { 0x2A70 }}, + { "apacir" , { 0x2A6F }}, + { "ape" , { 0x224A }}, + { "apid" , { 0x224B }}, + { "apos" , { 0x27 }}, + { "approx" , { 0x2248 }}, + { "approxeq" , { 0x224A }}, + { "aring" , { 0xE5 }}, + { "ascr" , { 0x01D4B6 }}, + { "ast" , { 0x2A }}, + { "asymp" , { 0x2248 }}, + { "asympeq" , { 0x224D }}, + { "atilde" , { 0xE3 }}, + { "auml" , { 0xE4 }}, + { "awconint" , { 0x2233 }}, + { "awint" , { 0x2A11 }}, + { "bNot" , { 0x2AED }}, + { "backcong" , { 0x224C }}, + { "backepsilon" , { 0x03F6 }}, + { "backprime" , { 0x2035 }}, + { "backsim" , { 0x223D }}, + { "backsimeq" , { 0x22CD }}, + { "barvee" , { 0x22BD }}, + { "barwed" , { 0x2305 }}, + { "barwedge" , { 0x2305 }}, + { "bbrk" , { 0x23B5 }}, + { "bbrktbrk" , { 0x23B6 }}, + { "bcong" , { 0x224C }}, + { "bcy" , { 0x0431 }}, + { "bdquo" , { 0x201E }}, + { "becaus" , { 0x2235 }}, + { "because" , { 0x2235 }}, + { "bemptyv" , { 0x29B0 }}, + { "bepsi" , { 0x03F6 }}, + { "bernou" , { 0x212C }}, + { "beta" , { 0x03B2 }}, + { "beth" , { 0x2136 }}, + { "between" , { 0x226C }}, + { "bfr" , { 0x01D51F }}, + { "bigcap" , { 0x22C2 }}, + { "bigcirc" , { 0x25EF }}, + { "bigcup" , { 0x22C3 }}, + { "bigodot" , { 0x2A00 }}, + { "bigoplus" , { 0x2A01 }}, + { "bigotimes" , { 0x2A02 }}, + { "bigsqcup" , { 0x2A06 }}, + { "bigstar" , { 0x2605 }}, + { "bigtriangledown" , { 0x25BD }}, + { "bigtriangleup" , { 0x25B3 }}, + { "biguplus" , { 0x2A04 }}, + { "bigvee" , { 0x22C1 }}, + { "bigwedge" , { 0x22C0 }}, + { "bkarow" , { 0x290D }}, + { "blacklozenge" , { 0x29EB }}, + { "blacksquare" , { 0x25AA }}, + { "blacktriangle" , { 0x25B4 }}, + { "blacktriangledown" , { 0x25BE }}, + { "blacktriangleleft" , { 0x25C2 }}, + { "blacktriangleright" , { 0x25B8 }}, + { "blank" , { 0x2423 }}, + { "blk12" , { 0x2592 }}, + { "blk14" , { 0x2591 }}, + { "blk34" , { 0x2593 }}, + { "block" , { 0x2588 }}, + { "bne" , { 0x3D, 0x20E5 }}, + { "bnequiv" , { 0x2261, 0x20E5 }}, + { "bnot" , { 0x2310 }}, + { "bopf" , { 0x01D553 }}, + { "bot" , { 0x22A5 }}, + { "bottom" , { 0x22A5 }}, + { "bowtie" , { 0x22C8 }}, + { "boxDL" , { 0x2557 }}, + { "boxDR" , { 0x2554 }}, + { "boxDl" , { 0x2556 }}, + { "boxDr" , { 0x2553 }}, + { "boxH" , { 0x2550 }}, + { "boxHD" , { 0x2566 }}, + { "boxHU" , { 0x2569 }}, + { "boxHd" , { 0x2564 }}, + { "boxHu" , { 0x2567 }}, + { "boxUL" , { 0x255D }}, + { "boxUR" , { 0x255A }}, + { "boxUl" , { 0x255C }}, + { "boxUr" , { 0x2559 }}, + { "boxV" , { 0x2551 }}, + { "boxVH" , { 0x256C }}, + { "boxVL" , { 0x2563 }}, + { "boxVR" , { 0x2560 }}, + { "boxVh" , { 0x256B }}, + { "boxVl" , { 0x2562 }}, + { "boxVr" , { 0x255F }}, + { "boxbox" , { 0x29C9 }}, + { "boxdL" , { 0x2555 }}, + { "boxdR" , { 0x2552 }}, + { "boxdl" , { 0x2510 }}, + { "boxdr" , { 0x250C }}, + { "boxh" , { 0x2500 }}, + { "boxhD" , { 0x2565 }}, + { "boxhU" , { 0x2568 }}, + { "boxhd" , { 0x252C }}, + { "boxhu" , { 0x2534 }}, + { "boxminus" , { 0x229F }}, + { "boxplus" , { 0x229E }}, + { "boxtimes" , { 0x22A0 }}, + { "boxuL" , { 0x255B }}, + { "boxuR" , { 0x2558 }}, + { "boxul" , { 0x2518 }}, + { "boxur" , { 0x2514 }}, + { "boxv" , { 0x2502 }}, + { "boxvH" , { 0x256A }}, + { "boxvL" , { 0x2561 }}, + { "boxvR" , { 0x255E }}, + { "boxvh" , { 0x253C }}, + { "boxvl" , { 0x2524 }}, + { "boxvr" , { 0x251C }}, + { "bprime" , { 0x2035 }}, + { "breve" , { 0x02D8 }}, + { "brvbar" , { 0xA6 }}, + { "bscr" , { 0x01D4B7 }}, + { "bsemi" , { 0x204F }}, + { "bsim" , { 0x223D }}, + { "bsime" , { 0x22CD }}, + { "bsol" , { 0x5C }}, + { "bsolb" , { 0x29C5 }}, + { "bsolhsub" , { 0x27C8 }}, + { "bull" , { 0x2022 }}, + { "bullet" , { 0x2022 }}, + { "bump" , { 0x224E }}, + { "bumpE" , { 0x2AAE }}, + { "bumpe" , { 0x224F }}, + { "bumpeq" , { 0x224F }}, + { "cacute" , { 0x0107 }}, + { "cap" , { 0x2229 }}, + { "capand" , { 0x2A44 }}, + { "capbrcup" , { 0x2A49 }}, + { "capcap" , { 0x2A4B }}, + { "capcup" , { 0x2A47 }}, + { "capdot" , { 0x2A40 }}, + { "caps" , { 0x2229, 0xFE00 }}, + { "caret" , { 0x2041 }}, + { "caron" , { 0x02C7 }}, + { "ccaps" , { 0x2A4D }}, + { "ccaron" , { 0x010D }}, + { "ccedil" , { 0xE7 }}, + { "ccirc" , { 0x0109 }}, + { "ccups" , { 0x2A4C }}, + { "ccupssm" , { 0x2A50 }}, + { "cdot" , { 0x010B }}, + { "cedil" , { 0xB8 }}, + { "cemptyv" , { 0x29B2 }}, + { "cent" , { 0xA2 }}, + { "centerdot" , { 0xB7 }}, + { "cfr" , { 0x01D520 }}, + { "chcy" , { 0x0447 }}, + { "check" , { 0x2713 }}, + { "checkmark" , { 0x2713 }}, + { "chi" , { 0x03C7 }}, + { "cir" , { 0x25CB }}, + { "cirE" , { 0x29C3 }}, + { "circ" , { 0x02C6 }}, + { "circeq" , { 0x2257 }}, + { "circlearrowleft" , { 0x21BA }}, + { "circlearrowright" , { 0x21BB }}, + { "circledR" , { 0xAE }}, + { "circledS" , { 0x24C8 }}, + { "circledast" , { 0x229B }}, + { "circledcirc" , { 0x229A }}, + { "circleddash" , { 0x229D }}, + { "cire" , { 0x2257 }}, + { "cirfnint" , { 0x2A10 }}, + { "cirmid" , { 0x2AEF }}, + { "cirscir" , { 0x29C2 }}, + { "clubs" , { 0x2663 }}, + { "clubsuit" , { 0x2663 }}, + { "colon" , { 0x3A }}, + { "colone" , { 0x2254 }}, + { "coloneq" , { 0x2254 }}, + { "comma" , { 0x2C }}, + { "commat" , { 0x40 }}, + { "comp" , { 0x2201 }}, + { "compfn" , { 0x2218 }}, + { "complement" , { 0x2201 }}, + { "complexes" , { 0x2102 }}, + { "cong" , { 0x2245 }}, + { "congdot" , { 0x2A6D }}, + { "conint" , { 0x222E }}, + { "copf" , { 0x01D554 }}, + { "coprod" , { 0x2210 }}, + { "copy" , { 0xA9 }}, + { "copysr" , { 0x2117 }}, + { "crarr" , { 0x21B5 }}, + { "cross" , { 0x2717 }}, + { "cscr" , { 0x01D4B8 }}, + { "csub" , { 0x2ACF }}, + { "csube" , { 0x2AD1 }}, + { "csup" , { 0x2AD0 }}, + { "csupe" , { 0x2AD2 }}, + { "ctdot" , { 0x22EF }}, + { "cudarrl" , { 0x2938 }}, + { "cudarrr" , { 0x2935 }}, + { "cuepr" , { 0x22DE }}, + { "cuesc" , { 0x22DF }}, + { "cularr" , { 0x21B6 }}, + { "cularrp" , { 0x293D }}, + { "cup" , { 0x222A }}, + { "cupbrcap" , { 0x2A48 }}, + { "cupcap" , { 0x2A46 }}, + { "cupcup" , { 0x2A4A }}, + { "cupdot" , { 0x228D }}, + { "cupor" , { 0x2A45 }}, + { "cups" , { 0x222A, 0xFE00 }}, + { "curarr" , { 0x21B7 }}, + { "curarrm" , { 0x293C }}, + { "curlyeqprec" , { 0x22DE }}, + { "curlyeqsucc" , { 0x22DF }}, + { "curlyvee" , { 0x22CE }}, + { "curlywedge" , { 0x22CF }}, + { "curren" , { 0xA4 }}, + { "curvearrowleft" , { 0x21B6 }}, + { "curvearrowright" , { 0x21B7 }}, + { "cuvee" , { 0x22CE }}, + { "cuwed" , { 0x22CF }}, + { "cwconint" , { 0x2232 }}, + { "cwint" , { 0x2231 }}, + { "cylcty" , { 0x232D }}, + { "dArr" , { 0x21D3 }}, + { "dHar" , { 0x2965 }}, + { "dagger" , { 0x2020 }}, + { "daleth" , { 0x2138 }}, + { "darr" , { 0x2193 }}, + { "dash" , { 0x2010 }}, + { "dashv" , { 0x22A3 }}, + { "dbkarow" , { 0x290F }}, + { "dblac" , { 0x02DD }}, + { "dcaron" , { 0x010F }}, + { "dcy" , { 0x0434 }}, + { "dd" , { 0x2146 }}, + { "ddagger" , { 0x2021 }}, + { "ddarr" , { 0x21CA }}, + { "ddotseq" , { 0x2A77 }}, + { "deg" , { 0xB0 }}, + { "delta" , { 0x03B4 }}, + { "demptyv" , { 0x29B1 }}, + { "dfisht" , { 0x297F }}, + { "dfr" , { 0x01D521 }}, + { "dharl" , { 0x21C3 }}, + { "dharr" , { 0x21C2 }}, + { "diam" , { 0x22C4 }}, + { "diamond" , { 0x22C4 }}, + { "diamondsuit" , { 0x2666 }}, + { "diams" , { 0x2666 }}, + { "die" , { 0xA8 }}, + { "digamma" , { 0x03DD }}, + { "disin" , { 0x22F2 }}, + { "div" , { 0xF7 }}, + { "divide" , { 0xF7 }}, + { "divideontimes" , { 0x22C7 }}, + { "divonx" , { 0x22C7 }}, + { "djcy" , { 0x0452 }}, + { "dlcorn" , { 0x231E }}, + { "dlcrop" , { 0x230D }}, + { "dollar" , { 0x24 }}, + { "dopf" , { 0x01D555 }}, + { "dot" , { 0x02D9 }}, + { "doteq" , { 0x2250 }}, + { "doteqdot" , { 0x2251 }}, + { "dotminus" , { 0x2238 }}, + { "dotplus" , { 0x2214 }}, + { "dotsquare" , { 0x22A1 }}, + { "doublebarwedge" , { 0x2306 }}, + { "downarrow" , { 0x2193 }}, + { "downdownarrows" , { 0x21CA }}, + { "downharpoonleft" , { 0x21C3 }}, + { "downharpoonright" , { 0x21C2 }}, + { "drbkarow" , { 0x2910 }}, + { "drcorn" , { 0x231F }}, + { "drcrop" , { 0x230C }}, + { "dscr" , { 0x01D4B9 }}, + { "dscy" , { 0x0455 }}, + { "dsol" , { 0x29F6 }}, + { "dstrok" , { 0x0111 }}, + { "dtdot" , { 0x22F1 }}, + { "dtri" , { 0x25BF }}, + { "dtrif" , { 0x25BE }}, + { "duarr" , { 0x21F5 }}, + { "duhar" , { 0x296F }}, + { "dwangle" , { 0x29A6 }}, + { "dzcy" , { 0x045F }}, + { "dzigrarr" , { 0x27FF }}, + { "eDDot" , { 0x2A77 }}, + { "eDot" , { 0x2251 }}, + { "eacute" , { 0xE9 }}, + { "easter" , { 0x2A6E }}, + { "ecaron" , { 0x011B }}, + { "ecir" , { 0x2256 }}, + { "ecirc" , { 0xEA }}, + { "ecolon" , { 0x2255 }}, + { "ecy" , { 0x044D }}, + { "edot" , { 0x0117 }}, + { "ee" , { 0x2147 }}, + { "efDot" , { 0x2252 }}, + { "efr" , { 0x01D522 }}, + { "eg" , { 0x2A9A }}, + { "egrave" , { 0xE8 }}, + { "egs" , { 0x2A96 }}, + { "egsdot" , { 0x2A98 }}, + { "el" , { 0x2A99 }}, + { "elinters" , { 0x23E7 }}, + { "ell" , { 0x2113 }}, + { "els" , { 0x2A95 }}, + { "elsdot" , { 0x2A97 }}, + { "emacr" , { 0x0113 }}, + { "empty" , { 0x2205 }}, + { "emptyset" , { 0x2205 }}, + { "emptyv" , { 0x2205 }}, + { "emsp13" , { 0x2004 }}, + { "emsp14" , { 0x2005 }}, + { "emsp" , { 0x2003 }}, + { "eng" , { 0x014B }}, + { "ensp" , { 0x2002 }}, + { "eogon" , { 0x0119 }}, + { "eopf" , { 0x01D556 }}, + { "epar" , { 0x22D5 }}, + { "eparsl" , { 0x29E3 }}, + { "eplus" , { 0x2A71 }}, + { "epsi" , { 0x03B5 }}, + { "epsilon" , { 0x03B5 }}, + { "epsiv" , { 0x03F5 }}, + { "eqcirc" , { 0x2256 }}, + { "eqcolon" , { 0x2255 }}, + { "eqsim" , { 0x2242 }}, + { "eqslantgtr" , { 0x2A96 }}, + { "eqslantless" , { 0x2A95 }}, + { "equals" , { 0x3D }}, + { "equest" , { 0x225F }}, + { "equiv" , { 0x2261 }}, + { "equivDD" , { 0x2A78 }}, + { "eqvparsl" , { 0x29E5 }}, + { "erDot" , { 0x2253 }}, + { "erarr" , { 0x2971 }}, + { "escr" , { 0x212F }}, + { "esdot" , { 0x2250 }}, + { "esim" , { 0x2242 }}, + { "eta" , { 0x03B7 }}, + { "eth" , { 0xF0 }}, + { "euml" , { 0xEB }}, + { "euro" , { 0x20AC }}, + { "excl" , { 0x21 }}, + { "exist" , { 0x2203 }}, + { "expectation" , { 0x2130 }}, + { "exponentiale" , { 0x2147 }}, + { "fallingdotseq" , { 0x2252 }}, + { "fcy" , { 0x0444 }}, + { "female" , { 0x2640 }}, + { "ffilig" , { 0xFB03 }}, + { "fflig" , { 0xFB00 }}, + { "ffllig" , { 0xFB04 }}, + { "ffr" , { 0x01D523 }}, + { "filig" , { 0xFB01 }}, + { "fjlig" , { 0x66, 0x6A }}, + { "flat" , { 0x266D }}, + { "fllig" , { 0xFB02 }}, + { "fltns" , { 0x25B1 }}, + { "fnof" , { 0x0192 }}, + { "fopf" , { 0x01D557 }}, + { "forall" , { 0x2200 }}, + { "fork" , { 0x22D4 }}, + { "forkv" , { 0x2AD9 }}, + { "fpartint" , { 0x2A0D }}, + { "frac12" , { 0xBD }}, + { "frac13" , { 0x2153 }}, + { "frac14" , { 0xBC }}, + { "frac15" , { 0x2155 }}, + { "frac16" , { 0x2159 }}, + { "frac18" , { 0x215B }}, + { "frac23" , { 0x2154 }}, + { "frac25" , { 0x2156 }}, + { "frac34" , { 0xBE }}, + { "frac35" , { 0x2157 }}, + { "frac38" , { 0x215C }}, + { "frac45" , { 0x2158 }}, + { "frac56" , { 0x215A }}, + { "frac58" , { 0x215D }}, + { "frac78" , { 0x215E }}, + { "frasl" , { 0x2044 }}, + { "frown" , { 0x2322 }}, + { "fscr" , { 0x01D4BB }}, + { "gE" , { 0x2267 }}, + { "gEl" , { 0x2A8C }}, + { "gacute" , { 0x01F5 }}, + { "gamma" , { 0x03B3 }}, + { "gammad" , { 0x03DD }}, + { "gap" , { 0x2A86 }}, + { "gbreve" , { 0x011F }}, + { "gcirc" , { 0x011D }}, + { "gcy" , { 0x0433 }}, + { "gdot" , { 0x0121 }}, + { "ge" , { 0x2265 }}, + { "gel" , { 0x22DB }}, + { "geq" , { 0x2265 }}, + { "geqq" , { 0x2267 }}, + { "geqslant" , { 0x2A7E }}, + { "ges" , { 0x2A7E }}, + { "gescc" , { 0x2AA9 }}, + { "gesdot" , { 0x2A80 }}, + { "gesdoto" , { 0x2A82 }}, + { "gesdotol" , { 0x2A84 }}, + { "gesl" , { 0x22DB, 0xFE00 }}, + { "gesles" , { 0x2A94 }}, + { "gfr" , { 0x01D524 }}, + { "gg" , { 0x226B }}, + { "ggg" , { 0x22D9 }}, + { "gimel" , { 0x2137 }}, + { "gjcy" , { 0x0453 }}, + { "gl" , { 0x2277 }}, + { "glE" , { 0x2A92 }}, + { "gla" , { 0x2AA5 }}, + { "glj" , { 0x2AA4 }}, + { "gnE" , { 0x2269 }}, + { "gnap" , { 0x2A8A }}, + { "gnapprox" , { 0x2A8A }}, + { "gne" , { 0x2A88 }}, + { "gneq" , { 0x2A88 }}, + { "gneqq" , { 0x2269 }}, + { "gnsim" , { 0x22E7 }}, + { "gopf" , { 0x01D558 }}, + { "grave" , { 0x60 }}, + { "gscr" , { 0x210A }}, + { "gsim" , { 0x2273 }}, + { "gsime" , { 0x2A8E }}, + { "gsiml" , { 0x2A90 }}, + { "gt" , { 0x3E }}, + { "gtcc" , { 0x2AA7 }}, + { "gtcir" , { 0x2A7A }}, + { "gtdot" , { 0x22D7 }}, + { "gtlPar" , { 0x2995 }}, + { "gtquest" , { 0x2A7C }}, + { "gtrapprox" , { 0x2A86 }}, + { "gtrarr" , { 0x2978 }}, + { "gtrdot" , { 0x22D7 }}, + { "gtreqless" , { 0x22DB }}, + { "gtreqqless" , { 0x2A8C }}, + { "gtrless" , { 0x2277 }}, + { "gtrsim" , { 0x2273 }}, + { "gvertneqq" , { 0x2269, 0xFE00 }}, + { "gvnE" , { 0x2269, 0xFE00 }}, + { "hArr" , { 0x21D4 }}, + { "hairsp" , { 0x200A }}, + { "half" , { 0xBD }}, + { "hamilt" , { 0x210B }}, + { "hardcy" , { 0x044A }}, + { "harr" , { 0x2194 }}, + { "harrcir" , { 0x2948 }}, + { "harrw" , { 0x21AD }}, + { "hbar" , { 0x210F }}, + { "hcirc" , { 0x0125 }}, + { "hearts" , { 0x2665 }}, + { "heartsuit" , { 0x2665 }}, + { "hellip" , { 0x2026 }}, + { "hercon" , { 0x22B9 }}, + { "hfr" , { 0x01D525 }}, + { "hksearow" , { 0x2925 }}, + { "hkswarow" , { 0x2926 }}, + { "hoarr" , { 0x21FF }}, + { "homtht" , { 0x223B }}, + { "hookleftarrow" , { 0x21A9 }}, + { "hookrightarrow" , { 0x21AA }}, + { "hopf" , { 0x01D559 }}, + { "horbar" , { 0x2015 }}, + { "hscr" , { 0x01D4BD }}, + { "hslash" , { 0x210F }}, + { "hstrok" , { 0x0127 }}, + { "hybull" , { 0x2043 }}, + { "hyphen" , { 0x2010 }}, + { "iacute" , { 0xED }}, + { "ic" , { 0x2063 }}, + { "icirc" , { 0xEE }}, + { "icy" , { 0x0438 }}, + { "iecy" , { 0x0435 }}, + { "iexcl" , { 0xA1 }}, + { "iff" , { 0x21D4 }}, + { "ifr" , { 0x01D526 }}, + { "igrave" , { 0xEC }}, + { "ii" , { 0x2148 }}, + { "iiiint" , { 0x2A0C }}, + { "iiint" , { 0x222D }}, + { "iinfin" , { 0x29DC }}, + { "iiota" , { 0x2129 }}, + { "ijlig" , { 0x0133 }}, + { "imacr" , { 0x012B }}, + { "image" , { 0x2111 }}, + { "imagline" , { 0x2110 }}, + { "imagpart" , { 0x2111 }}, + { "imath" , { 0x0131 }}, + { "imof" , { 0x22B7 }}, + { "imped" , { 0x01B5 }}, + { "in" , { 0x2208 }}, + { "incare" , { 0x2105 }}, + { "infin" , { 0x221E }}, + { "infintie" , { 0x29DD }}, + { "inodot" , { 0x0131 }}, + { "int" , { 0x222B }}, + { "intcal" , { 0x22BA }}, + { "integers" , { 0x2124 }}, + { "intercal" , { 0x22BA }}, + { "intlarhk" , { 0x2A17 }}, + { "intprod" , { 0x2A3C }}, + { "iocy" , { 0x0451 }}, + { "iogon" , { 0x012F }}, + { "iopf" , { 0x01D55A }}, + { "iota" , { 0x03B9 }}, + { "iprod" , { 0x2A3C }}, + { "iquest" , { 0xBF }}, + { "iscr" , { 0x01D4BE }}, + { "isin" , { 0x2208 }}, + { "isinE" , { 0x22F9 }}, + { "isindot" , { 0x22F5 }}, + { "isins" , { 0x22F4 }}, + { "isinsv" , { 0x22F3 }}, + { "isinv" , { 0x2208 }}, + { "it" , { 0x2062 }}, + { "itilde" , { 0x0129 }}, + { "iukcy" , { 0x0456 }}, + { "iuml" , { 0xEF }}, + { "jcirc" , { 0x0135 }}, + { "jcy" , { 0x0439 }}, + { "jfr" , { 0x01D527 }}, + { "jmath" , { 0x0237 }}, + { "jopf" , { 0x01D55B }}, + { "jscr" , { 0x01D4BF }}, + { "jsercy" , { 0x0458 }}, + { "jukcy" , { 0x0454 }}, + { "kappa" , { 0x03BA }}, + { "kappav" , { 0x03F0 }}, + { "kcedil" , { 0x0137 }}, + { "kcy" , { 0x043A }}, + { "kfr" , { 0x01D528 }}, + { "kgreen" , { 0x0138 }}, + { "khcy" , { 0x0445 }}, + { "kjcy" , { 0x045C }}, + { "kopf" , { 0x01D55C }}, + { "kscr" , { 0x01D4C0 }}, + { "lAarr" , { 0x21DA }}, + { "lArr" , { 0x21D0 }}, + { "lAtail" , { 0x291B }}, + { "lBarr" , { 0x290E }}, + { "lE" , { 0x2266 }}, + { "lEg" , { 0x2A8B }}, + { "lHar" , { 0x2962 }}, + { "lacute" , { 0x013A }}, + { "laemptyv" , { 0x29B4 }}, + { "lagran" , { 0x2112 }}, + { "lambda" , { 0x03BB }}, + { "lang" , { 0x27E8 }}, + { "langd" , { 0x2991 }}, + { "langle" , { 0x27E8 }}, + { "lap" , { 0x2A85 }}, + { "laquo" , { 0xAB }}, + { "larr" , { 0x2190 }}, + { "larrb" , { 0x21E4 }}, + { "larrbfs" , { 0x291F }}, + { "larrfs" , { 0x291D }}, + { "larrhk" , { 0x21A9 }}, + { "larrlp" , { 0x21AB }}, + { "larrpl" , { 0x2939 }}, + { "larrsim" , { 0x2973 }}, + { "larrtl" , { 0x21A2 }}, + { "lat" , { 0x2AAB }}, + { "latail" , { 0x2919 }}, + { "late" , { 0x2AAD }}, + { "lates" , { 0x2AAD, 0xFE00 }}, + { "lbarr" , { 0x290C }}, + { "lbbrk" , { 0x2772 }}, + { "lbrace" , { 0x7B }}, + { "lbrack" , { 0x5B }}, + { "lbrke" , { 0x298B }}, + { "lbrksld" , { 0x298F }}, + { "lbrkslu" , { 0x298D }}, + { "lcaron" , { 0x013E }}, + { "lcedil" , { 0x013C }}, + { "lceil" , { 0x2308 }}, + { "lcub" , { 0x7B }}, + { "lcy" , { 0x043B }}, + { "ldca" , { 0x2936 }}, + { "ldquo" , { 0x201C }}, + { "ldquor" , { 0x201E }}, + { "ldrdhar" , { 0x2967 }}, + { "ldrushar" , { 0x294B }}, + { "ldsh" , { 0x21B2 }}, + { "le" , { 0x2264 }}, + { "leftarrow" , { 0x2190 }}, + { "leftarrowtail" , { 0x21A2 }}, + { "leftharpoondown" , { 0x21BD }}, + { "leftharpoonup" , { 0x21BC }}, + { "leftleftarrows" , { 0x21C7 }}, + { "leftrightarrow" , { 0x2194 }}, + { "leftrightarrows" , { 0x21C6 }}, + { "leftrightharpoons" , { 0x21CB }}, + { "leftrightsquigarrow" , { 0x21AD }}, + { "leftthreetimes" , { 0x22CB }}, + { "leg" , { 0x22DA }}, + { "leq" , { 0x2264 }}, + { "leqq" , { 0x2266 }}, + { "leqslant" , { 0x2A7D }}, + { "les" , { 0x2A7D }}, + { "lescc" , { 0x2AA8 }}, + { "lesdot" , { 0x2A7F }}, + { "lesdoto" , { 0x2A81 }}, + { "lesdotor" , { 0x2A83 }}, + { "lesg" , { 0x22DA, 0xFE00 }}, + { "lesges" , { 0x2A93 }}, + { "lessapprox" , { 0x2A85 }}, + { "lessdot" , { 0x22D6 }}, + { "lesseqgtr" , { 0x22DA }}, + { "lesseqqgtr" , { 0x2A8B }}, + { "lessgtr" , { 0x2276 }}, + { "lesssim" , { 0x2272 }}, + { "lfisht" , { 0x297C }}, + { "lfloor" , { 0x230A }}, + { "lfr" , { 0x01D529 }}, + { "lg" , { 0x2276 }}, + { "lgE" , { 0x2A91 }}, + { "lhard" , { 0x21BD }}, + { "lharu" , { 0x21BC }}, + { "lharul" , { 0x296A }}, + { "lhblk" , { 0x2584 }}, + { "ljcy" , { 0x0459 }}, + { "ll" , { 0x226A }}, + { "llarr" , { 0x21C7 }}, + { "llcorner" , { 0x231E }}, + { "llhard" , { 0x296B }}, + { "lltri" , { 0x25FA }}, + { "lmidot" , { 0x0140 }}, + { "lmoust" , { 0x23B0 }}, + { "lmoustache" , { 0x23B0 }}, + { "lnE" , { 0x2268 }}, + { "lnap" , { 0x2A89 }}, + { "lnapprox" , { 0x2A89 }}, + { "lne" , { 0x2A87 }}, + { "lneq" , { 0x2A87 }}, + { "lneqq" , { 0x2268 }}, + { "lnsim" , { 0x22E6 }}, + { "loang" , { 0x27EC }}, + { "loarr" , { 0x21FD }}, + { "lobrk" , { 0x27E6 }}, + { "longleftarrow" , { 0x27F5 }}, + { "longleftrightarrow" , { 0x27F7 }}, + { "longmapsto" , { 0x27FC }}, + { "longrightarrow" , { 0x27F6 }}, + { "looparrowleft" , { 0x21AB }}, + { "looparrowright" , { 0x21AC }}, + { "lopar" , { 0x2985 }}, + { "lopf" , { 0x01D55D }}, + { "loplus" , { 0x2A2D }}, + { "lotimes" , { 0x2A34 }}, + { "lowast" , { 0x2217 }}, + { "lowbar" , { 0x5F }}, + { "loz" , { 0x25CA }}, + { "lozenge" , { 0x25CA }}, + { "lozf" , { 0x29EB }}, + { "lpar" , { 0x28 }}, + { "lparlt" , { 0x2993 }}, + { "lrarr" , { 0x21C6 }}, + { "lrcorner" , { 0x231F }}, + { "lrhar" , { 0x21CB }}, + { "lrhard" , { 0x296D }}, + { "lrm" , { 0x200E }}, + { "lrtri" , { 0x22BF }}, + { "lsaquo" , { 0x2039 }}, + { "lscr" , { 0x01D4C1 }}, + { "lsh" , { 0x21B0 }}, + { "lsim" , { 0x2272 }}, + { "lsime" , { 0x2A8D }}, + { "lsimg" , { 0x2A8F }}, + { "lsqb" , { 0x5B }}, + { "lsquo" , { 0x2018 }}, + { "lsquor" , { 0x201A }}, + { "lstrok" , { 0x0142 }}, + { "lt" , { 0x3C }}, + { "ltcc" , { 0x2AA6 }}, + { "ltcir" , { 0x2A79 }}, + { "ltdot" , { 0x22D6 }}, + { "lthree" , { 0x22CB }}, + { "ltimes" , { 0x22C9 }}, + { "ltlarr" , { 0x2976 }}, + { "ltquest" , { 0x2A7B }}, + { "ltrPar" , { 0x2996 }}, + { "ltri" , { 0x25C3 }}, + { "ltrie" , { 0x22B4 }}, + { "ltrif" , { 0x25C2 }}, + { "lurdshar" , { 0x294A }}, + { "luruhar" , { 0x2966 }}, + { "lvertneqq" , { 0x2268, 0xFE00 }}, + { "lvnE" , { 0x2268, 0xFE00 }}, + { "mDDot" , { 0x223A }}, + { "macr" , { 0xAF }}, + { "male" , { 0x2642 }}, + { "malt" , { 0x2720 }}, + { "maltese" , { 0x2720 }}, + { "map" , { 0x21A6 }}, + { "mapsto" , { 0x21A6 }}, + { "mapstodown" , { 0x21A7 }}, + { "mapstoleft" , { 0x21A4 }}, + { "mapstoup" , { 0x21A5 }}, + { "marker" , { 0x25AE }}, + { "mcomma" , { 0x2A29 }}, + { "mcy" , { 0x043C }}, + { "mdash" , { 0x2014 }}, + { "measuredangle" , { 0x2221 }}, + { "mfr" , { 0x01D52A }}, + { "mho" , { 0x2127 }}, + { "micro" , { 0xB5 }}, + { "mid" , { 0x2223 }}, + { "midast" , { 0x2A }}, + { "midcir" , { 0x2AF0 }}, + { "middot" , { 0xB7 }}, + { "minus" , { 0x2212 }}, + { "minusb" , { 0x229F }}, + { "minusd" , { 0x2238 }}, + { "minusdu" , { 0x2A2A }}, + { "mlcp" , { 0x2ADB }}, + { "mldr" , { 0x2026 }}, + { "mnplus" , { 0x2213 }}, + { "models" , { 0x22A7 }}, + { "mopf" , { 0x01D55E }}, + { "mp" , { 0x2213 }}, + { "mscr" , { 0x01D4C2 }}, + { "mstpos" , { 0x223E }}, + { "mu" , { 0x03BC }}, + { "multimap" , { 0x22B8 }}, + { "mumap" , { 0x22B8 }}, + { "nGg" , { 0x22D9, 0x0338 }}, + { "nGt" , { 0x226B, 0x20D2 }}, + { "nGtv" , { 0x226B, 0x0338 }}, + { "nLeftarrow" , { 0x21CD }}, + { "nLeftrightarrow" , { 0x21CE }}, + { "nLl" , { 0x22D8, 0x0338 }}, + { "nLt" , { 0x226A, 0x20D2 }}, + { "nLtv" , { 0x226A, 0x0338 }}, + { "nRightarrow" , { 0x21CF }}, + { "nVDash" , { 0x22AF }}, + { "nVdash" , { 0x22AE }}, + { "nabla" , { 0x2207 }}, + { "nacute" , { 0x0144 }}, + { "nang" , { 0x2220, 0x20D2 }}, + { "nap" , { 0x2249 }}, + { "napE" , { 0x2A70, 0x0338 }}, + { "napid" , { 0x224B, 0x0338 }}, + { "napos" , { 0x0149 }}, + { "napprox" , { 0x2249 }}, + { "natur" , { 0x266E }}, + { "natural" , { 0x266E }}, + { "naturals" , { 0x2115 }}, + { "nbsp" , { 0xA0 }}, + { "nbump" , { 0x224E, 0x0338 }}, + { "nbumpe" , { 0x224F, 0x0338 }}, + { "ncap" , { 0x2A43 }}, + { "ncaron" , { 0x0148 }}, + { "ncedil" , { 0x0146 }}, + { "ncong" , { 0x2247 }}, + { "ncongdot" , { 0x2A6D, 0x0338 }}, + { "ncup" , { 0x2A42 }}, + { "ncy" , { 0x043D }}, + { "ndash" , { 0x2013 }}, + { "ne" , { 0x2260 }}, + { "neArr" , { 0x21D7 }}, + { "nearhk" , { 0x2924 }}, + { "nearr" , { 0x2197 }}, + { "nearrow" , { 0x2197 }}, + { "nedot" , { 0x2250, 0x0338 }}, + { "nequiv" , { 0x2262 }}, + { "nesear" , { 0x2928 }}, + { "nesim" , { 0x2242, 0x0338 }}, + { "nexist" , { 0x2204 }}, + { "nexists" , { 0x2204 }}, + { "nfr" , { 0x01D52B }}, + { "ngE" , { 0x2267, 0x0338 }}, + { "nge" , { 0x2271 }}, + { "ngeq" , { 0x2271 }}, + { "ngeqq" , { 0x2267, 0x0338 }}, + { "ngeqslant" , { 0x2A7E, 0x0338 }}, + { "nges" , { 0x2A7E, 0x0338 }}, + { "ngsim" , { 0x2275 }}, + { "ngt" , { 0x226F }}, + { "ngtr" , { 0x226F }}, + { "nhArr" , { 0x21CE }}, + { "nharr" , { 0x21AE }}, + { "nhpar" , { 0x2AF2 }}, + { "ni" , { 0x220B }}, + { "nis" , { 0x22FC }}, + { "nisd" , { 0x22FA }}, + { "niv" , { 0x220B }}, + { "njcy" , { 0x045A }}, + { "nlArr" , { 0x21CD }}, + { "nlE" , { 0x2266, 0x0338 }}, + { "nlarr" , { 0x219A }}, + { "nldr" , { 0x2025 }}, + { "nle" , { 0x2270 }}, + { "nleftarrow" , { 0x219A }}, + { "nleftrightarrow" , { 0x21AE }}, + { "nleq" , { 0x2270 }}, + { "nleqq" , { 0x2266, 0x0338 }}, + { "nleqslant" , { 0x2A7D, 0x0338 }}, + { "nles" , { 0x2A7D, 0x0338 }}, + { "nless" , { 0x226E }}, + { "nlsim" , { 0x2274 }}, + { "nlt" , { 0x226E }}, + { "nltri" , { 0x22EA }}, + { "nltrie" , { 0x22EC }}, + { "nmid" , { 0x2224 }}, + { "nopf" , { 0x01D55F }}, + { "not" , { 0xAC }}, + { "notin" , { 0x2209 }}, + { "notinE" , { 0x22F9, 0x0338 }}, + { "notindot" , { 0x22F5, 0x0338 }}, + { "notinva" , { 0x2209 }}, + { "notinvb" , { 0x22F7 }}, + { "notinvc" , { 0x22F6 }}, + { "notni" , { 0x220C }}, + { "notniva" , { 0x220C }}, + { "notnivb" , { 0x22FE }}, + { "notnivc" , { 0x22FD }}, + { "npar" , { 0x2226 }}, + { "nparallel" , { 0x2226 }}, + { "nparsl" , { 0x2AFD, 0x20E5 }}, + { "npart" , { 0x2202, 0x0338 }}, + { "npolint" , { 0x2A14 }}, + { "npr" , { 0x2280 }}, + { "nprcue" , { 0x22E0 }}, + { "npre" , { 0x2AAF, 0x0338 }}, + { "nprec" , { 0x2280 }}, + { "npreceq" , { 0x2AAF, 0x0338 }}, + { "nrArr" , { 0x21CF }}, + { "nrarr" , { 0x219B }}, + { "nrarrc" , { 0x2933, 0x0338 }}, + { "nrarrw" , { 0x219D, 0x0338 }}, + { "nrightarrow" , { 0x219B }}, + { "nrtri" , { 0x22EB }}, + { "nrtrie" , { 0x22ED }}, + { "nsc" , { 0x2281 }}, + { "nsccue" , { 0x22E1 }}, + { "nsce" , { 0x2AB0, 0x0338 }}, + { "nscr" , { 0x01D4C3 }}, + { "nshortmid" , { 0x2224 }}, + { "nshortparallel" , { 0x2226 }}, + { "nsim" , { 0x2241 }}, + { "nsime" , { 0x2244 }}, + { "nsimeq" , { 0x2244 }}, + { "nsmid" , { 0x2224 }}, + { "nspar" , { 0x2226 }}, + { "nsqsube" , { 0x22E2 }}, + { "nsqsupe" , { 0x22E3 }}, + { "nsub" , { 0x2284 }}, + { "nsubE" , { 0x2AC5, 0x0338 }}, + { "nsube" , { 0x2288 }}, + { "nsubset" , { 0x2282, 0x20D2 }}, + { "nsubseteq" , { 0x2288 }}, + { "nsubseteqq" , { 0x2AC5, 0x0338 }}, + { "nsucc" , { 0x2281 }}, + { "nsucceq" , { 0x2AB0, 0x0338 }}, + { "nsup" , { 0x2285 }}, + { "nsupE" , { 0x2AC6, 0x0338 }}, + { "nsupe" , { 0x2289 }}, + { "nsupset" , { 0x2283, 0x20D2 }}, + { "nsupseteq" , { 0x2289 }}, + { "nsupseteqq" , { 0x2AC6, 0x0338 }}, + { "ntgl" , { 0x2279 }}, + { "ntilde" , { 0xF1 }}, + { "ntlg" , { 0x2278 }}, + { "ntriangleleft" , { 0x22EA }}, + { "ntrianglelefteq" , { 0x22EC }}, + { "ntriangleright" , { 0x22EB }}, + { "ntrianglerighteq" , { 0x22ED }}, + { "nu" , { 0x03BD }}, + { "num" , { 0x23 }}, + { "numero" , { 0x2116 }}, + { "numsp" , { 0x2007 }}, + { "nvDash" , { 0x22AD }}, + { "nvHarr" , { 0x2904 }}, + { "nvap" , { 0x224D, 0x20D2 }}, + { "nvdash" , { 0x22AC }}, + { "nvge" , { 0x2265, 0x20D2 }}, + { "nvgt" , { 0x3E, 0x20D2 }}, + { "nvinfin" , { 0x29DE }}, + { "nvlArr" , { 0x2902 }}, + { "nvle" , { 0x2264, 0x20D2 }}, + { "nvlt" , { 0x3C, 0x20D2 }}, + { "nvltrie" , { 0x22B4, 0x20D2 }}, + { "nvrArr" , { 0x2903 }}, + { "nvrtrie" , { 0x22B5, 0x20D2 }}, + { "nvsim" , { 0x223C, 0x20D2 }}, + { "nwArr" , { 0x21D6 }}, + { "nwarhk" , { 0x2923 }}, + { "nwarr" , { 0x2196 }}, + { "nwarrow" , { 0x2196 }}, + { "nwnear" , { 0x2927 }}, + { "oS" , { 0x24C8 }}, + { "oacute" , { 0xF3 }}, + { "oast" , { 0x229B }}, + { "ocir" , { 0x229A }}, + { "ocirc" , { 0xF4 }}, + { "ocy" , { 0x043E }}, + { "odash" , { 0x229D }}, + { "odblac" , { 0x0151 }}, + { "odiv" , { 0x2A38 }}, + { "odot" , { 0x2299 }}, + { "odsold" , { 0x29BC }}, + { "oelig" , { 0x0153 }}, + { "ofcir" , { 0x29BF }}, + { "ofr" , { 0x01D52C }}, + { "ogon" , { 0x02DB }}, + { "ograve" , { 0xF2 }}, + { "ogt" , { 0x29C1 }}, + { "ohbar" , { 0x29B5 }}, + { "ohm" , { 0x03A9 }}, + { "oint" , { 0x222E }}, + { "olarr" , { 0x21BA }}, + { "olcir" , { 0x29BE }}, + { "olcross" , { 0x29BB }}, + { "oline" , { 0x203E }}, + { "olt" , { 0x29C0 }}, + { "omacr" , { 0x014D }}, + { "omega" , { 0x03C9 }}, + { "omicron" , { 0x03BF }}, + { "omid" , { 0x29B6 }}, + { "ominus" , { 0x2296 }}, + { "oopf" , { 0x01D560 }}, + { "opar" , { 0x29B7 }}, + { "operp" , { 0x29B9 }}, + { "oplus" , { 0x2295 }}, + { "or" , { 0x2228 }}, + { "orarr" , { 0x21BB }}, + { "ord" , { 0x2A5D }}, + { "order" , { 0x2134 }}, + { "orderof" , { 0x2134 }}, + { "ordf" , { 0xAA }}, + { "ordm" , { 0xBA }}, + { "origof" , { 0x22B6 }}, + { "oror" , { 0x2A56 }}, + { "orslope" , { 0x2A57 }}, + { "orv" , { 0x2A5B }}, + { "oscr" , { 0x2134 }}, + { "oslash" , { 0xF8 }}, + { "osol" , { 0x2298 }}, + { "otilde" , { 0xF5 }}, + { "otimes" , { 0x2297 }}, + { "otimesas" , { 0x2A36 }}, + { "ouml" , { 0xF6 }}, + { "ovbar" , { 0x233D }}, + { "par" , { 0x2225 }}, + { "para" , { 0xB6 }}, + { "parallel" , { 0x2225 }}, + { "parsim" , { 0x2AF3 }}, + { "parsl" , { 0x2AFD }}, + { "part" , { 0x2202 }}, + { "pcy" , { 0x043F }}, + { "percnt" , { 0x25 }}, + { "period" , { 0x2E }}, + { "permil" , { 0x2030 }}, + { "perp" , { 0x22A5 }}, + { "pertenk" , { 0x2031 }}, + { "pfr" , { 0x01D52D }}, + { "phi" , { 0x03C6 }}, + { "phiv" , { 0x03D5 }}, + { "phmmat" , { 0x2133 }}, + { "phone" , { 0x260E }}, + { "pi" , { 0x03C0 }}, + { "pitchfork" , { 0x22D4 }}, + { "piv" , { 0x03D6 }}, + { "planck" , { 0x210F }}, + { "planckh" , { 0x210E }}, + { "plankv" , { 0x210F }}, + { "plus" , { 0x2B }}, + { "plusacir" , { 0x2A23 }}, + { "plusb" , { 0x229E }}, + { "pluscir" , { 0x2A22 }}, + { "plusdo" , { 0x2214 }}, + { "plusdu" , { 0x2A25 }}, + { "pluse" , { 0x2A72 }}, + { "plusmn" , { 0xB1 }}, + { "plussim" , { 0x2A26 }}, + { "plustwo" , { 0x2A27 }}, + { "pm" , { 0xB1 }}, + { "pointint" , { 0x2A15 }}, + { "popf" , { 0x01D561 }}, + { "pound" , { 0xA3 }}, + { "pr" , { 0x227A }}, + { "prE" , { 0x2AB3 }}, + { "prap" , { 0x2AB7 }}, + { "prcue" , { 0x227C }}, + { "pre" , { 0x2AAF }}, + { "prec" , { 0x227A }}, + { "precapprox" , { 0x2AB7 }}, + { "preccurlyeq" , { 0x227C }}, + { "preceq" , { 0x2AAF }}, + { "precnapprox" , { 0x2AB9 }}, + { "precneqq" , { 0x2AB5 }}, + { "precnsim" , { 0x22E8 }}, + { "precsim" , { 0x227E }}, + { "prime" , { 0x2032 }}, + { "primes" , { 0x2119 }}, + { "prnE" , { 0x2AB5 }}, + { "prnap" , { 0x2AB9 }}, + { "prnsim" , { 0x22E8 }}, + { "prod" , { 0x220F }}, + { "profalar" , { 0x232E }}, + { "profline" , { 0x2312 }}, + { "profsurf" , { 0x2313 }}, + { "prop" , { 0x221D }}, + { "propto" , { 0x221D }}, + { "prsim" , { 0x227E }}, + { "prurel" , { 0x22B0 }}, + { "pscr" , { 0x01D4C5 }}, + { "psi" , { 0x03C8 }}, + { "puncsp" , { 0x2008 }}, + { "qfr" , { 0x01D52E }}, + { "qint" , { 0x2A0C }}, + { "qopf" , { 0x01D562 }}, + { "qprime" , { 0x2057 }}, + { "qscr" , { 0x01D4C6 }}, + { "quaternions" , { 0x210D }}, + { "quatint" , { 0x2A16 }}, + { "quest" , { 0x3F }}, + { "questeq" , { 0x225F }}, + { "quot" , { 0x22 }}, + { "rAarr" , { 0x21DB }}, + { "rArr" , { 0x21D2 }}, + { "rAtail" , { 0x291C }}, + { "rBarr" , { 0x290F }}, + { "rHar" , { 0x2964 }}, + { "race" , { 0x223D, 0x0331 }}, + { "racute" , { 0x0155 }}, + { "radic" , { 0x221A }}, + { "raemptyv" , { 0x29B3 }}, + { "rang" , { 0x27E9 }}, + { "rangd" , { 0x2992 }}, + { "range" , { 0x29A5 }}, + { "rangle" , { 0x27E9 }}, + { "raquo" , { 0xBB }}, + { "rarr" , { 0x2192 }}, + { "rarrap" , { 0x2975 }}, + { "rarrb" , { 0x21E5 }}, + { "rarrbfs" , { 0x2920 }}, + { "rarrc" , { 0x2933 }}, + { "rarrfs" , { 0x291E }}, + { "rarrhk" , { 0x21AA }}, + { "rarrlp" , { 0x21AC }}, + { "rarrpl" , { 0x2945 }}, + { "rarrsim" , { 0x2974 }}, + { "rarrtl" , { 0x21A3 }}, + { "rarrw" , { 0x219D }}, + { "ratail" , { 0x291A }}, + { "ratio" , { 0x2236 }}, + { "rationals" , { 0x211A }}, + { "rbarr" , { 0x290D }}, + { "rbbrk" , { 0x2773 }}, + { "rbrace" , { 0x7D }}, + { "rbrack" , { 0x5D }}, + { "rbrke" , { 0x298C }}, + { "rbrksld" , { 0x298E }}, + { "rbrkslu" , { 0x2990 }}, + { "rcaron" , { 0x0159 }}, + { "rcedil" , { 0x0157 }}, + { "rceil" , { 0x2309 }}, + { "rcub" , { 0x7D }}, + { "rcy" , { 0x0440 }}, + { "rdca" , { 0x2937 }}, + { "rdldhar" , { 0x2969 }}, + { "rdquo" , { 0x201D }}, + { "rdquor" , { 0x201D }}, + { "rdsh" , { 0x21B3 }}, + { "real" , { 0x211C }}, + { "realine" , { 0x211B }}, + { "realpart" , { 0x211C }}, + { "reals" , { 0x211D }}, + { "rect" , { 0x25AD }}, + { "reg" , { 0xAE }}, + { "rfisht" , { 0x297D }}, + { "rfloor" , { 0x230B }}, + { "rfr" , { 0x01D52F }}, + { "rhard" , { 0x21C1 }}, + { "rharu" , { 0x21C0 }}, + { "rharul" , { 0x296C }}, + { "rho" , { 0x03C1 }}, + { "rhov" , { 0x03F1 }}, + { "rightarrow" , { 0x2192 }}, + { "rightarrowtail" , { 0x21A3 }}, + { "rightharpoondown" , { 0x21C1 }}, + { "rightharpoonup" , { 0x21C0 }}, + { "rightleftarrows" , { 0x21C4 }}, + { "rightleftharpoons" , { 0x21CC }}, + { "rightrightarrows" , { 0x21C9 }}, + { "rightsquigarrow" , { 0x219D }}, + { "rightthreetimes" , { 0x22CC }}, + { "ring" , { 0x02DA }}, + { "risingdotseq" , { 0x2253 }}, + { "rlarr" , { 0x21C4 }}, + { "rlhar" , { 0x21CC }}, + { "rlm" , { 0x200F }}, + { "rmoust" , { 0x23B1 }}, + { "rmoustache" , { 0x23B1 }}, + { "rnmid" , { 0x2AEE }}, + { "roang" , { 0x27ED }}, + { "roarr" , { 0x21FE }}, + { "robrk" , { 0x27E7 }}, + { "ropar" , { 0x2986 }}, + { "ropf" , { 0x01D563 }}, + { "roplus" , { 0x2A2E }}, + { "rotimes" , { 0x2A35 }}, + { "rpar" , { 0x29 }}, + { "rpargt" , { 0x2994 }}, + { "rppolint" , { 0x2A12 }}, + { "rrarr" , { 0x21C9 }}, + { "rsaquo" , { 0x203A }}, + { "rscr" , { 0x01D4C7 }}, + { "rsh" , { 0x21B1 }}, + { "rsqb" , { 0x5D }}, + { "rsquo" , { 0x2019 }}, + { "rsquor" , { 0x2019 }}, + { "rthree" , { 0x22CC }}, + { "rtimes" , { 0x22CA }}, + { "rtri" , { 0x25B9 }}, + { "rtrie" , { 0x22B5 }}, + { "rtrif" , { 0x25B8 }}, + { "rtriltri" , { 0x29CE }}, + { "ruluhar" , { 0x2968 }}, + { "rx" , { 0x211E }}, + { "sacute" , { 0x015B }}, + { "sbquo" , { 0x201A }}, + { "sc" , { 0x227B }}, + { "scE" , { 0x2AB4 }}, + { "scap" , { 0x2AB8 }}, + { "scaron" , { 0x0161 }}, + { "sccue" , { 0x227D }}, + { "sce" , { 0x2AB0 }}, + { "scedil" , { 0x015F }}, + { "scirc" , { 0x015D }}, + { "scnE" , { 0x2AB6 }}, + { "scnap" , { 0x2ABA }}, + { "scnsim" , { 0x22E9 }}, + { "scpolint" , { 0x2A13 }}, + { "scsim" , { 0x227F }}, + { "scy" , { 0x0441 }}, + { "sdot" , { 0x22C5 }}, + { "sdotb" , { 0x22A1 }}, + { "sdote" , { 0x2A66 }}, + { "seArr" , { 0x21D8 }}, + { "searhk" , { 0x2925 }}, + { "searr" , { 0x2198 }}, + { "searrow" , { 0x2198 }}, + { "sect" , { 0xA7 }}, + { "semi" , { 0x3B }}, + { "seswar" , { 0x2929 }}, + { "setminus" , { 0x2216 }}, + { "setmn" , { 0x2216 }}, + { "sext" , { 0x2736 }}, + { "sfr" , { 0x01D530 }}, + { "sfrown" , { 0x2322 }}, + { "sharp" , { 0x266F }}, + { "shchcy" , { 0x0449 }}, + { "shcy" , { 0x0448 }}, + { "shortmid" , { 0x2223 }}, + { "shortparallel" , { 0x2225 }}, + { "shy" , { 0xAD }}, + { "sigma" , { 0x03C3 }}, + { "sigmaf" , { 0x03C2 }}, + { "sigmav" , { 0x03C2 }}, + { "sim" , { 0x223C }}, + { "simdot" , { 0x2A6A }}, + { "sime" , { 0x2243 }}, + { "simeq" , { 0x2243 }}, + { "simg" , { 0x2A9E }}, + { "simgE" , { 0x2AA0 }}, + { "siml" , { 0x2A9D }}, + { "simlE" , { 0x2A9F }}, + { "simne" , { 0x2246 }}, + { "simplus" , { 0x2A24 }}, + { "simrarr" , { 0x2972 }}, + { "slarr" , { 0x2190 }}, + { "smallsetminus" , { 0x2216 }}, + { "smashp" , { 0x2A33 }}, + { "smeparsl" , { 0x29E4 }}, + { "smid" , { 0x2223 }}, + { "smile" , { 0x2323 }}, + { "smt" , { 0x2AAA }}, + { "smte" , { 0x2AAC }}, + { "smtes" , { 0x2AAC, 0xFE00 }}, + { "softcy" , { 0x044C }}, + { "sol" , { 0x2F }}, + { "solb" , { 0x29C4 }}, + { "solbar" , { 0x233F }}, + { "sopf" , { 0x01D564 }}, + { "spades" , { 0x2660 }}, + { "spadesuit" , { 0x2660 }}, + { "spar" , { 0x2225 }}, + { "sqcap" , { 0x2293 }}, + { "sqcaps" , { 0x2293, 0xFE00 }}, + { "sqcup" , { 0x2294 }}, + { "sqcups" , { 0x2294, 0xFE00 }}, + { "sqsub" , { 0x228F }}, + { "sqsube" , { 0x2291 }}, + { "sqsubset" , { 0x228F }}, + { "sqsubseteq" , { 0x2291 }}, + { "sqsup" , { 0x2290 }}, + { "sqsupe" , { 0x2292 }}, + { "sqsupset" , { 0x2290 }}, + { "sqsupseteq" , { 0x2292 }}, + { "squ" , { 0x25A1 }}, + { "square" , { 0x25A1 }}, + { "squarf" , { 0x25AA }}, + { "squf" , { 0x25AA }}, + { "srarr" , { 0x2192 }}, + { "sscr" , { 0x01D4C8 }}, + { "ssetmn" , { 0x2216 }}, + { "ssmile" , { 0x2323 }}, + { "sstarf" , { 0x22C6 }}, + { "star" , { 0x2606 }}, + { "starf" , { 0x2605 }}, + { "straightepsilon" , { 0x03F5 }}, + { "straightphi" , { 0x03D5 }}, + { "strns" , { 0xAF }}, + { "sub" , { 0x2282 }}, + { "subE" , { 0x2AC5 }}, + { "subdot" , { 0x2ABD }}, + { "sube" , { 0x2286 }}, + { "subedot" , { 0x2AC3 }}, + { "submult" , { 0x2AC1 }}, + { "subnE" , { 0x2ACB }}, + { "subne" , { 0x228A }}, + { "subplus" , { 0x2ABF }}, + { "subrarr" , { 0x2979 }}, + { "subset" , { 0x2282 }}, + { "subseteq" , { 0x2286 }}, + { "subseteqq" , { 0x2AC5 }}, + { "subsetneq" , { 0x228A }}, + { "subsetneqq" , { 0x2ACB }}, + { "subsim" , { 0x2AC7 }}, + { "subsub" , { 0x2AD5 }}, + { "subsup" , { 0x2AD3 }}, + { "succ" , { 0x227B }}, + { "succapprox" , { 0x2AB8 }}, + { "succcurlyeq" , { 0x227D }}, + { "succeq" , { 0x2AB0 }}, + { "succnapprox" , { 0x2ABA }}, + { "succneqq" , { 0x2AB6 }}, + { "succnsim" , { 0x22E9 }}, + { "succsim" , { 0x227F }}, + { "sum" , { 0x2211 }}, + { "sung" , { 0x266A }}, + { "sup1" , { 0xB9 }}, + { "sup2" , { 0xB2 }}, + { "sup3" , { 0xB3 }}, + { "sup" , { 0x2283 }}, + { "supE" , { 0x2AC6 }}, + { "supdot" , { 0x2ABE }}, + { "supdsub" , { 0x2AD8 }}, + { "supe" , { 0x2287 }}, + { "supedot" , { 0x2AC4 }}, + { "suphsol" , { 0x27C9 }}, + { "suphsub" , { 0x2AD7 }}, + { "suplarr" , { 0x297B }}, + { "supmult" , { 0x2AC2 }}, + { "supnE" , { 0x2ACC }}, + { "supne" , { 0x228B }}, + { "supplus" , { 0x2AC0 }}, + { "supset" , { 0x2283 }}, + { "supseteq" , { 0x2287 }}, + { "supseteqq" , { 0x2AC6 }}, + { "supsetneq" , { 0x228B }}, + { "supsetneqq" , { 0x2ACC }}, + { "supsim" , { 0x2AC8 }}, + { "supsub" , { 0x2AD4 }}, + { "supsup" , { 0x2AD6 }}, + { "swArr" , { 0x21D9 }}, + { "swarhk" , { 0x2926 }}, + { "swarr" , { 0x2199 }}, + { "swarrow" , { 0x2199 }}, + { "swnwar" , { 0x292A }}, + { "szlig" , { 0xDF }}, + { "target" , { 0x2316 }}, + { "tau" , { 0x03C4 }}, + { "tbrk" , { 0x23B4 }}, + { "tcaron" , { 0x0165 }}, + { "tcedil" , { 0x0163 }}, + { "tcy" , { 0x0442 }}, + { "tdot" , { 0x20DB }}, + { "telrec" , { 0x2315 }}, + { "tfr" , { 0x01D531 }}, + { "there4" , { 0x2234 }}, + { "therefore" , { 0x2234 }}, + { "theta" , { 0x03B8 }}, + { "thetasym" , { 0x03D1 }}, + { "thetav" , { 0x03D1 }}, + { "thickapprox" , { 0x2248 }}, + { "thicksim" , { 0x223C }}, + { "thinsp" , { 0x2009 }}, + { "thkap" , { 0x2248 }}, + { "thksim" , { 0x223C }}, + { "thorn" , { 0xFE }}, + { "tilde" , { 0x02DC }}, + { "times" , { 0xD7 }}, + { "timesb" , { 0x22A0 }}, + { "timesbar" , { 0x2A31 }}, + { "timesd" , { 0x2A30 }}, + { "tint" , { 0x222D }}, + { "toea" , { 0x2928 }}, + { "top" , { 0x22A4 }}, + { "topbot" , { 0x2336 }}, + { "topcir" , { 0x2AF1 }}, + { "topf" , { 0x01D565 }}, + { "topfork" , { 0x2ADA }}, + { "tosa" , { 0x2929 }}, + { "tprime" , { 0x2034 }}, + { "trade" , { 0x2122 }}, + { "triangle" , { 0x25B5 }}, + { "triangledown" , { 0x25BF }}, + { "triangleleft" , { 0x25C3 }}, + { "trianglelefteq" , { 0x22B4 }}, + { "triangleq" , { 0x225C }}, + { "triangleright" , { 0x25B9 }}, + { "trianglerighteq" , { 0x22B5 }}, + { "tridot" , { 0x25EC }}, + { "trie" , { 0x225C }}, + { "triminus" , { 0x2A3A }}, + { "triplus" , { 0x2A39 }}, + { "trisb" , { 0x29CD }}, + { "tritime" , { 0x2A3B }}, + { "trpezium" , { 0x23E2 }}, + { "tscr" , { 0x01D4C9 }}, + { "tscy" , { 0x0446 }}, + { "tshcy" , { 0x045B }}, + { "tstrok" , { 0x0167 }}, + { "twixt" , { 0x226C }}, + { "twoheadleftarrow" , { 0x219E }}, + { "twoheadrightarrow" , { 0x21A0 }}, + { "uArr" , { 0x21D1 }}, + { "uHar" , { 0x2963 }}, + { "uacute" , { 0xFA }}, + { "uarr" , { 0x2191 }}, + { "ubrcy" , { 0x045E }}, + { "ubreve" , { 0x016D }}, + { "ucirc" , { 0xFB }}, + { "ucy" , { 0x0443 }}, + { "udarr" , { 0x21C5 }}, + { "udblac" , { 0x0171 }}, + { "udhar" , { 0x296E }}, + { "ufisht" , { 0x297E }}, + { "ufr" , { 0x01D532 }}, + { "ugrave" , { 0xF9 }}, + { "uharl" , { 0x21BF }}, + { "uharr" , { 0x21BE }}, + { "uhblk" , { 0x2580 }}, + { "ulcorn" , { 0x231C }}, + { "ulcorner" , { 0x231C }}, + { "ulcrop" , { 0x230F }}, + { "ultri" , { 0x25F8 }}, + { "umacr" , { 0x016B }}, + { "uml" , { 0xA8 }}, + { "uogon" , { 0x0173 }}, + { "uopf" , { 0x01D566 }}, + { "uparrow" , { 0x2191 }}, + { "updownarrow" , { 0x2195 }}, + { "upharpoonleft" , { 0x21BF }}, + { "upharpoonright" , { 0x21BE }}, + { "uplus" , { 0x228E }}, + { "upsi" , { 0x03C5 }}, + { "upsih" , { 0x03D2 }}, + { "upsilon" , { 0x03C5 }}, + { "upuparrows" , { 0x21C8 }}, + { "urcorn" , { 0x231D }}, + { "urcorner" , { 0x231D }}, + { "urcrop" , { 0x230E }}, + { "uring" , { 0x016F }}, + { "urtri" , { 0x25F9 }}, + { "uscr" , { 0x01D4CA }}, + { "utdot" , { 0x22F0 }}, + { "utilde" , { 0x0169 }}, + { "utri" , { 0x25B5 }}, + { "utrif" , { 0x25B4 }}, + { "uuarr" , { 0x21C8 }}, + { "uuml" , { 0xFC }}, + { "uwangle" , { 0x29A7 }}, + { "vArr" , { 0x21D5 }}, + { "vBar" , { 0x2AE8 }}, + { "vBarv" , { 0x2AE9 }}, + { "vDash" , { 0x22A8 }}, + { "vangrt" , { 0x299C }}, + { "varepsilon" , { 0x03F5 }}, + { "varkappa" , { 0x03F0 }}, + { "varnothing" , { 0x2205 }}, + { "varphi" , { 0x03D5 }}, + { "varpi" , { 0x03D6 }}, + { "varpropto" , { 0x221D }}, + { "varr" , { 0x2195 }}, + { "varrho" , { 0x03F1 }}, + { "varsigma" , { 0x03C2 }}, + { "varsubsetneq" , { 0x228A, 0xFE00 }}, + { "varsubsetneqq" , { 0x2ACB, 0xFE00 }}, + { "varsupsetneq" , { 0x228B, 0xFE00 }}, + { "varsupsetneqq" , { 0x2ACC, 0xFE00 }}, + { "vartheta" , { 0x03D1 }}, + { "vartriangleleft" , { 0x22B2 }}, + { "vartriangleright" , { 0x22B3 }}, + { "vcy" , { 0x0432 }}, + { "vdash" , { 0x22A2 }}, + { "vee" , { 0x2228 }}, + { "veebar" , { 0x22BB }}, + { "veeeq" , { 0x225A }}, + { "vellip" , { 0x22EE }}, + { "verbar" , { 0x7C }}, + { "vert" , { 0x7C }}, + { "vfr" , { 0x01D533 }}, + { "vltri" , { 0x22B2 }}, + { "vnsub" , { 0x2282, 0x20D2 }}, + { "vnsup" , { 0x2283, 0x20D2 }}, + { "vopf" , { 0x01D567 }}, + { "vprop" , { 0x221D }}, + { "vrtri" , { 0x22B3 }}, + { "vscr" , { 0x01D4CB }}, + { "vsubnE" , { 0x2ACB, 0xFE00 }}, + { "vsubne" , { 0x228A, 0xFE00 }}, + { "vsupnE" , { 0x2ACC, 0xFE00 }}, + { "vsupne" , { 0x228B, 0xFE00 }}, + { "vzigzag" , { 0x299A }}, + { "wcirc" , { 0x0175 }}, + { "wedbar" , { 0x2A5F }}, + { "wedge" , { 0x2227 }}, + { "wedgeq" , { 0x2259 }}, + { "weierp" , { 0x2118 }}, + { "wfr" , { 0x01D534 }}, + { "wopf" , { 0x01D568 }}, + { "wp" , { 0x2118 }}, + { "wr" , { 0x2240 }}, + { "wreath" , { 0x2240 }}, + { "wscr" , { 0x01D4CC }}, + { "xcap" , { 0x22C2 }}, + { "xcirc" , { 0x25EF }}, + { "xcup" , { 0x22C3 }}, + { "xdtri" , { 0x25BD }}, + { "xfr" , { 0x01D535 }}, + { "xhArr" , { 0x27FA }}, + { "xharr" , { 0x27F7 }}, + { "xi" , { 0x03BE }}, + { "xlArr" , { 0x27F8 }}, + { "xlarr" , { 0x27F5 }}, + { "xmap" , { 0x27FC }}, + { "xnis" , { 0x22FB }}, + { "xodot" , { 0x2A00 }}, + { "xopf" , { 0x01D569 }}, + { "xoplus" , { 0x2A01 }}, + { "xotime" , { 0x2A02 }}, + { "xrArr" , { 0x27F9 }}, + { "xrarr" , { 0x27F6 }}, + { "xscr" , { 0x01D4CD }}, + { "xsqcup" , { 0x2A06 }}, + { "xuplus" , { 0x2A04 }}, + { "xutri" , { 0x25B3 }}, + { "xvee" , { 0x22C1 }}, + { "xwedge" , { 0x22C0 }}, + { "yacute" , { 0xFD }}, + { "yacy" , { 0x044F }}, + { "ycirc" , { 0x0177 }}, + { "ycy" , { 0x044B }}, + { "yen" , { 0xA5 }}, + { "yfr" , { 0x01D536 }}, + { "yicy" , { 0x0457 }}, + { "yopf" , { 0x01D56A }}, + { "yscr" , { 0x01D4CE }}, + { "yucy" , { 0x044E }}, + { "yuml" , { 0xFF }}, + { "zacute" , { 0x017A }}, + { "zcaron" , { 0x017E }}, + { "zcy" , { 0x0437 }}, + { "zdot" , { 0x017C }}, + { "zeetrf" , { 0x2128 }}, + { "zeta" , { 0x03B6 }}, + { "zfr" , { 0x01D537 }}, + { "zhcy" , { 0x0436 }}, + { "zigrarr" , { 0x21DD }}, + { "zopf" , { 0x01D56B }}, + { "zscr" , { 0x01D4CF }}, + { "zwj" , { 0x200D }}, + { "zwnj" , { 0x200C }}, +}; + +static constexpr auto s_NamedEntitiesHTML4 = frozen::make_unordered_map(s_Entities); + +int main(int argv, char** argc) +{ + return (s_NamedEntitiesHTML4.find("real") == s_NamedEntitiesHTML4.end()); +} + diff --git a/examples/pixel_art.cpp b/examples/pixel_art.cpp new file mode 100644 index 0000000..003ffe9 --- /dev/null +++ b/examples/pixel_art.cpp @@ -0,0 +1,120 @@ +#if 0 +g++ $0 -std=c++14 -Iinclude && ./a.out && rm -f a.out && qiv panda.ppm 1up.ppm +exit +#else + +#include +#include +#include + +constexpr frozen::map, 5> Tans{ + {'R', {(char)0xFF, (char)0x00, (char)0x00}}, + {'G', {(char)0x00, (char)0xFF, (char)0x00}}, + {'B', {(char)0x00, (char)0x00, (char)0xFF}}, + {'#', {(char)0x00, (char)0x00, (char)0x00}}, + {' ', {(char)0xFF, (char)0xFF, (char)0xFF}}, +}; + +constexpr unsigned itoa(unsigned char * start, unsigned i) { + constexpr unsigned step = sizeof(unsigned) * 3; + for(unsigned k = 0; k < step; ++k) + *start++ = ' '; + do { + *--start = '0' + i % 10; + i /= 10; + } while(i); + return step; +} + +template struct ppm { + unsigned char bytes[9 /* fixed header*/ + sizeof(unsigned) * 3 * 2 /* to hold sizes */ + 3 * H * W]; + + constexpr ppm(unsigned char const *data) : bytes{0} { + unsigned j = 0; + bytes[j++] = 'P'; + bytes[j++] = '6'; + bytes[j++] = ' '; + + j += itoa(bytes + j, H); + + bytes[j++] = ' '; + + j += itoa(bytes + j, W); + + bytes[j++] = ' '; + bytes[j++] = '2'; + bytes[j++] = '5'; + bytes[j++] = '5'; + bytes[j++] = '\n'; + for (unsigned i = 0; i < H * W; ++i) { + auto const code = Tans.find(data[i])->second; + bytes[j + 3 * i + 0] = code[0]; + bytes[j + 3 * i + 1] = code[1]; + bytes[j + 3 * i + 2] = code[2]; + } + } + + void save(char const path[]) const { + std::ofstream out{path, std::ios::binary}; + out.write((char *)bytes, sizeof bytes); + } +}; + +void make_panda() { + constexpr unsigned char bytes[] = " ### ### " + " ##### ########## ##### " + " ####### ####### " + " #### #### " + " ### ### " + " # # " + " # # " + " # ### ### # " + " # ##### ##### # " + " # #### # # #### # " + " # #### # # #### # " + " # ##### ##### # " + " # ### ## ### # " + " # ## # " + " #### RRR RRR #### " + " ######RRRRR RRRRR###### " + " ######RRRRRRRRRRRR###### " + " ######RRRRRRRRRRRR###### " + " ######RRRRRRRRRRRR###### " + " #######RRRRRRRRRR####### " + " ##### RRRRRRRR #### " + " ### RRRRRR ## " + " RRRR "; + constexpr ppm<26, 22> some{bytes}; + some.save("panda.ppm"); +} + +void make_1up() { + constexpr unsigned char bytes[] = " ###### " + " ##GGGG ## " + " # GGGG # " + " # GGGGGG # " + " # GG GG # " + " #GGG GGGGG# " + " #GGG GG G# " + " # GG G # " + " # GG GG # " + " # GGGGGGGGG G# " + " # GG########GGG# " + " ### # # ### " + " # # # # " + " # # " + " # # " + " ######## " + + ; + constexpr ppm<18, 16> some{bytes}; + some.save("1up.ppm"); +} + +int main() { + make_panda(); + make_1up(); + return 0; +} + +#endif diff --git a/examples/static_assert.cpp b/examples/static_assert.cpp new file mode 100644 index 0000000..0899292 --- /dev/null +++ b/examples/static_assert.cpp @@ -0,0 +1,9 @@ +#include + +static constexpr frozen::set supported_sizes = { + 1, 2, 4 +}; + +static_assert(supported_sizes.count(sizeof(short)), "unsupported size"); + +int main() { return 0; } diff --git a/examples/value_modification.cpp b/examples/value_modification.cpp new file mode 100644 index 0000000..2584efd --- /dev/null +++ b/examples/value_modification.cpp @@ -0,0 +1,37 @@ +#include +#include +#include +#include + +/// MAYBE_CONSTINIT expands to `constinit` if available. +#if __cpp_constinit +#define MAYBE_CONSTINIT constinit +#else +#define MAYBE_CONSTINIT +#endif + +// To make a frozen::unordered_map where you can modify the values, make a +// non-constexpr instance. If available, prefer to use constinit. It will +// initialize the map during compilation and detect any exceptions. +MAYBE_CONSTINIT static frozen::unordered_map fruits = { + {"n_apples", 0}, + {"n_pears", 0}, +}; + +int main() { + // Update the values using at() + fruits.at("n_apples") = 10; + fruits.at("n_pears") = fruits.at("n_apples") * 2; + std::cout << "n_apples: " << fruits.at("n_apples") << std::endl; + std::cout << "n_pears: " << fruits.at("n_pears") << std::endl; + + // You can also update values via the iterator returned by find() + auto found = fruits.find("n_apples"); + found->second = 0; + std::cout << "n_apples: " << fruits.at("n_apples") << std::endl; + + // Range also works + auto range = fruits.equal_range("n_apples"); + range.first->second = 1337; + std::cout << "n_apples: " << fruits.at("n_apples") << std::endl; +} \ No newline at end of file -- cgit v1.2.3