keysyms: Update using latest xorgproto

This fixes a typo and improves comments.

xorgproto commit: cd33097fc779f280925c6d6bbfbd5150f93ca5bc
Relevant MR: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/84
master
Pierre Le Marre 2024-02-08 07:41:39 +01:00 committed by Wismill
parent dd3e214003
commit ed2dc978b1
2 changed files with 357 additions and 324 deletions

View File

@ -102,14 +102,52 @@ SOFTWARE.
* existing legacy keysym values in the range 0x0100 to 0x20ff. * existing legacy keysym values in the range 0x0100 to 0x20ff.
* *
* Where several mnemonic names are defined for the same keysym in this * Where several mnemonic names are defined for the same keysym in this
* file, all but the first one listed should be considered deprecated, * file, the first one listed is considered the "canonical" name. This
* unless the comment explicitly states the alias, e.g.: * is the name that should be used when retrieving a keysym name from
* its code. The next names are considered "aliases" to the canonical
* name.
*
* Aliases are made explicit by writing in their comment "alias for",
* followed by the corresponding canonical name. Example:
* *
* #define XKB_KEY_dead_tilde 0xfe53 * #define XKB_KEY_dead_tilde 0xfe53
* #define XKB_KEY_dead_perispomeni 0xfe53 // alias for dead_tilde * #define XKB_KEY_dead_perispomeni 0xfe53 // alias for dead_tilde
* *
* Additionally, a keysym can be explicitly deprecated by starting the * The rules to consider a keysym mnemonic name deprecated are:
* comment with "deprecated". *
* 1. A legacy keysym with its Unicode mapping in parentheses is
* deprecated (see above).
*
* 2. A keysym name is *explicitly* deprecated by starting its comment
* with "deprecated". Examples:
*
* #define XKB_KEY_L1 0xffc8 // deprecated alias for F11
* #define XKB_KEY_quoteleft 0x0060 // deprecated
*
* 3. A keysym name is *explicitly* *not* deprecated by starting its
* comment with "non-deprecated alias". Examples:
*
* #define XKB_KEY_dead_tilde 0xfe53
* #define XKB_KEY_dead_perispomeni 0xfe53 // non-deprecated alias for dead_tilde
*
* 4. If none of the previous rules apply, an alias is *implicitly*
* deprecated if there is at least one previous name for the
* corresponding keysym that is *not* explicitly deprecated.
*
* Examples:
*
* // SingleCandidate is the canonical name
* #define XKB_KEY_SingleCandidate 0xff3c
* // Hangul_SingleCandidate is deprecated because it is an alias
* // and it does not start with "non-deprecated alias"
* #define XKB_KEY_Hangul_SingleCandidate 0xff3c // Single candidate
*
* // guillemotleft is the canonical name, but it is deprecated
* #define XKB_KEY_guillemotleft 0x00ab // deprecated alias for guillemetleft (misspelling)
* // guillemetleft is not deprecated, because the keysym has no endorsed name before it.
* #define XKB_KEY_guillemetleft 0x00ab // U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
* // The following hypothetical name is deprecated because guillemetleft come before.
* #define XKB_KEY_guillemetleft2 0x00ab
* *
* Mnemonic names for keysyms are defined in this file with lines * Mnemonic names for keysyms are defined in this file with lines
* that match one of these Perl regular expressions: * that match one of these Perl regular expressions:
@ -156,7 +194,10 @@ SOFTWARE.
* e.g. keysyms removals. * e.g. keysyms removals.
* *
* Therefore, it is advised to proceed to no removal and to make a new * Therefore, it is advised to proceed to no removal and to make a new
* name canonical only 10 years after its introduction. * name canonical only 10 years after its introduction. This means that
* some keysyms may have their first listed name deprecated during the
* period of transition. Once this period is over, the deprecated name
* should be moved after the new canonical name.
*/ */
#define XKB_KEY_VoidSymbol 0xffffff /* Void symbol */ #define XKB_KEY_VoidSymbol 0xffffff /* Void symbol */
@ -193,7 +234,7 @@ SOFTWARE.
#define XKB_KEY_Kanji 0xff21 /* Kanji, Kanji convert */ #define XKB_KEY_Kanji 0xff21 /* Kanji, Kanji convert */
#define XKB_KEY_Muhenkan 0xff22 /* Cancel Conversion */ #define XKB_KEY_Muhenkan 0xff22 /* Cancel Conversion */
#define XKB_KEY_Henkan_Mode 0xff23 /* Start/Stop Conversion */ #define XKB_KEY_Henkan_Mode 0xff23 /* Start/Stop Conversion */
#define XKB_KEY_Henkan 0xff23 /* Alias for Henkan_Mode */ #define XKB_KEY_Henkan 0xff23 /* non-deprecated alias for Henkan_Mode */
#define XKB_KEY_Romaji 0xff24 /* to Romaji */ #define XKB_KEY_Romaji 0xff24 /* to Romaji */
#define XKB_KEY_Hiragana 0xff25 /* to Hiragana */ #define XKB_KEY_Hiragana 0xff25 /* to Hiragana */
#define XKB_KEY_Katakana 0xff26 /* to Katakana */ #define XKB_KEY_Katakana 0xff26 /* to Katakana */
@ -242,7 +283,7 @@ SOFTWARE.
#define XKB_KEY_Help 0xff6a /* Help */ #define XKB_KEY_Help 0xff6a /* Help */
#define XKB_KEY_Break 0xff6b #define XKB_KEY_Break 0xff6b
#define XKB_KEY_Mode_switch 0xff7e /* Character set switch */ #define XKB_KEY_Mode_switch 0xff7e /* Character set switch */
#define XKB_KEY_script_switch 0xff7e /* Alias for Mode_switch */ #define XKB_KEY_script_switch 0xff7e /* non-deprecated alias for Mode_switch */
#define XKB_KEY_Num_Lock 0xff7f #define XKB_KEY_Num_Lock 0xff7f
/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */ /* Keypad functions, keypad numbers cleverly chosen to map to ASCII */
@ -388,7 +429,7 @@ SOFTWARE.
#define XKB_KEY_ISO_Level5_Shift 0xfe11 #define XKB_KEY_ISO_Level5_Shift 0xfe11
#define XKB_KEY_ISO_Level5_Latch 0xfe12 #define XKB_KEY_ISO_Level5_Latch 0xfe12
#define XKB_KEY_ISO_Level5_Lock 0xfe13 #define XKB_KEY_ISO_Level5_Lock 0xfe13
#define XKB_KEY_ISO_Group_Shift 0xff7e /* Alias for Mode_switch */ #define XKB_KEY_ISO_Group_Shift 0xff7e /* non-deprecated alias for Mode_switch */
#define XKB_KEY_ISO_Group_Latch 0xfe06 #define XKB_KEY_ISO_Group_Latch 0xfe06
#define XKB_KEY_ISO_Group_Lock 0xfe07 #define XKB_KEY_ISO_Group_Lock 0xfe07
#define XKB_KEY_ISO_Next_Group 0xfe08 #define XKB_KEY_ISO_Next_Group 0xfe08
@ -426,7 +467,7 @@ SOFTWARE.
#define XKB_KEY_dead_acute 0xfe51 #define XKB_KEY_dead_acute 0xfe51
#define XKB_KEY_dead_circumflex 0xfe52 #define XKB_KEY_dead_circumflex 0xfe52
#define XKB_KEY_dead_tilde 0xfe53 #define XKB_KEY_dead_tilde 0xfe53
#define XKB_KEY_dead_perispomeni 0xfe53 /* alias for dead_tilde */ #define XKB_KEY_dead_perispomeni 0xfe53 /* non-deprecated alias for dead_tilde */
#define XKB_KEY_dead_macron 0xfe54 #define XKB_KEY_dead_macron 0xfe54
#define XKB_KEY_dead_breve 0xfe55 #define XKB_KEY_dead_breve 0xfe55
#define XKB_KEY_dead_abovedot 0xfe56 #define XKB_KEY_dead_abovedot 0xfe56
@ -444,9 +485,9 @@ SOFTWARE.
#define XKB_KEY_dead_horn 0xfe62 #define XKB_KEY_dead_horn 0xfe62
#define XKB_KEY_dead_stroke 0xfe63 #define XKB_KEY_dead_stroke 0xfe63
#define XKB_KEY_dead_abovecomma 0xfe64 #define XKB_KEY_dead_abovecomma 0xfe64
#define XKB_KEY_dead_psili 0xfe64 /* alias for dead_abovecomma */ #define XKB_KEY_dead_psili 0xfe64 /* non-deprecated alias for dead_abovecomma */
#define XKB_KEY_dead_abovereversedcomma 0xfe65 #define XKB_KEY_dead_abovereversedcomma 0xfe65
#define XKB_KEY_dead_dasia 0xfe65 /* alias for dead_abovereversedcomma */ #define XKB_KEY_dead_dasia 0xfe65 /* non-deprecated alias for dead_abovereversedcomma */
#define XKB_KEY_dead_doublegrave 0xfe66 #define XKB_KEY_dead_doublegrave 0xfe66
#define XKB_KEY_dead_belowring 0xfe67 #define XKB_KEY_dead_belowring 0xfe67
#define XKB_KEY_dead_belowmacron 0xfe68 #define XKB_KEY_dead_belowmacron 0xfe68
@ -475,9 +516,9 @@ SOFTWARE.
#define XKB_KEY_dead_O 0xfe87 #define XKB_KEY_dead_O 0xfe87
#define XKB_KEY_dead_u 0xfe88 #define XKB_KEY_dead_u 0xfe88
#define XKB_KEY_dead_U 0xfe89 #define XKB_KEY_dead_U 0xfe89
#define XKB_KEY_dead_small_schwa 0xfe8a /* deprecated, use dead_schwa instead */ #define XKB_KEY_dead_small_schwa 0xfe8a /* deprecated alias for dead_schwa */
#define XKB_KEY_dead_capital_schwa 0xfe8b /* deprecated, use dead_SCHWA instead */
#define XKB_KEY_dead_schwa 0xfe8a #define XKB_KEY_dead_schwa 0xfe8a
#define XKB_KEY_dead_capital_schwa 0xfe8b /* deprecated alias for dead_SCHWA */
#define XKB_KEY_dead_SCHWA 0xfe8b #define XKB_KEY_dead_SCHWA 0xfe8b
#define XKB_KEY_dead_greek 0xfe8c #define XKB_KEY_dead_greek 0xfe8c
@ -693,7 +734,7 @@ SOFTWARE.
#define XKB_KEY_diaeresis 0x00a8 /* U+00A8 DIAERESIS */ #define XKB_KEY_diaeresis 0x00a8 /* U+00A8 DIAERESIS */
#define XKB_KEY_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */ #define XKB_KEY_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */
#define XKB_KEY_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */ #define XKB_KEY_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */
#define XKB_KEY_guillemotleft 0x00ab /* deprecated misspelling. Use guillemetleft instead. */ #define XKB_KEY_guillemotleft 0x00ab /* deprecated alias for guillemetleft (misspelling) */
#define XKB_KEY_guillemetleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ #define XKB_KEY_guillemetleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
#define XKB_KEY_notsign 0x00ac /* U+00AC NOT SIGN */ #define XKB_KEY_notsign 0x00ac /* U+00AC NOT SIGN */
#define XKB_KEY_hyphen 0x00ad /* U+00AD SOFT HYPHEN */ #define XKB_KEY_hyphen 0x00ad /* U+00AD SOFT HYPHEN */
@ -709,9 +750,9 @@ SOFTWARE.
#define XKB_KEY_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */ #define XKB_KEY_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */
#define XKB_KEY_cedilla 0x00b8 /* U+00B8 CEDILLA */ #define XKB_KEY_cedilla 0x00b8 /* U+00B8 CEDILLA */
#define XKB_KEY_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */ #define XKB_KEY_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */
#define XKB_KEY_masculine 0x00ba /* deprecated inconsistent name (see ordfeminine), use ordmasculine instead */ #define XKB_KEY_masculine 0x00ba /* deprecated alias for ordmasculine (inconsistent name) */
#define XKB_KEY_ordmasculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */ #define XKB_KEY_ordmasculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */
#define XKB_KEY_guillemotright 0x00bb /* deprecated misspelling. Use guillemotright instead. */ #define XKB_KEY_guillemotright 0x00bb /* deprecated alias for guillemetright (misspelling) */
#define XKB_KEY_guillemetright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ #define XKB_KEY_guillemetright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
#define XKB_KEY_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */ #define XKB_KEY_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */
#define XKB_KEY_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */ #define XKB_KEY_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */
@ -1033,7 +1074,7 @@ SOFTWARE.
#define XKB_KEY_kana_N 0x04dd /* U+30F3 KATAKANA LETTER N */ #define XKB_KEY_kana_N 0x04dd /* U+30F3 KATAKANA LETTER N */
#define XKB_KEY_voicedsound 0x04de /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */ #define XKB_KEY_voicedsound 0x04de /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */
#define XKB_KEY_semivoicedsound 0x04df /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ #define XKB_KEY_semivoicedsound 0x04df /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
#define XKB_KEY_kana_switch 0xff7e /* Alias for Mode_switch */ #define XKB_KEY_kana_switch 0xff7e /* non-deprecated alias for Mode_switch */
/* /*
* Arabic * Arabic
@ -1130,7 +1171,7 @@ SOFTWARE.
#define XKB_KEY_Arabic_farsi_yeh 0x10006cc /* deprecated alias for Farsi_yeh */ #define XKB_KEY_Arabic_farsi_yeh 0x10006cc /* deprecated alias for Farsi_yeh */
#define XKB_KEY_Arabic_yeh_baree 0x10006d2 /* U+06D2 ARABIC LETTER YEH BARREE */ #define XKB_KEY_Arabic_yeh_baree 0x10006d2 /* U+06D2 ARABIC LETTER YEH BARREE */
#define XKB_KEY_Arabic_heh_goal 0x10006c1 /* U+06C1 ARABIC LETTER HEH GOAL */ #define XKB_KEY_Arabic_heh_goal 0x10006c1 /* U+06C1 ARABIC LETTER HEH GOAL */
#define XKB_KEY_Arabic_switch 0xff7e /* Alias for Mode_switch */ #define XKB_KEY_Arabic_switch 0xff7e /* non-deprecated alias for Mode_switch */
/* /*
* Cyrillic * Cyrillic
@ -1318,7 +1359,7 @@ SOFTWARE.
#define XKB_KEY_Greek_IOTA 0x07c9 /* U+0399 GREEK CAPITAL LETTER IOTA */ #define XKB_KEY_Greek_IOTA 0x07c9 /* U+0399 GREEK CAPITAL LETTER IOTA */
#define XKB_KEY_Greek_KAPPA 0x07ca /* U+039A GREEK CAPITAL LETTER KAPPA */ #define XKB_KEY_Greek_KAPPA 0x07ca /* U+039A GREEK CAPITAL LETTER KAPPA */
#define XKB_KEY_Greek_LAMDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */ #define XKB_KEY_Greek_LAMDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */
#define XKB_KEY_Greek_LAMBDA 0x07cb /* alias for Greek_LAMDA */ #define XKB_KEY_Greek_LAMBDA 0x07cb /* non-deprecated alias for Greek_LAMDA */
#define XKB_KEY_Greek_MU 0x07cc /* U+039C GREEK CAPITAL LETTER MU */ #define XKB_KEY_Greek_MU 0x07cc /* U+039C GREEK CAPITAL LETTER MU */
#define XKB_KEY_Greek_NU 0x07cd /* U+039D GREEK CAPITAL LETTER NU */ #define XKB_KEY_Greek_NU 0x07cd /* U+039D GREEK CAPITAL LETTER NU */
#define XKB_KEY_Greek_XI 0x07ce /* U+039E GREEK CAPITAL LETTER XI */ #define XKB_KEY_Greek_XI 0x07ce /* U+039E GREEK CAPITAL LETTER XI */
@ -1343,7 +1384,7 @@ SOFTWARE.
#define XKB_KEY_Greek_iota 0x07e9 /* U+03B9 GREEK SMALL LETTER IOTA */ #define XKB_KEY_Greek_iota 0x07e9 /* U+03B9 GREEK SMALL LETTER IOTA */
#define XKB_KEY_Greek_kappa 0x07ea /* U+03BA GREEK SMALL LETTER KAPPA */ #define XKB_KEY_Greek_kappa 0x07ea /* U+03BA GREEK SMALL LETTER KAPPA */
#define XKB_KEY_Greek_lamda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */ #define XKB_KEY_Greek_lamda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */
#define XKB_KEY_Greek_lambda 0x07eb /* alias for Greek_lamda */ #define XKB_KEY_Greek_lambda 0x07eb /* non-deprecated alias for Greek_lamda */
#define XKB_KEY_Greek_mu 0x07ec /* U+03BC GREEK SMALL LETTER MU */ #define XKB_KEY_Greek_mu 0x07ec /* U+03BC GREEK SMALL LETTER MU */
#define XKB_KEY_Greek_nu 0x07ed /* U+03BD GREEK SMALL LETTER NU */ #define XKB_KEY_Greek_nu 0x07ed /* U+03BD GREEK SMALL LETTER NU */
#define XKB_KEY_Greek_xi 0x07ee /* U+03BE GREEK SMALL LETTER XI */ #define XKB_KEY_Greek_xi 0x07ee /* U+03BE GREEK SMALL LETTER XI */
@ -1358,7 +1399,7 @@ SOFTWARE.
#define XKB_KEY_Greek_chi 0x07f7 /* U+03C7 GREEK SMALL LETTER CHI */ #define XKB_KEY_Greek_chi 0x07f7 /* U+03C7 GREEK SMALL LETTER CHI */
#define XKB_KEY_Greek_psi 0x07f8 /* U+03C8 GREEK SMALL LETTER PSI */ #define XKB_KEY_Greek_psi 0x07f8 /* U+03C8 GREEK SMALL LETTER PSI */
#define XKB_KEY_Greek_omega 0x07f9 /* U+03C9 GREEK SMALL LETTER OMEGA */ #define XKB_KEY_Greek_omega 0x07f9 /* U+03C9 GREEK SMALL LETTER OMEGA */
#define XKB_KEY_Greek_switch 0xff7e /* Alias for Mode_switch */ #define XKB_KEY_Greek_switch 0xff7e /* non-deprecated alias for Mode_switch */
/* /*
* Technical * Technical
@ -1608,7 +1649,7 @@ SOFTWARE.
#define XKB_KEY_hebrew_shin 0x0cf9 /* U+05E9 HEBREW LETTER SHIN */ #define XKB_KEY_hebrew_shin 0x0cf9 /* U+05E9 HEBREW LETTER SHIN */
#define XKB_KEY_hebrew_taw 0x0cfa /* U+05EA HEBREW LETTER TAV */ #define XKB_KEY_hebrew_taw 0x0cfa /* U+05EA HEBREW LETTER TAV */
#define XKB_KEY_hebrew_taf 0x0cfa /* deprecated */ #define XKB_KEY_hebrew_taf 0x0cfa /* deprecated */
#define XKB_KEY_Hebrew_switch 0xff7e /* Alias for Mode_switch */ #define XKB_KEY_Hebrew_switch 0xff7e /* non-deprecated alias for Mode_switch */
/* /*
* Thai * Thai
@ -1721,7 +1762,7 @@ SOFTWARE.
#define XKB_KEY_Hangul_MultipleCandidate 0xff3d /* Multiple candidate */ #define XKB_KEY_Hangul_MultipleCandidate 0xff3d /* Multiple candidate */
#define XKB_KEY_Hangul_PreviousCandidate 0xff3e /* Previous candidate */ #define XKB_KEY_Hangul_PreviousCandidate 0xff3e /* Previous candidate */
#define XKB_KEY_Hangul_Special 0xff3f /* Special symbols */ #define XKB_KEY_Hangul_Special 0xff3f /* Special symbols */
#define XKB_KEY_Hangul_switch 0xff7e /* Alias for Mode_switch */ #define XKB_KEY_Hangul_switch 0xff7e /* non-deprecated alias for Mode_switch */
/* Hangul Consonant Characters */ /* Hangul Consonant Characters */
#define XKB_KEY_Hangul_Kiyeog 0x0ea1 /* U+3131 HANGUL LETTER KIYEOK */ #define XKB_KEY_Hangul_Kiyeog 0x0ea1 /* U+3131 HANGUL LETTER KIYEOK */

View File

@ -2592,303 +2592,295 @@ static const char *keysym_names =
#endif #endif
static const uint16_t keysym_name_G[] = { static const uint16_t keysym_name_G[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1675, 0, 2816, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1042, 0, 490, 0, 2754, 0, 0, 0, 0, 91, 0, 0, 0, 2536, 0, 0, 0, 226, 0,
4049, 1115, 0, 0, 0, 917, 0, 0, 1753, 0, 3420, 1735, 1457, 0, 0, 2914, 0, 1419, 0, 0, 0, 0, 0, 650, 1573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 554,
0, 2762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 563, 0, 0, 2123, 1353, 0, 3981, 0, 0, 0, 3013, 0, 0, 3374, 0, 0, 0, 0, 0, 0, 2399, 3823, 2705, 0,
0, 0, 0, 3316, 0, 0, 734, 0, 0, 0, 2403, 0, 0, 0, 0, 0, 0, 2668, 0, 154, 0, 0, 1234, 0, 2378, 3563, 0, 373, 0, 0, 0, 316, 1528, 0, 2949, 0,
4061, 0, 0, 0, 0, 0, 0, 0, 0, 4175, 0, 2599, 0, 0, 0, 0, 4350, 0, 1610, 1003, 0, 1390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4341, 0, 0, 0, 0, 0, 0,
407, 0, 2488, 0, 0, 0, 2530, 0, 0, 0, 0, 3229, 0, 4237, 3889, 0, 0, 22, 0, 3953, 0, 0, 1760, 4147, 0, 0, 966, 0, 0, 2684, 0, 0, 0, 0, 784, 0,
0, 0, 0, 0, 2873, 0, 3501, 3373, 0, 638, 0, 0, 0, 0, 0, 0, 0, 0, 3322, 2851, 655, 0, 0, 0, 0, 4316, 0, 3996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3837,
0, 0, 0, 0, 0, 0, 3068, 0, 0, 831, 0, 3287, 2687, 0, 0, 0, 0, 2958, 0, 0, 1350, 1469, 2150, 0, 0, 0, 0, 3125, 0, 0, 0, 0, 2453, 1892, 0, 484,
0, 0, 0, 0, 0, 0, 0, 0, 0, 695, 780, 0, 0, 0, 0, 0, 0, 136, 2149, 1446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 462, 2363, 0, 0, 0, 3486, 2373, 0, 1560,
0, 4092, 0, 2547, 1473, 4566, 2147, 0, 656, 3737, 0, 0, 0, 0, 0, 0, 863, 3024, 2755, 0, 0, 248, 0, 3229, 0, 681, 0, 0, 3048, 4176, 0, 0,
1569, 1334, 200, 0, 0, 0, 0, 1947, 0, 0, 0, 0, 0, 0, 4460, 0, 4024, 0, 3451, 2837, 2929, 0, 0, 3725, 0, 0, 2628, 3124, 789, 2858, 0, 0, 0, 0,
0, 69, 0, 0, 0, 0, 4387, 0, 0, 0, 0, 0, 1780, 0, 1443, 0, 0, 0, 4152, 3686, 0, 0, 748, 0, 0, 3977, 3988, 0, 1610, 0, 443, 0, 0, 0, 0, 0,
1580, 0, 284, 0, 3505, 0, 3872, 0, 0, 0, 0, 2795, 4462, 0, 0, 0, 0, 0, 2724, 0, 791, 2168, 0, 0, 726, 0, 0, 0, 1496, 0, 100, 0, 0, 0, 0, 302,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1292, 0, 0, 4362, 0, 2454, 0, 0, 3059, 0, 4388, 0, 1916, 0, 0, 0, 0, 1863, 0, 3863, 0, 2321, 3300, 1445,
1868, 0, 0, 0, 0, 2160, 0, 0, 0, 32, 727, 0, 0, 2818, 0, 1071, 0, 2922, 2365, 0, 0, 0, 0, 3555, 3282, 1679, 0, 1743, 1935, 0, 0, 0, 1995, 0,
0, 0, 0, 0, 1367, 0, 0, 0, 0, 1483, 0, 0, 2308, 0, 0, 0, 0, 1421, 0, 0, 2491, 0, 0, 3503, 2364, 1771, 0, 0, 0, 4092, 447, 463, 0, 0, 4168, 0,
2253, 0, 0, 0, 0, 0, 0, 0, 0, 4373, 0, 0, 0, 4330, 4323, 0, 0, 0, 0, 0, 3865, 0, 1244, 0, 1509, 4164, 3233, 248, 1777, 0, 0, 1655, 0, 3718, 0,
0, 0, 0, 0, 0, 561, 0, 0, 0, 1678, 0, 0, 1324, 0, 0, 0, 1690, 2186, 0, 138, 0, 0, 0, 0, 1776, 30, 0, 0, 0, 2396, 0, 0, 3541, 0, 484, 1383,
4186, 0, 0, 0, 4171, 0, 1954, 0, 781, 0, 0, 0, 0, 0, 291, 0, 3992, 0, 899, 0, 0, 848, 3119, 0, 1457, 0, 0, 1139, 0, 0, 0, 3910, 1027, 0, 708,
0, 0, 0, 0, 0, 0, 0, 0, 1702, 1523, 0, 2906, 1503, 1876, 0, 0, 0, 0, 0, 3584, 0, 2415, 0, 0, 0, 0, 764, 1645, 0, 0, 1784, 772, 4369, 0, 4253,
4173, 3993, 0, 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, 3254, 0, 0, 0, 844, 0, 1854, 0, 0, 3735, 2048, 0, 1356, 0, 3612, 0, 0, 0, 0, 4237, 2260, 1160,
1181, 2781, 0, 0, 2291, 796, 4448, 1416, 0, 0, 0, 0, 0, 1670, 0, 0, 0, 205, 3082, 0, 1806, 98, 0, 0, 0, 0, 0, 1105, 3665, 87, 0, 2494, 0,
0, 0, 0, 0, 0, 0, 1957, 0, 0, 0, 2774, 0, 664, 0, 0, 2095, 3593, 4621, 2462, 0, 896, 1820, 0, 419, 3994, 2127, 0, 38, 0, 2441, 0, 3266, 1844,
0, 2629, 0, 0, 2619, 177, 4201, 0, 1878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1785, 4391, 2745, 0, 0, 3195, 0, 0, 3848, 0, 0, 1567, 2881, 0, 2368, 0,
0, 889, 773, 0, 0, 0, 261, 1096, 0, 2802, 0, 0, 0, 0, 0, 0, 0, 1117, 644, 3143, 2442, 2132, 0, 2781, 0, 0, 3932, 0, 0, 0, 0, 0, 773, 0,
1434, 0, 0, 1891, 0, 0, 2671, 0, 2398, 0, 0, 0, 0, 0, 2894, 0, 0, 1605, 1991, 0, 3910, 4059, 0, 2309, 0, 0, 849, 555, 823, 0, 533, 0, 0, 0,
0, 0, 0, 0, 0, 1553, 0, 0, 0, 441, 0, 0, 3314, 3499, 1764, 4475, 3264, 2410, 0, 3420, 79, 1786, 0, 1050, 0, 0, 3631, 0, 0, 0, 0, 0, 472, 0,
0, 230, 2907, 3545, 1881, 0, 2007, 0, 0, 0, 276, 0, 0, 1970, 0, 0, 0, 1381, 0, 0, 1991, 4390, 0, 2881, 2689, 1389, 1739, 0, 3384, 0, 2558,
2243, 2300, 3639, 50, 0, 0, 662, 2071, 2431, 794, 0, 0, 76, 4334, 0, 0, 3451, 867, 0, 0, 0, 750, 0, 0, 0, 0, 3175, 1114, 0, 0, 3710, 0, 0, 0,
0, 0, 4523, 0, 524, 2519, 2765, 45, 31, 0, 4144, 3415, 0, 0, 0, 0, 0, 1088, 78, 0, 3195, 0, 0, 460, 1787, 0, 1023, 17, 1863, 0, 1004, 0, 0,
0, 0, 1339, 0, 0, 0, 2348, 0, 0, 0, 0, 0, 0, 1354, 2271, 3167, 0, 2659, 0, 787, 2741, 0, 2092, 0, 1532, 0, 0, 0, 3276, 0, 0, 583, 0, 2967,
0, 110, 0, 1626, 4201, 1468, 0, 2168, 0, 3251, 0, 1279, 0, 1414, 192, 2292, 0, 0, 3308, 1941, 3372, 4322, 0, 0, 1698, 2896, 0, 0, 929, 3573,
0, 2303, 917, 0, 2249, 0, 0, 0, 0, 204, 0, 2280, 3765, 0, 3456, 0, 0, 3193, 0, 0, 2181, 2117, 0, 288, 0, 0, 0, 685, 0, 90, 3771, 2039, 1046,
0, 0, 383, 0, 0, 0, 0, 4374, 0, 338, 2996, 2546, 0, 1232, 3643, 0, 0, 0, 2216, 0, 2655, 0, 0, 26, 0, 1016, 2084, 0, 591, 0, 1942, 0, 1158,
1303, 0, 0, 3545, 2166, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 960, 0, 0, 0, 0, 4213, 1853, 0, 4121, 2735, 0, 0, 1711, 1434, 0, 0, 0, 1247, 3608,
4398, 1692, 1861, 4364, 0, 1152, 0, 0, 1081, 0, 3493, 1715, 2219, 3771, 943, 0, 0, 3957, 0, 0, 2564, 482, 0, 0, 2238, 0, 0, 0, 3456, 1659,
1970, 4012, 2439, 2562, 0, 0, 0, 4332, 2287, 0, 4265, 216, 4257, 661, 3793, 3222, 2039, 0, 0, 0, 1321, 2398, 4383, 0, 0, 0, 167, 0, 492,
4004, 2422, 0, 3870, 0, 0, 0, 0, 0, 2564, 225, 1185, 1372, 3667, 2089, 3132, 2470, 0, 0, 0, 1239, 938, 0, 1738, 4394, 3035, 3266, 0, 0, 189,
1839, 0, 0, 0, 2319, 0, 0, 703, 0, 0, 0, 130, 1094, 0, 0, 0, 0, 0, 0, 2232, 3138, 0, 0, 3749, 1137, 2535, 2735, 0, 0, 2897, 2711, 15, 1027,
0, 4594, 4405, 2496, 1812, 0, 0, 2487, 0, 0, 1797, 1628, 0, 0, 4602, 0, 0, 306, 2229, 2016, 3174, 0, 0, 0, 0, 173, 1012, 2039, 1965, 1644,
0, 4368, 0, 0, 0, 1006, 335, 387, 0, 0, 0, 0, 0, 0, 0, 0, 4017, 2048, 3328, 1325, 0, 0, 87, 0, 0, 0, 118, 2968, 3659, 3285, 0, 519, 1660,
333, 0, 385, 0, 3563, 0, 3853, 0, 0, 0, 2050, 2629, 1442, 0, 0, 0, 382, 2099, 0, 0, 1659, 686, 0, 0, 0, 0, 47, 134, 1790, 0, 3904, 2750, 1045,
0, 2581, 2986, 839, 2913, 0, 0, 3467, 0, 4030, 2322, 0, 1288, 0, 0, 0, 0, 0, 3535, 0, 3449, 0, 2955, 1258, 0, 3072, 2173, 528, 1662, 0, 0,
0, 0, 0, 469, 0, 0, 0, 0, 0, 0, 0, 2357, 0, 3542, 0, 0, 0, 616, 0, 4124, 0, 647, 3650, 410, 0, 0, 1838, 2677, 0, 485, 0, 0, 3078, 4399, 0,
4145, 0, 0, 0, 0, 1905, 0, 0, 2069, 0, 0, 0, 3431, 0, 848, 0, 0, 0, 0, 3700, 0, 0, 2252, 752, 0, 0, 0, 1132, 1597, 0, 0, 1573, 3215, 0, 0,
2440, 0, 0, 0, 64, 0, 3540, 0, 2001, 2881, 0, 1032, 676, 0, 2913, 2240, 2351, 310, 0, 0, 3778, 755, 1959, 4151, 816, 0, 1986, 0, 0, 0, 0, 2346,
1248, 0, 0, 0, 0, 1048, 0, 0, 3676, 1976, 0, 1207, 0, 1196, 0, 1139, 0, 3290, 1550, 0, 0, 0, 0, 0, 2069, 0, 0, 0, 2921, 241, 4339, 0, 2796,
3142, 0, 2805, 0, 0, 0, 0, 0, 582, 0, 0, 0, 0, 596, 1997, 0, 2350, 0, 0, 2315, 0, 4261, 2035, 1399, 1268, 3305, 0, 0, 3158, 0, 1448, 0, 678,
4534, 0, 782, 0, 1958, 0, 1406, 0, 0, 0, 3922, 0, 1382, 3788, 3584, 0, 0, 0, 840, 1236, 2448, 3140, 0, 0, 0, 0, 0, 4327, 0, 587, 0, 3776, 0,
0, 3440, 0, 0, 596, 0, 0, 0, 254, 0, 330, 0, 0, 0, 0, 0, 149, 975, 0, 3701, 0, 0, 0, 2655, 0, 0, 0, 1978, 0, 0, 0, 0, 0, 358, 1498, 3445,
0, 187, 0, 0, 0, 644, 0, 4437, 0, 483, 3373, 692, 0, 0, 0, 0, 543, 0, 886, 0, 0, 0, 0, 0, 3980, 2738, 0, 0, 835, 0, 2298, 0, 1370, 0, 0,
0, 0, 0, 2913, 236, 232, 0, 0, 1897, 3276, 1556, 0, 3760, 3365, 0, 0, 1756, 2312, 1848, 1648, 1723, 0, 0, 0, 1574, 0, 0, 0, 0, 1492, 743, 0,
0, 0, 0, 2009, 1325, 0, 707, 0, 2517, 3342, 0, 2753, 1940, 0, 410, 0, 0, 2416, 0, 0, 0, 0, 0, 2717, 0, 2373, 0, 0, 1914, 1000, 4102, 0,
4608, 0, 0, 1235, 3703, 2267, 0, 742, 1860, 0, 0, 0, 4032, 0, 1112, 1088, 0, 0, 2101, 521, 2163, 186, 979, 1511, 0, 0, 2220, 3396, 0, 2675,
3793, 0, 0, 1336, 1604, 1708, 0, 664, 0, 4046, 0, 0, 0, 176, 940, 0, 0, 0, 0, 1627, 521, 3053, 3385, 0, 2901, 0, 280, 0, 2779, 0, 4282, 0, 0,
1421, 0, 0, 844, 3043, 2047, 0, 0, 0, 542, 0, 0, 931, 1836, 1659, 1500, 0, 0, 260, 3536, 3705, 416, 2032, 0, 1075, 2368, 0, 3396, 0, 1605, 0,
0, 0, 2486, 0, 1335, 3432, 0, 1730, 1729, 0, 4483, 4316, 0, 0, 0, 2157, 0, 4384, 0, 4101, 1881, 0, 0, 1130, 0, 0, 0, 996, 315, 0, 0, 0, 2362,
654, 0, 1004, 0, 0, 0, 4381, 0, 0, 0, 0, 793, 1302, 855, 2245, 0, 0, 0, 148, 0, 4230, 0, 0, 944, 0, 1181, 1047, 778, 1788, 0, 1066, 0, 3247,
2603, 0, 0, 855, 0, 1485, 0, 0, 4492, 3042, 2389, 1003, 671, 1965, 0, 784, 0, 786, 0, 0, 0, 0, 1372, 0, 0, 1876, 0, 153, 438, 1676, 4157, 0,
4456, 0, 3016, 0, 4245, 0, 0, 829, 0, 2608, 0, 284, 1692, 0, 0, 0, 0, 0, 3419, 4140, 388, 0, 0, 0, 742, 1220, 0, 328, 0, 3753, 3079, 0, 4356,
0, 2471, 0, 0, 1152, 0, 3120, 0, 0, 1212, 0, 0, 0, 1579, 0, 3225, 3499, 3581, 1002, 0, 1706, 1227, 3629, 0, 3543, 0, 3340, 0, 1282, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1683, 3507, 0, 0, 911, 0, 0, 0, 0, 3428, 0, 0, 75, 1918, 911, 1209, 156, 1316, 0, 0, 1331, 3506, 0, 2254,
1653, 0, 1444, 1510, 731, 2001, 2671, 988, 0, 0, 0, 3331, 607, 0, 1033, 0, 4103, 754, 2059, 0, 2445, 2536, 0, 0, 0, 0, 1720, 1060, 2281, 3400,
58, 1723, 923, 0, 0, 0, 0, 239, 0, 2347, 0, 0, 745, 0, 0, 0, 0, 0, 0, 3095, 0, 0, 0, 2195, 1294, 0, 3097, 1352, 3303, 0, 1382, 1695, 1892, 0,
0, 1512, 0, 0, 0, 1272, 0, 0, 1055, 395, 0, 973, 0, 1409, 0, 2396, 0, 0, 1012, 0, 2774, 3024, 3998, 0, 0, 0, 0, 877, 1381, 1526, 0, 996,
0, 4011, 2341, 367, 0, 0, 0, 1871, 0, 3680, 0, 53, 0, 0, 0, 0, 0, 0, 0, 1978, 681, 4235, 0, 2551, 4269, 0, 838, 2181, 3767, 0, 0, 0, 4044, 0,
2655, 1884, 2532, 0, 0, 2168, 1645, 0, 2637, 1686, 0, 0, 733, 3786, 0, 160, 0, 0, 0, 0, 240, 0, 0, 3569, 311, 0, 2662, 2157, 0, 0, 282, 0,
1116, 4493, 1142, 0, 3437, 3420, 0, 0, 0, 1609, 1869, 0, 4478, 0, 0, 0, 0, 3966, 3004, 4362, 458, 2934, 0, 0, 0, 215, 3121, 0, 3340, 4107,
0, 2391, 912, 0, 4377, 0, 0, 3622, 3440, 0, 1400, 4276, 1153, 2275, 0, 2477, 0, 3874, 1786, 0, 1223, 1717, 0, 0, 0, 0, 0, 544, 0, 0, 3617, 0,
0, 4037, 1252, 0, 0, 3562, 1262, 527, 0, 0, 0, 3293, 505, 0, 1404, 0, 3198, 0, 0, 0, 0, 0, 0, 0, 0, 2772, 0, 3854, 376, 4203, 2224, 3734,
1355, 0, 1594, 0, 0, 1223, 0, 4526, 0, 0, 0, 1335, 0, 3394, 571, 0, 0, 0, 1793, 4160, 611, 0, 0, 2284, 1949, 0, 3861, 2017, 1683, 542, 544,
2775, 547, 0, 0, 3328, 1256, 0, 0, 2841, 1532, 0, 0, 0, 2232, 3731, 2, 605, 0, 0, 4037, 890, 0, 0, 3840, 2316, 0, 0, 1830, 0, 0, 1959, 2092,
0, 1733, 1306, 0, 0, 2519, 3304, 0, 0, 4158, 0, 0, 0, 4286, 4016, 2071, 0, 3987, 0, 0, 0, 2238, 248, 893, 1869, 0, 0, 1779, 0, 0, 3736, 330, 0,
0, 4023, 3512, 783, 4325, 3994, 0, 0, 4361, 0, 1964, 0, 0, 0, 85, 0, 0, 0, 3710, 0, 83, 0, 2128, 0, 1827, 0, 0, 0, 323, 0, 0, 0, 701, 708,
1325, 2001, 2306, 0, 0, 0, 0, 0, 0, 4040, 0, 835, 1337, 60, 0, 0, 1197, 863, 2613, 469, 0, 0, 626, 0, 0, 0, 0, 1410, 4066, 1027, 3660, 887,
2258, 4029, 0, 0, 1865, 0, 2290, 0, 0, 2926, 3237, 3018, 0, 0, 1436, 0, 847, 631, 0, 0, 0, 0, 0, 715, 2708, 761, 3030, 0, 0, 939, 2992, 0, 0,
0, 4527, 0, 1131, 0, 192, 580, 4314, 0, 1457, 679, 2538, 1248, 431, 3137, 0, 2858, 0, 2748, 184, 1400, 3862, 4129, 0, 0, 1906, 1263, 1257,
3921, 0, 0, 0, 0, 0, 429, 0, 735, 0, 1716, 0, 0, 0, 0, 378, 3984, 0, 3311, 3630, 0, 0, 0, 1980, 0, 2273, 577, 3748, 0, 0, 2035, 1194, 2869,
825, 0, 0, 0, 2233, 0, 1249, 1123, 3647, 0, 0, 491, 1440, 0, 709, 75, 858, 3791, 2693, 1954, 3623, 0, 1030, 0, 0, 0, 2479, 0, 0, 0, 1897,
2302, 0, 485, 0, 1569, 0, 0, 0, 610, 2498, 0, 0, 3297, 0, 2597, 1282, 331, 3528, 2478, 0, 1881, 0, 3921, 1390, 3894, 2423, 1642, 3661, 0, 0,
708, 0, 519, 195, 0, 0, 0, 2156, 424, 1717, 0, 0, 1774, 0, 0, 2976, 0, 4097, 0, 3678, 1028, 294, 993, 2040, 0, 0, 10, 2729, 0, 258, 188,
1148, 0, 0, 0, 1516, 4227, 1455, 1721, 2062, 0, 0, 0, 1693, 1867, 0, 318, 2892, 2411, 3278, 411, 0, 0, 0, 1258, 2477, 0, 1002, 1626, 0, 0,
73, 0, 0, 4425, 433, 0, 1867, 0, 0, 4437, 0, 0, 3027, 0, 0, 4579, 816, 1295, 0, 368, 0, 0, 0, 0, 0, 4216, 0, 1747, 0, 1625, 0, 1953, 3095,
2127, 0, 0, 4597, 0, 0, 3384, 2351, 3508, 0, 495, 656, 0, 0, 2956, 2640, 0, 1393, 415, 0, 0, 1854, 0, 2498, 1453, 1704, 0, 0, 1347, 0,
4402, 0, 493, 3129, 821, 260, 0, 2189, 4321, 0, 0, 0, 789, 1807, 0, 3892, 1006, 0, 1832, 0, 700, 3704, 1246, 0, 593, 654, 0, 0, 0, 0, 4013,
3014, 3928, 254, 0, 3410, 3129, 2376, 0, 0, 1903, 1823, 0, 827, 1584, 0, 1758, 0, 1425, 0, 2393, 455, 2965, 4184, 0, 0, 0, 0, 2186, 347,
4318, 0, 0, 517, 0, 0, 1483, 0, 4364, 0, 4602, 1955, 3915, 3132, 0, 0, 3477, 0, 0, 1881, 0, 0, 318, 4300, 666, 0, 0, 0, 2525, 0, 0, 0, 0, 0,
4389, 0, 0, 535, 1936, 2357, 3477, 4291, 0, 4207, 1240, 1476, 4597, 1319, 1191, 892, 0, 2041, 91, 662, 0, 0, 2121, 0, 854, 0, 904, 3064, 0,
132, 0, 0, 0, 0, 4533, 0, 3522, 0, 11, 3069, 4539, 1464, 2112, 721, 2934, 0, 647, 0, 4028, 3957, 0, 1447, 1434, 0, 0, 626, 0, 0, 2137,
3111, 305, 1270, 873, 2200, 0, 2893, 1150, 1614, 0, 0, 2014, 3754, 181, 3551, 0, 900, 3517, 0, 2186, 2176, 0, 5, 1729, 2574, 1299, 4005, 719,
4470, 1303, 3373, 4052, 0, 0, 0, 391, 2158, 4004, 0, 0, 0, 0, 2745, 0, 0, 832, 0, 0, 0, 0, 1870, 0, 379, 0, 0, 246, 61, 1066, 3914, 1499,
1054, 527, 1776, 715, 0, 4411, 0, 4118, 525, 1447, 2190, 0, 991, 4407, 1669, 971, 0, 0, 0, 2228, 0, 0, 941, 3621, 0, 0, 0, 0, 2332, 0, 0,
3614, 0, 950, 962, 3908, 603, 0, 2820, 4276, 0, 2519, 1426, 0, 4539, 2624, 0, 0, 1956, 1154, 0, 1072, 0, 0, 3239, 3053, 0, 915, 884, 3519,
3155, 989, 0, 2366, 2378, 3584, 2616, 0, 0, 429, 2509, 0, 0, 82, 3899, 2407, 3329, 3206, 603, 0, 0, 631, 4328, 767, 0, 1912, 833, 0, 3759,
2517, 2995, 227, 180, 27, 0, 0, 1742, 938, 0, 510, 1933, 1948, 3960, 2330, 1644, 182, 2661, 2231, 0, 673, 0, 0, 3909, 1861, 0, 691, 2450,
499, 1255, 0, 0, 1124, 0, 421, 969, 0, 4352, 0, 0, 3295, 0, 0, 2945, 1697, 781, 0, 3074, 0, 788, 0, 0, 0, 0, 77, 0, 0, 1574, 3096, 0, 0,
4480, 3368, 2958, 0, 1407, 0, 785, 0, 780, 1022, 0, 1804, 1799, 0, 4033, 0, 0, 3905, 1750, 3123, 1653, 1876, 0, 0, 1405, 47, 1935, 2794,
3827, 0, 0, 2100, 0, 0, 3404, 0, 0, 2076, 2346, 1478, 344, 3854, 3439, 0, 3609, 3588, 0, 797, 0, 1708, 3070, 2605, 0, 754, 293, 1847, 80, 0,
0, 3893, 4110, 705, 2845, 0, 0, 1448, 543, 2986, 2360, 0, 270, 3570, 0, 0, 611, 443, 0, 4137, 276, 1899, 0, 0, 0, 0, 2834, 0, 340, 3070, 1569,
3473, 4368, 0, 1995, 1011, 0, 4321, 0, 0, 0, 791, 3572, 0, 1000, 0, 0, 3466, 2160, 0, 688, 0, 1260, 2923, 0, 355, 0, 291, 0, 0, 373, 0, 0,
396, 3217, 0, 0, 0, 2191, 0, 1125, 3519, 0, 1900, 214, 0, 0, 0, 0, 0, 1954, 2150, 3259, 2097, 2653, 1624, 0, 3779, 0, 0, 1063, 382, 0, 2241,
82, 948, 2347, 0, 0, 0, 0, 0, 0, 2439, 1973, 786, 3512, 0, 66, 0, 531, 3943, 1998, 0, 0, 587, 0, 1347, 0, 924, 0, 0, 0, 2670, 1902, 2769, 0,
2308, 960, 0, 0, 0, 0, 0, 0, 3424, 849, 1444, 376, 2338, 1231, 1849, 0, 1242, 0, 0, 0, 3048, 1310, 0, 3543, 0, 0, 2355, 0, 0, 1603, 4317,
4356, 4354, 318, 1377, 0, 1805, 0, 1622, 4335, 799, 0, 4441, 0, 0, 966, 1965, 0, 0, 2511, 918, 0, 3150, 0, 3781, 2227, 1481, 0, 1069, 0, 1878,
2015, 236, 4607, 4326, 0, 3190, 352, 2588, 2467, 1730, 396, 0, 0, 0, 0, 482, 1653, 4038, 0, 153, 0, 1273, 3671, 2825, 4115, 0, 229, 0, 0, 0, 0,
3974, 0, 4313, 0, 0, 0, 1306, 551, 3465, 340, 629, 345, 638, 4471, 654, 426, 663, 1153, 2344, 0, 0, 0, 0, 3881, 2320, 0, 3919, 1095, 0,
1952, 4002, 0, 0, 0, 0, 3950, 0, 1922, 2926, 0, 2971, 4092, 0, 985, 0, 2033, 0, 0, 3681, 2413, 0, 767, 697, 1867, 321, 0, 601, 1852, 1013,
0, 2236, 1614, 1612, 851, 3388, 0, 3039, 3211, 0, 0, 4214, 3317, 0, 0, 2427, 0, 985, 2484, 0, 3245, 0, 728, 1299, 0, 0, 0, 2721, 0, 0, 0,
1943, 796, 2341, 2602, 0, 0, 3007, 3020, 2175, 1418, 1599, 0, 4445, 2192, 309, 0, 0, 2062, 0, 0, 2631, 2363, 874, 910, 1910, 0, 0, 2481,
1539, 1600, 2348, 3508, 1366, 547, 2777, 1114, 1986, 0, 4038, 2046, 3685, 4188, 1185, 1731, 3307, 0, 2485, 1089, 1580, 0, 0, 2716, 0, 0, 0,
480, 0, 0, 383, 0, 4535, 0, 360, 0, 0, 2373, 0, 2242, 0, 0, 0, 0, 1581, 2348, 2168, 0, 0, 1151, 0, 0, 242, 0, 162, 564, 0, 0, 739, 0, 0, 0, 0,
0, 517, 1983, 4334, 1117, 2656, 2531, 3446, 2758, 0, 1674, 69, 0, 2909, 1758, 1620, 0, 1252, 1881, 3114, 0, 0, 1924, 3206, 0, 903, 859, 1850,
741, 0, 447, 0, 0, 2594, 3921, 0, 0, 3942, 1506, 342, 3200, 458, 0, 0, 911, 0, 278, 0, 0, 0, 0, 1262, 0, 1568, 1628, 0, 2607, 0, 0, 1969,
1122, 0, 0, 557, 95, 3652, 2902, 79, 1319, 0, 4599, 628, 1566, 0, 0, 0, 710, 2199, 2488, 1577, 0, 3738, 0, 0, 2335, 0, 2428, 1591, 3357, 768,
4561, 2021, 2678, 4081, 1783, 1749, 1194, 0, 419, 981, 0, 2282, 44, 264, 0, 0, 2153, 0, 4172, 1571, 0, 0, 4274, 0, 1374, 757, 1560, 0,
467, 4318, 0, 0, 652, 1026, 4610, 3874, 1881, 0, 4335, 0, 0, 0, 308, 3770, 0, 0, 0, 2721, 131, 0, 0, 912, 4168, 0, 1348, 2513, 574, 2967, 0,
1663, 2119, 965, 0, 4216, 1737, 464, 0, 0, 4429, 1471, 813, 0, 388, 0, 3301, 3096, 1677, 2232, 0, 1727, 0, 0, 164, 1636, 0, 0, 3125, 0,
1374, 0, 0, 0, 17, 0, 4608, 0, 0, 2213, 0, 717, 0, 0, 0, 3842, 0, 2577, 1719, 592, 0, 0, 1945, 2961, 0, 0, 0, 3669, 0, 316, 3002, 2285, 302,
0, 0, 1737, 0, 0, 0, 283, 0, 0, 0, 2011, 0, 0, 0, 743, 834, 3155, 0, 0, 1108, 3652, 0, 4252, 1308, 0, 33, 994, 0, 2300, 0, 4396, 345, 0, 0, 0,
0, 499, 0, 2591, 1336, 2035, 3365, 0, 1189, 3837, 4549, 649, 0, 2420, 0, 2146, 0, 0, 3022, 254, 0, 2900, 0, 1599, 3203, 2013, 0, 0, 0, 3116,
523, 0, 3055, 0, 2450, 0, 1452, 0, 2596, 451, 4386, 2232, 0, 1215, 0, 3124, 675, 0, 3752, 2157, 148, 2489, 669, 0, 921, 2506, 3165, 749,
3509, 608, 0, 923, 0, 1376, 4256, 4600, 2094, 0, 0, 0, 0, 47, 1088, 0, 2591, 2763, 0, 1521, 0, 2308, 2086, 3618, 4178, 0, 0, 0, 2473, 3796,
2403, 1083, 0, 0, 4217, 4525, 370, 1257, 294, 3192, 456, 761, 1861, 0, 969, 1554, 1707, 0, 0, 0, 0, 1925, 3081, 763, 0, 0, 1931, 0, 1355,
723, 0, 0, 4257, 0, 0, 0, 2483, 4151, 0, 1883, 0, 0, 2552, 0, 192, 0, 0, 2314, 2089, 4214, 0, 1682, 0, 71, 976, 0, 2982, 3904, 4068, 591,
2612, 0, 0, 530, 0, 2039, 0, 0, 4000, 1744, 0, 0, 0, 0, 0, 0, 0, 0, 83, 1209, 0, 0, 0, 1641, 0, 965, 947, 2471, 1932, 0, 0, 1714, 0, 3995, 0,
0, 141, 2521, 0, 2114, 528, 868, 0, 0, 91, 4059, 0, 1046, 0, 0, 1384, 0, 337, 0, 3798, 1966, 2456, 0, 1278, 1938, 0, 0, 173, 0, 0, 0, 496,
3301, 4619, 194, 527, 2222, 78, 1388, 4482, 0, 2437, 0, 1739, 3875, 266, 0, 0, 0, 1553, 3815, 877, 0, 349, 0, 1313, 2103, 0, 4203, 0, 0, 0,
211, 4592, 688, 2178, 2450, 0, 412, 0, 0, 0, 2979, 624, 0, 3968, 4334, 1771, 2377, 1203, 397, 0, 309, 0, 2770, 1403, 0, 0, 0, 0, 0, 3609,
0, 3487, 2267, 4607, 0, 3256, 0, 4009, 591, 0, 986, 3408, 3823, 0, 0, 3517, 0, 0, 844, 0, 0, 0, 0, 907, 1176, 558, 1815, 0, 66, 555, 0, 1214,
0, 1112, 0, 0, 2114, 2482, 4367, 0, 4389, 0, 0, 3062, 2740, 1183, 0, 0, 1261, 0, 0, 0, 0, 3631, 0, 0, 2388, 0, 0, 2216, 123, 0, 0, 521, 116,
2064, 0, 0, 1842, 1484, 1637, 0, 0, 119, 2256, 0, 1297, 0, 2983, 41, 0, 0, 0, 0, 851, 0, 3759, 0, 1554, 0, 0, 2670, 2647, 0, 1334, 916, 0, 0,
0, 3261, 4008, 2127, 2456, 0, 0, 0, 1470, 0, 0, 0, 118, 3064, 2109, 0, 0, 3869, 927, 0, 2094, 2679, 3430, 0, 523, 369, 2303, 1666, 0, 0, 0,
3424, 0, 3880, 0, 2573, 4316, 3161, 0, 0, 2386, 2223, 0, 183, 1361, 0, 3793, 0, 0, 3034, 0, 2006, 0, 4141, 3285, 0, 1165, 2159, 3097, 0, 0,
1184, 1714, 1003, 0, 181, 397, 4398, 2136, 0, 3059, 4471, 4574, 1275, 1280, 0, 1467, 1889, 0, 2402, 0, 0, 3351, 0, 2927, 0, 1274, 162, 1156,
4420, 0, 0, 0, 3105, 668, 0, 1657, 0, 4333, 1205, 0, 402, 0, 0, 504, 1767, 0, 69, 1552, 189, 38, 680, 0, 3915, 2020, 4023, 0, 0, 4142, 3772,
3715, 976, 2085, 2999, 0, 2498, 0, 2150, 272, 0, 1007, 1864, 1541, 0, 0, 0, 1828, 2118, 0, 229, 0, 2184, 0, 338, 952, 2205, 0, 3061, 1941,
2509, 4215, 1482, 0, 3932, 462, 0, 2226, 1392, 847, 923, 0, 0, 0, 0, 353, 0, 0, 2472, 3304, 940, 0, 3521, 0, 0, 0, 4170, 0, 0, 1185, 0, 0,
3703, 0, 60, 0, 3197, 689, 0, 0, 0, 0, 1244, 56, 4249, 0, 0, 602, 0, 2517, 2695, 2345, 773, 706, 0, 0, 0, 702, 3498, 341, 0, 0, 254, 1467,
1362, 1970, 0, 1189, 720, 3966, 0, 3939, 4503, 1474, 3782, 309, 0, 0, 3786, 0, 1915, 0, 3631, 2861, 4101, 0, 1007, 2851, 0, 0, 0, 0, 0, 303,
2640, 2210, 904, 3072, 426, 2990, 1770, 3059, 0, 0, 1512, 0, 3422, 971, 0, 1107, 1814, 0, 0, 2886, 1686, 284, 1118, 0, 3666, 0, 3689,
3859, 0, 4489, 1401, 2273, 570, 390, 2514, 4180, 1561, 2196, 596, 4617, 3842, 3320, 2162, 91, 2412, 83, 1067, 0, 1066, 0, 3606, 2965, 0, 2965,
1209, 0, 947, 0, 3707, 0, 933, 3833, 0, 842, 1334, 0, 4471, 9, 2411, 0, 2418, 1799, 0, 2851, 0, 0, 3412, 3347, 574, 0, 1163, 0, 3307, 0,
2815, 0, 112, 2077, 121, 0, 0, 0, 3574, 0, 0, 788, 0, 0, 4216, 0, 1485, 3913, 39, 979, 0, 766, 3716, 1182, 581, 3419, 0, 0, 1468, 1026, 0, 0,
0, 1919, 4046, 0, 623, 3930, 0, 0, 2995, 0, 0, 1963, 0, 0, 4290, 0, 0, 0, 1226, 393, 0, 0, 0, 0, 0, 1028, 0, 707, 0, 3005, 871, 0, 0, 3903,
991, 1504, 2540, 0, 0, 0, 199, 684, 2268, 0, 0, 770, 4152, 60, 2828, 0, 3015, 656, 831, 0, 3171, 0, 3622, 0, 0, 357, 0, 3440, 508, 1931, 0,
1986, 0, 579, 2454, 0, 0, 1607, 1213, 3993, 2532, 1121, 0, 3839, 0, 2331, 0, 0, 107, 3239, 2886, 1909, 1582, 0, 29, 0, 1398, 2847, 2222, 0,
945, 3334, 0, 1413, 1731, 250, 0, 0, 0, 1153, 1104, 1927, 1075, 4521, 2104, 0, 1460, 447, 2399, 4185, 0, 1780, 0, 218, 2016, 2889, 717, 0, 0,
0, 1730, 1328, 1406, 0, 1162, 1121, 3845, 1796, 0, 2376, 663, 3584, 0, 0, 3509, 1953, 0, 1469, 0, 0, 889, 0, 533, 3229, 409, 305, 60, 0, 0,
278, 0, 1547, 3394, 0, 0, 0, 0, 0, 1636, 0, 2167, 3923, 0, 705, 1932, 656, 0, 3656, 1439, 1957, 0, 0, 0, 208, 428, 3857, 3803, 4075, 565,
0, 852, 0, 4433, 0, 0, 0, 0, 0, 1524, 3195, 0, 0, 3246, 0, 2552, 1345, 2751, 0, 0, 0, 0, 509, 1601, 2340, 0, 1082, 1401, 2155, 2461, 1267, 0,
849, 545, 3616, 4318, 3112, 2026, 1202, 2266, 810, 0, 1020, 1811, 1058, 2974, 0, 1049, 0, 179, 0, 539, 2407, 1009, 2116, 2080, 1489, 0, 1412,
1831, 2019, 4216, 0, 0, 3666, 758, 0, 0, 1295, 1732, 0, 0, 0, 3428, 0, 0, 3158, 3157, 1114, 0, 0, 0, 0, 365, 4332, 3509, 0, 2927, 2733,
300, 0, 3389, 3947, 1294, 113, 0, 0, 0, 0, 490, 0, 1250, 0, 4246, 520, 789, 0, 1346, 1140, 1984, 229, 950, 0, 2111, 3575, 0, 0, 0, 2450, 0,
0, 484, 452, 648, 887, 0, 915, 0, 56, 1096, 4306, 0, 771, 0, 0, 0, 2373, 0, 1299, 0, 2806, 0, 0, 1381, 0, 0, 0, 1405, 1661, 0, 0, 0, 1141,
2625, 0, 0, 890, 1282, 3838, 0, 1252, 2545, 3318, 4104, 0, 2615, 0, 1155, 0, 0, 0, 3624, 0, 0, 0, 0, 0, 0, 2638, 385, 0, 0, 2226, 0, 0, 0,
870, 4124, 2127, 0, 2203, 0, 0, 0, 89, 3076, 189, 0, 0, 4170, 4480, 0, 0, 0, 3544, 0, 0, 3902, 3857, 0, 0, 2454, 2820, 0, 0, 2393, 622, 659,
2348, 163, 0, 1810, 2940, 0, 0, 0, 124, 2435, 835, 2902, 1733, 245, 0, 4364, 0, 0, 171, 349, 307, 0, 427, 1741, 0, 453, 4333, 0, 0, 636, 0,
0, 870, 0, 0, 2477, 3345, 666, 0, 0, 0, 0, 4290, 2922, 3986, 0, 0, 596, 2442, 69, 3056, 4389, 0, 0, 939, 0, 3974, 0, 0, 4281, 0, 3102, 356,
2946, 1297, 492, 0, 3212, 0, 0, 0, 2321, 0, 598, 960, 0, 1220, 0, 0, 0, 1673, 369, 3073, 4048, 0, 238, 2466, 342, 0, 2137, 2169, 2937, 0, 553,
3399, 0, 1197, 0, 0, 0, 2455, 0, 522, 0, 0, 576, 2183, 536, 2275, 4092, 0, 2670, 1038, 2862, 2559, 0, 4068, 4107, 2048, 2887, 1077, 0, 0, 3951,
682, 2355, 3159, 0, 0, 0, 4226, 3309, 2011, 1859, 1998, 0, 1443, 1463, 0, 0, 1768, 0, 0, 3367, 1032, 0, 2858, 3370, 0, 0, 413, 2952, 2887,
0, 0, 0, 1984, 0, 1052, 0, 473, 649, 0, 0, 0, 1734, 0, 599, 793, 4428, 2970, 2811, 0, 726, 3224, 4, 867, 461, 2538, 153, 563, 1560, 0, 884,
0, 3363, 0, 0, 2564, 2452, 1357, 0, 4134, 4285, 0, 0, 2334, 98, 2617, 4200, 762, 4301, 1847, 0, 0, 2520, 201, 0, 0, 624, 2425, 364, 2351,
4142, 2926, 1238, 4505, 987, 145, 0, 1263, 0, 328, 0, 3859, 0, 2777, 0, 638, 0, 3421, 3881, 213, 75, 1909, 0, 2930, 3931, 744, 0, 3441, 461,
3083, 0, 810, 0, 0, 4184, 0, 0, 3922, 0, 1013, 1401, 0, 0, 943, 4466, 1354, 0, 448, 1901, 2555, 0, 0, 2115, 492, 0, 849, 653, 0, 0, 0, 0,
86, 1985, 303, 1235, 0, 1970, 868, 2987, 0, 0, 0, 1753, 0, 0, 0, 0, 3486, 0, 392, 0, 0, 0, 4097, 0, 0, 0, 3824, 0, 0, 1424, 2546, 0, 624,
2231, 0, 3921, 0, 1373, 0, 0, 1161, 2774, 0, 2075, 1737, 4387, 0, 1891, 0, 1977, 0, 0, 2200, 0, 4285, 4231, 0, 1413, 0, 1678, 1798, 4204, 0,
0, 0, 1129, 989, 555, 2216, 2115, 0, 3300, 2515, 33, 0, 2168, 0, 1884, 3676, 1044, 2267, 3640, 0, 3397, 368, 0, 0, 2250, 3343, 0, 4277, 1346,
1118, 0, 3228, 0, 1422, 1616, 2332, 1971, 0, 0, 1892, 3461, 0, 2595, 0, 3977, 2684, 0, 0, 0, 2429, 723, 1092, 2414, 101, 456, 3977, 0, 2265, 0,
874, 0, 2511, 0, 782, 32, 2498, 0, 1496, 1602, 3338, 4039, 0, 1051, 0, 0, 0, 2686, 0, 0, 0, 0, 0, 1811, 0, 1771, 2954, 0, 144, 0, 2204,
3298, 0, 0, 0, 574, 4246, 0, 2042, 0, 0, 0, 1695, 0, 0, 760, 4252, 1066, 0, 3188, 36, 0, 42, 270, 868, 2341, 0, 1863, 3192, 3542, 0, 1865,
3750, 0, 792, 4414, 222, 4211, 0, 3149, 264, 0, 1240, 2035, 0, 0, 888, 659, 1217, 3277, 0, 0, 0, 0, 206, 2189, 0, 2789, 3442, 1106, 2940,
1568, 1366, 2215, 0, 3392, 1305, 1430, 3140, 3038, 0, 0, 4165, 0, 4132, 2614, 0, 4047, 0, 0, 2825, 2149, 408, 0, 3633, 0, 2497, 2299, 0, 0,
3841, 2173, 0, 1277, 735, 0, 36, 0, 304, 1671, 18, 2120, 0, 4004, 0, 0, 375, 0, 0, 2522, 0, 0, 0, 0, 2820, 2686, 0, 0, 460, 0, 1749, 0, 0, 0,
1606, 1243, 0, 0, 2759, 2857, 2031, 1657, 0, 0, 0, 0, 89, 3257, 4614, 0, 1040, 454, 1004, 0, 0, 0, 0, 1275, 0, 3419, 2195, 3925, 4078, 720,
2372, 512, 0, 2288, 0, 0, 4237, 1250, 0, 0, 689, 0, 0, 4441, 2221, 3191, 3555, 0, 3023, 4122, 2270, 0, 0, 0, 122, 1332, 1994, 3557, 3975,
2162, 678, 3839, 2115, 0, 3729, 0, 610, 2634, 909, 4448, 448, 2356, 405, 0, 509, 1605, 0, 0, 0, 4057, 0, 0, 0, 0, 77, 0, 3066, 416, 0, 864,
4348, 2928, 3759, 0, 2015, 2153, 1348, 0, 0, 0, 1832, 3026, 1187, 0, 0, 1503, 2680, 4297, 0, 646, 892, 3882, 1614, 0, 1060, 3489, 0, 671,
29, 1031, 1049, 583, 0, 1757, 1469, 854, 318, 0, 3032, 2044, 0, 0, 0, 512, 3427, 3838, 807, 0, 1012, 0, 133, 0, 2493, 158, 1983, 954, 0, 0,
1251, 0, 4002, 0, 0, 3156, 0, 886, 0, 0, 1560, 1605, 0, 0, 0, 0, 4587, 0, 0, 2428, 3341, 2857, 0, 504, 0, 2197, 0, 0, 0, 413, 2666, 210, 62,
2403, 0, 1121, 0, 0, 0, 4358, 1265, 0, 360, 0, 409, 0, 0, 0, 4464, 0, 3633, 0, 1792, 231, 1331, 1163, 0, 3500, 1584, 0, 0, 2058, 55, 0, 2133,
2893, 3954, 0, 0, 927, 1330, 0, 0, 0, 4415, 1667, 2039, 302, 752, 3191, 904, 2149, 0, 3078, 0, 76, 751, 532, 2355, 0, 1364, 1224, 0, 3883,
944, 0, 0, 1640, 4315, 3232, 3095, 81, 0, 2565, 289, 2217, 708, 0, 0, 1371, 824, 0, 0, 1522, 0, 0, 0, 705, 3656, 2701, 0, 0, 0, 112, 1167, 0,
611, 688, 0, 2958, 3230, 0, 782, 0, 0, 2717, 803, 91, 0, 0, 436, 0, 0, 946, 868, 1315, 0, 2776, 57, 0, 0, 3891, 0, 0, 0, 4003, 0, 4186, 0,
78, 0, 0, 0, 0, 3877, 987, 594, 0, 68, 0, 3149, 0, 1435, 823, 4380, 1542, 0, 1867, 0, 3783, 0, 508, 0, 2306, 0, 159, 1867, 1097, 1567,
2978, 4574, 834, 0, 3266, 0, 0, 872, 0, 3074, 1032, 1663, 0, 3500, 0, 3509, 2664, 0, 1063, 1713, 0, 0, 2521, 463, 1439, 3901, 0, 0, 0, 2750,
0, 3780, 0, 0, 4020, 1414, 2473, 0, 4262, 0, 0, 1477, 0, 2404, 1387, 0, 0, 4130, 0, 2867, 0, 1463, 0, 3553, 0, 1264, 2212, 0, 3490, 3876, 3238,
1425, 2955, 602, 593, 2485, 2043, 589, 0, 0, 734, 0, 0, 674, 0, 1680, 0, 1130, 3431, 1016, 0, 3208, 0, 1611, 0, 0, 521, 0, 279, 3567, 4378,
1833, 0, 3470, 2726, 0, 0, 1719, 2945, 2813, 0, 202, 1174, 0, 0, 3310, 620, 1261, 948, 0, 406, 1640, 0, 2703, 120, 185, 1457, 2473, 444, 2432,
1708, 2824, 0, 0, 3934, 4599, 793, 1170, 793, 547, 0, 0, 0, 1236, 0, 0, 3465, 3153, 3009, 1782, 1387, 1206, 4301, 4354, 0, 0, 0, 510, 0, 82, 0,
0, 4086, 0, 0, 2128, 0, 2242, 0, 1712, 3994, 1363, 1324, 1351, 0, 762, 0, 1776, 0, 0, 2878, 0, 0, 2127, 2042, 1946, 0, 0, 482, 179, 2065,
611, 2679, 29, 0, 4618, 0, 1210, 4341, 577, 0, 3508, 2454, 1598, 1887, 2940, 4187, 0, 4198, 4239, 2026, 129, 0, 0, 4085, 0, 2463, 237, 609, 0,
105, 2924, 0, 4479, 0, 417, 3833, 2295, 476, 0, 1799, 0, 0, 0, 2889, 503, 1535, 0, 0, 0, 0, 1903, 1683, 1213, 1683, 1275, 0, 0, 4229, 0,
1664, 2390, 585, 0, 0, 0, 0, 4401, 0, 0, 0, 2558, 1716, 0, 3604, 1853, 1153, 3037, 2186, 650, 0, 2218, 0, 0, 0, 2853, 4152, 0, 0, 0, 1684, 0,
0, 1630, 3949, 2149, 4352, 0, 0, 1603, 511, 1921, 346, 0, 1588, 486, 0, 3001, 1076, 1531, 4136, 514, 2223, 0, 122, 426, 2068, 0, 4242, 469,
261, 0, 292, 0, 2336, 1600, 2122, 4579, 1254, 4231, 4090, 219, 3720, 0, 2524, 2124, 0, 4393, 0, 1107, 0, 982, 0, 0, 3387, 0, 4325, 566, 0, 0,
0, 1939, 2055, 765, 2084, 0, 0, 0, 0, 4427, 4010, 0, 4223, 2581, 0, 93, 1085, 1380, 0, 3803, 3283, 1065, 4066, 699, 2172, 0, 1774, 0, 423,
3158, 0, 1338, 42, 0, 0, 4368, 0, 2990, 0, 3767, 646, 0, 0, 0, 0, 4102, 2423, 0, 0, 1868, 95, 2025, 0, 2502, 0, 3271, 1521, 3098, 2621, 1871,
0, 775, 2182, 686, 0, 888, 0, 1689, 0, 992, 2216, 3895, 2326, 536, 0, 532, 0, 2812, 0, 317, 0, 3737, 1136, 471, 47, 0, 4251, 1113, 1537,
3524, 192, 0, 0, 3998, 0, 2054, 2863, 755, 65, 0, 399, 0, 1976, 0, 2298, 0, 1217, 2484, 1430, 0, 413, 1597, 2857, 2060, 1296, 0, 0, 3917,
1711, 921, 0, 2103, 0, 0, 2551, 0, 987, 2054, 4310, 0, 929, 2412, 2267, 3855, 1676, 63, 0, 2060, 1316, 536, 0, 0, 1626, 2008, 1216, 1924, 0, 0,
2339, 0, 1035, 950, 3822, 329, 0, 2245, 4023, 0, 0, 528, 1510, 2180, 0, 1737, 1860, 1654, 0, 0, 4019, 1295, 348, 1843, 1462, 2410, 427, 1475,
1280, 1049, 0, 2638, 2410, 3267, 3553, 0, 4474, 1108, 0, 0, 4310, 1321, 1573, 2555, 2128, 1773, 1126, 0, 3359, 428, 0, 0, 1665, 1794, 3033,
716, 0, 0, 66, 0, 931, 0, 1772, 108, 0, 867, 0, 0, 0, 2636, 0, 0, 1487, 4076, 0, 0, 1994, 586, 492, 0, 4291, 810, 0, 3082, 258, 1906, 324,
3644, 0, 2933, 0, 0, 3726, 1761, 1821, 1768, 0, 0, 4504, 2429, 0, 2583, 4342, 2994, 0, 0, 0, 1911, 8, 1132, 0, 519, 0, 0, 2158, 0, 489, 1161,
0, 491, 0, 2061, 321, 1871, 0, 179, 0, 2378, 0, 0, 0, 0, 1726, 0, 0, 0, 422, 1381, 222, 1630, 3390, 3198, 2820, 3197, 0, 3735, 0, 2786, 4069,
0, 0, 1977, 3694, 1577, 0, 0, 0, 0, 0, 3880, 3409, 1676, 0, 3513, 0, 0, 538, 3719, 0, 4184, 3819, 2592, 0, 4235, 1841, 3575, 0, 3464, 429, 732,
0, 4389, 1625, 392, 0, 4059, 1101, 3443, 0, 0, 4414, 420, 2090, 1723, 0, 1185, 2763, 2742, 873, 0, 4349, 2085, 0, 0, 585, 1896, 0, 3756,
4393, 2073, 1230, 0, 233, 0, 64, 4047, 1015, 0, 280, 769, 0, 3116, 2508, 0, 0, 0, 0, 0, 1982, 0, 1363, 0, 2755, 0, 2166, 2454, 2483, 0,
1540, 0, 2637, 868, 0, 0, 1694, 3624, 0, 996, 3832, 2768, 551, 0, 0, 886, 0, 191, 3871, 332, 3807, 3135, 2161, 0, 0, 1525, 0, 4176, 667, 0,
4332, 597, 0, 955, 1967, 2351, 0, 0, 2162, 0, 1097, 4080, 4303, 0, 0, 2519, 3289, 3705, 0, 0, 2646, 233, 2796, 1151, 1477, 738, 1602, 3040,
2596, 169, 0, 3323, 0, 0, 1621, 0, 1207, 1925, 40, 0, 1379, 0, 2568, 686, 0, 496, 0, 0, 0, 2186, 0, 213, 871, 1731, 3502, 1354, 2287, 0, 0,
2200, 0, 0, 2230, 2517, 1465, 732, 3007, 0, 0, 0, 4022, 2420, 0, 0, 0, 2300, 0, 0, 0, 1687, 0, 4004, 1950, 166, 4213, 3484, 118, 0, 4380,
1709, 2499, 0, 0, 408, 0, 2729, 4191, 0, 1922, 3125, 2123, 1162, 3337, 1076, 1165, 2297, 2291, 3707, 2000, 2931, 0, 0, 0, 0, 0, 2243, 390, 0,
1061, 0, 0, 4613, 831, 48, 653, 0, 0, 0, 2854, 0, 0, 2097, 738, 4112, 348, 0, 2479, 0, 3366, 3715, 244, 0, 2385, 41, 528, 2336, 0, 0, 1285,
3482, 760, 0, 41, 3732, 2339, 649, 2031, 889, 2533, 2228, 0, 0, 711, 3238, 0, 0, 0, 306, 675, 1531, 133, 1177, 846, 0, 786, 0, 0, 1880,
1229, 72, 0, 3476, 1984, 1155, 657, 4051, 72, 4584, 2108, 4067, 362, 0, 2211, 2342, 3225, 40, 0, 0, 804, 574, 0, 1562, 1577, 0, 3185, 0, 527,
405, 188, 1070, 1436, 1501, 0, 3608, 3362, 0, 0, 3069, 0, 4026, 0, 0, 252, 0, 3676, 2352, 0, 656, 0, 0, 3364, 487, 125, 2163, 1610, 96,
3252, 0, 2688, 3776, 0, 2011, 0, 930, 317, 425, 1484, 1053, 3945, 0, 4083, 933, 3115, 3641, 544, 3112, 0, 337, 0, 0, 1888, 1967, 1294, 2965,
2877, 0, 2986, 584, 2366, 0, 3638, 1307, 1433, 0, 805, 3960, 573, 0, 1852, 1728, 552, 3477, 1669, 1253, 1917, 1289, 160, 2184, 1165, 2917,
2130, 0, 55, 0, 1137, 2418, 0, 0, 2560, 0, 3164, 0, 0, 406, 1774, 0, 0, 1561, 4193, 3328, 1476, 0, 1072, 3956, 800, 1357, 3841, 0, 2844, 0,
2336, 3059, 0, 0, 0, 0, 2110, 0, 0, 0, 70, 4537, 4337, 0, 2483, 2219, 0, 2879, 0, 2381, 1127, 0, 3128, 2968, 3694, 2061, 0, 2545, 606, 255,
0, 73, 718, 345, 1828, 2340, 0, 777, 3236, 1056, 794, 2152, 0, 2374, 529, 170, 3242, 1354, 3175, 0, 1395, 847, 0, 2240, 0, 3053, 17, 2048,
3592, 4318, 571, 2897, 236, 0, 2510, 0, 0, 4265, 265, 606, 4214, 99, 0, 0, 0, 4391, 1929, 1618, 0, 382, 3000, 0, 2272, 355, 1098, 1053,
2377, 1154, 500, 2125, 1163, 858, 3356, 2026, 4311, 1112, 1224, 0, 2282, 2914, 0, 2842, 376, 2228, 726, 0, 1156, 0, 1410, 0, 749, 4063,
4200, 1079, 3471, 0, 2476, 202, 2561, 1340, 1205, 0, 2024, 0, 581, 0, 2439, 0, 0, 0, 2621, 0, 3528, 2435, 0, 97, 1482, 694, 1194, 570, 3416,
4377, 382, 0, 3905, 322, 2770, 3299, 0, 2078, 485, 1064, 162, 1818, 3179, 3403, 1117, 0, 0, 1524, 943, 0, 0, 0, 0, 3575, 3773, 1936, 0, 0,
180, 0, 279, 4411, 4268, 0, 0, 1428, 2432, 340, 0, 0, 2053, 830, 55, 0, 0, 1401, 0, 0, 2159, 2996, 270, 0, 2332, 1361, 2981, 0, 579, 0, 3346,
4188, 611, 3976, 131, 1815, 2182, 84, 2253, 1201, 2467, 1196, 572, 0, 728, 0, 3494, 3405, 3445, 3435, 2653, 0, 1308, 2858, 3025, 2575, 3731,
0, 1003, 2379, 0, 867, 0, 0, 0, 0, 0, 0, 505, 0, 1080, 4504, 0, 2588, 605, 855, 0, 203, 4259, 3290, 1060, 95, 1420, 435, 0, 383, 1415, 45,
26, 2511, 2437, 3922, 3077, 0, 1941, 0, 0, 0, 1352, 0, 0, 1692, 0, 0, 1586, 117, 2280, 2435, 1389, 703, 0, 0, 2704, 31, 0, 2471, 3594, 1054,
338, 0, 563, 0, 1941, 3948, 0, 711, 0, 0, 1532, 812, 1408, 1682, 1413, 0, 1511, 0, 0, 1382, 0, 4258, 4301, 840, 286, 2344, 719, 1350, 3803,
148, 3032, 1839, 0, 3242, 2318, 2125, 933, 0, 0, 4100, 0, 2924, 2980, 183, 2098, 3975, 0, 0, 823, 2368, 4256, 0, 752, 1235, 5, 0, 3558, 98,
1429, 0, 1940, 0, 1915, 4036, 2174, 2000, 142, 1994, 4197, 35, 321, 3725, 694, 3455, 0, 3653, 875, 1383, 0, 547, 1804, 0, 70, 0, 715, 0, 0,
2689, 974, 0, 1471, 3746, 2148, 4142, 4507, 0, 0, 430, 3884, 0, 0, 486, 2494, 1860, 0, 4370, 3502, 779, 1873, 1031, 1727, 168, 3541, 274, 1808,
768, 0, 0, 417, 2494, 154, 4507, 1666, 909, 0, 4308, 0, 0, 1913, 3245, 0, 0, 0, 0, 0, 0, 0, 3285, 1309, 3407, 0, 0, 0, 113, 2126, 3166, 1249,
0, 569, 3216, 0, 0, 4038, 0, 0, 0, 2546, 3427, 477, 776, 2288, 3418, 0, 1876, 1375, 3355, 3352, 1112, 0, 1232, 836, 0, 2694, 375, 3155, 815,
507, 49, 4524, 0, 0, 0, 1325, 325, 1525, 2536, 1424, 2007, 0, 1703, 1889, 0, 0, 2998, 2383, 0, 0, 2114, 2168, 125, 1856, 0, 0, 0, 2371,
1866, 1233, 1005, 2069, 1703, 0, 0, 1045, 0, 2099, 2719, 2526, 3763, 0, 1324, 1017, 1445, 1438, 0, 0, 155, 4178, 0, 935, 1754, 772, 1828, 0, 0,
1462, 2049, 0, 1318, 4522, 0, 0, 0, 0, 0, 2551, 0, 0, 1844, 300, 3532, 628, 458, 1292, 3824, 1772, 2528, 983, 2535, 3680, 0, 742, 1619, 2192,
3431, 25, 0, 0, 0, 1109, 3458, 425, 2338, 0, 4481, 434, 0, 0, 0, 0, 0, 0, 1186, 4098, 800, 0, 2809, 2098, 2052, 3951, 3703, 2558, 0, 0, 1243,
929, 602, 0, 2798, 0, 0, 2209, 1195, 0, 459, 2461, 3700, 2498, 0, 1379, 559, 964, 0, 0, 1402, 3474, 0, 0, 2102, 3369, 1705, 0, 694, 0, 2957,
1008, 3235, 0, 0, 918, 481, 3063, 3335, 2131, 1794, 0, 2417, 3037, 0, 2106, 0, 0, 0, 4251, 1377, 1041, 3963, 4047, 0, 1047, 2778, 911, 0,
3953, 2382, 2800, 1063, 0, 130, 508, 617, 0, 953, 0, 2200, 1428, 0, 651, 0, 0, 1646, 0, 1111, 2369, 770, 3627, 4192, 2657, 3794, 1255, 632,
509, 1090, 706, 0, 0, 1053, 1078, 1095, 3225, 0, 279, 4481, 1017, 261, 4345, 0, 1269, 814, 2886, 0, 1826, 1773, 559, 0, 1327, 1508, 3242,
0, 769, 3943, 0, 904, 2208, 4550, 1043, 1455, 4042, 0, 1615, 0, 0, 232, 2335, 1589, 736, 3496, 1132, 2712, 2540, 287, 1260, 3176, 0, 977, 0,
0, 4529, 4364, 291, 0, 2695, 1372, 0, 4093, 30, 4458, 0, 0, 1641, 1591, 3067, 0, 979, 0, 885, 739, 0, 813, 722, 541, 745, 0, 0, 0, 1102, 1963,
0, 153, 0, 4125, 4607, 3057, 0, 0, 0, 0, 0, 0, 489, 2628, 0, 0, 3776, 202, 474, 865, 2386, 0, 0, 3839, 0, 0, 0, 100, 2822, 3620, 2002, 1675,
2763, 0, 4203, 3253, 1433, 0, 3664, 4492, 1090, 2882, 1172, 534, 2107, 1542, 2599, 2219, 0, 0, 454, 845, 1203, 377, 4169, 995, 1472, 3052,
0, 0, 4372, 2308, 2283, 1068, 0, 0, 0, 1178, 0, 0, 513, 0, 0, 3913, 3584, 0, 105, 172, 0, 1421, 2571, 2778, 0, 1267, 0, 2723, 1968, 0,
2052, 3633, 0, 1740, 763, 2495, 2480, 0, 0, 523, 1829, 1063, 937, 3636, 4399, 0, 674, 0, 458, 1260, 0, 0, 3957, 2224, 0, 0, 3089, 3191, 0, 628,
4050, 3903, 1740, 1349, 754, 0, 162, 338, 0, 749, 0, 0, 0, 0, 2914, 670, 1716, 0, 2399, 3592, 2059, 1928, 157, 0, 0, 2087, 494, 394, 2564,
3975, 593, 3893, 0, 630, 691, 1613, 1226, 3769, 736, 0, 0, 1491, 0, 0, 0, 32, 1717, 2195, 1172, 614, 430, 920, 0, 0, 2492, 1660, 1641,
2752, 0, 53, 0, 1298, 2746, 644, 786, 337, 0, 0, 0, 1472, 1598, 0, 3078, 1264, 0, 1306, 1070, 3264, 4001, 2046, 0, 397, 2258, 0, 3145, 0,
1855, 525, 0, 0, 1784, 2000, 0, 0, 0, 1905, 0, 964, 0, 3424, 0, 2308, 810, 890, 1173, 1401, 0, 1765, 0, 4338, 1898, 1553, 1196, 121, 3960,
733, 1151, 0, 0, 3882, 3829, 4368, 835, 3388, 624, 1803, 0, 0, 2647, 155, 664, 3982, 1729, 2399, 3649, 0, 716, 1128, 0, 3668, 4257, 2824, 0,
1332, 755, 0, 185, 247, 0, 1856, 2252, 0, 850, 1342, 4074, 375, 359, 1334, 0, 1175, 965, 2224, 2148, 0, 4046, 0, 701, 4032, 0, 89, 1743,
198, 2961, 0, 4040, 2496, 4058, 801, 0, 111, 2402, 0, 1110, 1312, 4064, 1640, 0, 0, 0, 0, 0, 2512, 1226, 1637, 0, 3275, 0, 0, 0, 10, 161, 1018,
1485, 585, 0, 0, 25, 537, 3268, 188, 3913, 1939, 3431, 1288, 4564, 0, 1071, 0, 2642, 0, 1164, 443, 2000, 1365, 3219, 1462, 3673, 0, 200, 0,
0, 4054, 0, 2422, 0, 1356, 1134, 91, 1543, 567, 2351, 1708, 0, 298, 0, 902, 0, 4273, 0, 3762, 145, 2267, 0, 3778, 3523, 1827, 0, 2992, 0,
1222, 0, 527, 2512, 2120, 0, 3788, 353, 2581, 1274, 2230, 843, 748, 0, 3764, 611, 2537, 0, 1782, 3215, 1431, 2215, 3921, 0, 3517, 173, 1272,
1248, 0, 1459, 4518, 0, 0, 1818, 517, 3677, 0, 1725, 276, 4496, 0, 1280, 1093, 3269, 1558, 2635, 0, 1984, 3180, 0, 832, 799, 0, 0, 357,
3446, 1981, 1094, 0, 0, 4216, 2501, 3849, 256, 4388, 840, 537, 0, 2186, 822, 1831, 1560, 0, 932, 2628, 197, 0, 2402, 0, 0, 0, 4253, 643, 0, 0,
1361, 3669, 291, 0, 508, 875, 4372, 0, 0, 353, 0, 15, 918, 0, 1648, 1279, 2908, 550, 1758, 0, 1425, 2708, 1600, 3974, 2768, 1014, 4152, 0,
3664, 2040, 2794, 0, 355, 4557, 0, 713, 787, 1782, 3242, 2635, 0, 908, 0, 802, 1107, 0, 0, 3642, 89, 0, 0, 2514, 0, 0, 2515, 264, 1509, 2255,
0, 3502, 1131, 1524, 1455, 4302, 2859, 16, 1083, 3320, 2213, 0, 0, 0, 3, 1345, 0, 309, 3321, 2734, 0, 0, 1086, 0, 761, 992, 703, 0, 0, 1345,
3614, 898, 2664, 1640, 0, 978, 0, 3580, 1575, 1617, 61, 0, 758, 2169, 1083, 3522, 1821, 2233, 2854, 2119, 0, 0, 0, 818, 1140, 0, 21, 0, 3888,
1058, 637, 417, 4227, 3482, 0, 1988, 3192, 385, 361, 0, 2922, 2515, 0, 3486, 1575, 667, 4209, 500, 1591, 0, 1484, 1787, 1125, 250, 0, 3646,
4523, 3395, 0, 0, 2809, 953, 0, 2551, 0, 1870, 1092, 1620, 281, 0, 597, 2638, 1516, 4135, 2525, 2271, 0, 1753, 1140, 293, 1379, 2505, 0, 1607,
211, 0, 1128, 0, 295, 3033, 1892, 0, 0, 3197, 971, 2556, 0, 841, 1783, 50, 3284, 1662, 1363, 270, 3990, 1567, 0, 0, 0, 1761, 0, 266, 4027,
58, 0, 0, 278, 2744, 1494, 2448, 4018, 0, 954, 2160, 125, 0, 407, 399, 645, 797, 0, 1219, 0, 0, 1417, 3244, 952, 4283, 0, 1135, 0, 1546, 4138,
4200, 57, 2688, 929, 1662, 2994, 3363, 3476, 0, 0, 3595, 1969, 115, 0, 1159, 3696, 0, 1266, 2859, 2009, 234, 0, 3336, 3659, 0, 1257, 3702,
661, 0, 0, 0, 0, 0, 3305, 2408, 4247, 1049, 4039, 2014, 0, 0, 105, 0, 962, 2309, 0, 2445, 3624, 3598, 660, 4238, 93, 1416, 2666, 0, 3857,
1424, 1345, 0, 2381, 0, 3168, 527, 3329, 912, 0, 2425, 3453, 2298, 762, 4192, 3368, 1239, 3967, 244, 1134, 3773, 3354, 0, 232, 2358, 0, 0,
2106, 639, 1438, 0, 0, 1151, 1067, 2378, 4021, 560, 3974, 2754, 1311, 4027, 3328, 151, 0, 0, 0, 0, 727, 0, 0, 1882, 3600, 4165, 0, 1729, 558,
1672, 1277, 4529, 3452, 2670, 0, 1752, 0, 2938, 3676, 230, 0, 788, 0, 0, 3936, 0, 2657, 3166, 1514, 835, 83, 3616, 3404, 142, 0, 1761, 4238,
0, 0, 62, 3571, 1787, 0, 2804, 1907, 2862, 1978, 0, 0, 787, 733, 99, 0, 3593, 401, 1386, 3302, 3578, 0, 631, 936, 0, 0, 4367, 625, 4249, 0,
1662, 3599, 0, 2812, 0, 1396, 2144, 0, 4503, 0, 0, 2537, 2051, 415, 2216, 3720, 0, 0, 0, 0, 1438, 4000, 1745, 0, 336, 0, 2868, 4358, 598,
4294, 1664, 471, 4340, 323, 0, 1311, 1297, 0, 0, 2308, 0, 779, 4, 1103, 0, 2460, 1123, 295, 0, 1459, 1305, 0, 2733, 0, 1635, 0, 3701, 4162,
4330, 2442, 0, 3335, 0, 410, 531, 985, 2976, 1567, 0, 2631, 0, 769, 523, 3026, 0, 4180, 344, 0, 0, 210, 4338, 0, 0, 1564, 0, 4222, 1530,
804, 1268, 282, 0, 2565, 4016, 1596, 2513, 4139, 0, 991, 1705, 0, 106, 277, 1774, 0, 1872, 2854, 3772, 1711, 2496, 1946, 3751, 2322, 1523,
575, 4249, 784, 641, 4059, 0, 0, 409, 1376, 0, 2102, 1028, 0, 0, 4191, 3707, 1407, 0, 3232, 781, 0, 1965, 0, 0, 4247, 0, 2017, 200, 693, 1538,
2864, 2566, 1412, 0, 915, 1069, 100, 0, 1893, 3193, 2953, 0, 0, 2288, 0, 2272, 1494, 0, 0, 320, 0, 0, 0, 3677, 3432, 0, 0, 0, 64, 1046, 3569,
0, 4520, 4249, 316, 2656, 1679, 0, 0, 3977, 2442, 0, 172, 2917, 0, 251, 921, 994, 2034, 3081, 3752, 951, 293, 1432, 883, 552, 0, 0, 0,
3671, 3445, 1176, 0, 0, 0, 0, 0, 1420, 2830, 996, 0, 0, 3400, 1255, 2362, 2151, 3946, 1234, 1417, 0, 2371, 2334, 2976, 2530, 3011, 0, 803,
405, 4100, 479, 2814, 0, 3721, 1301, 3927, 3937, 1306, 0, 3618, 2372, 1948, 2689, 0, 1059, 0, 8, 3765, 228, 1029, 0, 1861, 3736, 0, 2569, 0,
2491, 4458, 1046, 0, 1620, 3408, 985, 1277, 1061, 132, 2866, 97, 3735, 0, 1166, 788, 506, 0, 562, 269, 2355, 2231, 1723, 4375, 2557, 2903,
2192, 3608, 1612, 1503, 3895, 0, 38, 3902, 0, 0, 1099, 426, 2281, 0, 0, 1194, 793, 730, 0, 1264, 465, 1764, 2668, 366
509, 0, 1350, 0, 1529, 0, 0, 0, 1275, 1743, 3135, 0, 2612, 0, 0, 3016,
0, 692, 3102, 0, 862, 0, 3245, 0, 0, 0, 2568, 46, 4055, 1901, 764,
1128, 723, 2292, 2084, 1961, 0, 292, 0, 0, 0, 1121, 1959, 1203, 2409,
3790, 3260, 2185, 1274, 2701, 1253, 3058, 0, 2953, 1879, 2578, 0, 832,
425, 1739, 850, 487, 483, 469, 0, 511, 475, 1881, 1987, 860, 4489, 0,
0, 0, 1652, 0, 0, 0, 0, 4493, 0, 413, 519, 0, 1789, 3142, 1168, 0, 0,
612, 535, 0, 0, 103, 4165, 0, 3553, 0, 1302, 0, 2438, 0, 940, 1147,
3608, 1332, 719, 1032, 3148, 0, 2063, 927, 0, 0, 3054, 0
}; };
static size_t static size_t
@ -2897,16 +2889,16 @@ keysym_name_hash_f(const char *key, const char *T)
size_t sum = 0; size_t sum = 0;
for (size_t i = 0; key[i] != '\0'; i++) for (size_t i = 0; key[i] != '\0'; i++)
sum += T[i % 32] * key[i]; sum += T[i % 32] * key[i];
return sum % 4622; return sum % 4402;
} }
static size_t static size_t
keysym_name_perfect_hash(const char *key) keysym_name_perfect_hash(const char *key)
{ {
return ( return (
keysym_name_G[keysym_name_hash_f(key, "8TdWODhDmvfFNhdew6RS9Vmk6zoyzcIL")] + keysym_name_G[keysym_name_hash_f(key, "uM56WrSjHtofw6pFN02nkQwt57Rdsoin")] +
keysym_name_G[keysym_name_hash_f(key, "FLLuzXDPPF7o0mOVhnPFXhsuVPyEFt8h")] keysym_name_G[keysym_name_hash_f(key, "P4xqG53yOhBiCtHiRwf0Ws7SW4qxMJYi")]
) % 4622; ) % 4402;
} }