/* == Start of generated table == */
/*
 * The following tables are generated by running:
 *
 *   ./gen-emoji-table.py emoji-data.txt
 *
 * on file with this header:
 *
 * # emoji-data.txt
 * # Date: 2025-07-25, 17:54:31 GMT
 * # © 2025 Unicode®, Inc.
 * # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 * # For terms of use and license, see https://www.unicode.org/terms_of_use.html
 * #
 * # Emoji Data for UTS #51
 * # Version: 17.0
 * #
 * # For documentation and usage, see https://www.unicode.org/reports/tr51
 */

#ifndef HB_UNICODE_EMOJI_TABLE_HH
#define HB_UNICODE_EMOJI_TABLE_HH

#include "hb-unicode.hh"

#include <stdint.h>

static const uint8_t _hb_emoji_u8[624]=
{
   16, 17, 17, 17, 50, 20, 21, 17, 17, 17, 17, 17, 17, 17, 17, 17,
   17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
   17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
   17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,118,152,
    0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    2,  3,  0,  0,  4,  0,  5,  0,  0,  0,  0,  0,  6,  0,  0,  7,
    0,  0,  0,  8,  0,  0,  9, 10, 11, 12, 13, 14, 15, 16, 17,  0,
    0,  0,  0,  0, 18,  0,  0,  0,  0,  0,  0,  0, 19, 20,  0,  0,
   21,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22,  0,  0,  0,  0,  0,
   23,  0, 24, 25,  0, 26, 27, 28, 29, 30, 31, 31, 32, 31, 33, 34,
   31, 31, 31, 35, 36, 37, 38, 39, 31, 40, 31, 41,  0,  0,  0, 42,
   43, 44, 45, 46, 47, 48, 31, 31,  0, 49, 31, 31,  0,  0,  0,  0,
   31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 36,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 66,  0,  0,
    0,  0,  0,  0,  0,  0,  0, 16,  0,  2,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  4,  0,  0,  2,  0,  0,240,  3,  0,  6,  0,  0,
    0,  0,  0, 12,  0,  1,  0,  0,  0,128,  0,  0,  0,254, 15,  7,
    4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 64,  0,
    1,  0,  0,  0,  0,  0,  0,120, 31, 64, 50, 33, 77,196,  0,  7,
    5,255, 15,128,105,  1,  0,200,  0,  0,252, 26,131, 12,  3, 96,
   48,193, 26,  0,  0,  6,191, 39, 36,191, 84, 32,  2,  1, 24,  0,
  144, 80,184,  0, 24,  0,  0,  0,  0,  0,224,  0,  2,  0,  1,128,
    0,  0,  0,  0,  0,  0, 48,  0,224,  0,  0, 24,  0,  0,  0,  0,
    0,  0, 33,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 32,
    0,  0,128,  2,  0,  0,  0,  0, 16,  0,  0,  0,  0,240,  0,  0,
    0,  0,240,255,  0,128,  1,  0,  1,128,  1,  0,  0,  0,192,255,
    0,  0,  0,  0,  0,  0,  3,192,  0, 64,254,  7,  0,192,255,255,
  255,255,255,255, 63,  0,  0,  0,254,255,  0,  4,  0,128,252,247,
    0,254,255,255,192,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,243,255,255,255,255,255,207,206,255,255,255,255,
  255,255,255,255,255,255,185,  7,255,255,255,255,255,255,255,191,
  255,255,255,255,255,255,255, 63,  0,126,255,255,255,128,249,  7,
  128, 60, 97,  0, 48,  1,  6, 16, 28,  0, 14,112, 10,129,  8,252,
  255,255,  0,  0,  0,  0,  0,  0, 63,248,231,255, 63,250,249,255,
    0,  0,  0,252,255,255,255,255,  0,240,  0,  0,  0,  0,  0,  0,
    0,255,  0,252,  0,  0,  0,  0,  0,255,  0,  0,  0,192,  0,240,
  252,255,  0,254,255,255,255,255,  0,240,255,255,255,255,255,247,
  191,255,255,255,255,255,255,255,  0,  0,  0,255,  0,192,255,255,
};

static inline uint8_t _hb_emoji_b4 (const uint8_t* a, unsigned i)
{
  return (a[i>>1]>>((i&1)<<2))&15;
}
static inline uint8_t _hb_emoji_b1 (const uint8_t* a, unsigned i)
{
  return (a[i>>3]>>((i&7)<<0))&1;
}
static inline uint8_t _hb_emoji_is_Extended_Pictographic (unsigned u)
{
  return u<131070 ? _hb_emoji_b1(_hb_emoji_u8+224u,((_hb_emoji_u8[64u+((_hb_emoji_b4(_hb_emoji_u8,((((u)>>6))>>4)))<<4)+((((u)>>6))&15)])<<6)+((u)&63)) : 0;
}


#endif /* HB_UNICODE_EMOJI_TABLE_HH */

/* == End of generated table == */
