// Use strict "use strict"; // Classes // Emoji class class Emoji { // Public // Encode static encode(text) { // Get text as bytes var bytes = (new TextEncoder()).encode(text); // Get number of extra bits var numberOfExtraBits = Emoji.NUMBER_BASE - bytes["length"] * Common.BITS_IN_A_BYTE % Emoji.NUMBER_BASE; // Create bit writer var bitWriter = new BitWriter(); // Append number of extra bits to bit writer bitWriter.setBits(numberOfExtraBits, Emoji.NUMBER_BASE); // Append extra bits to bit writer bitWriter.setBits(Emoji.EXTRA_BITS_VALUE, numberOfExtraBits); // Append bytes to bit writer bitWriter.setBytes(bytes); // Create bit reader from bit writer var bitReader = new BitReader(bitWriter.getBytes()); // Initialize emoji text var emojiText = ""; // Loop through all bit groups in bit reader while(true) { // Try try { // Get index from bit group var index = bitReader.getBits(Emoji.NUMBER_BASE); // Append glyph at index to emoji text emojiText += Emoji.GLYPHS[index]; } // Catch errors catch(error) { // Break break; } } // Return emoji text return emojiText; } // Decode static decode(emojiText) { // Get emoji text as glyphs var glyphs = Array.from(emojiText); // Initialize bit writer var bitWriter = new BitWriter(); // Initialize number of bits var numberOfBits = 0; // Go through all glyphs for(var i = 0; i < glyphs["length"]; ++i) { // Check if glyph isn't valid var index = Emoji.GLYPHS.indexOf(glyphs[i]); if(index === Common.INDEX_NOT_FOUND) { // Throw error throw "Invalid emoji text."; } // Append glyphs's index to bit writer bitWriter.setBits(index, Emoji.NUMBER_BASE); // Update number of bits numberOfBits += Emoji.NUMBER_BASE; } // Create bit reader from bit writer var bitReader = new BitReader(bitWriter.getBytes()); // Try try { // Get number of extra bits from bit reader var numberOfExtraBits = bitReader.getBits(Emoji.NUMBER_BASE); } // Catch errors catch(error) { // Throw error throw "Invalid emoji text."; } // Check if number of extra bits is invalid if(numberOfExtraBits <= 0 || numberOfExtraBits > Emoji.NUMBER_BASE) { // Throw error throw "Invalid emoji text."; } // Try try { // Get extra bits from bit reader var extraBits = bitReader.getBits(numberOfExtraBits); } // Catch errors catch(error) { // Throw error throw "Invalid emoji text."; } // Check if extra bits is invalid if(extraBits !== Emoji.EXTRA_BITS_VALUE) { // Throw error throw "Invalid emoji text."; } // Check if number of bits is invalid if((numberOfBits - Emoji.NUMBER_BASE - numberOfExtraBits) % Common.BITS_IN_A_BYTE !== 0) { // Throw error throw "Invalid emoji text."; } // Get remaining bytes from bit reader var bytes = bitReader.getBytes((numberOfBits - Emoji.NUMBER_BASE - numberOfExtraBits) / Common.BITS_IN_A_BYTE); // Return bytes as text return (new TextDecoder("utf-8", {"fatal": true})).decode(bytes); } // Private // Glyphs static get GLYPHS() { // Return glyphs return [ "๐ŸŽจ", "๐ŸŽญ", "๐Ÿงต", "๐Ÿงถ", "๐Ÿชข", "๐Ÿชก", "๐Ÿ†", "๐Ÿฅ‡", "๐Ÿ…", "๐Ÿฅˆ", "๐Ÿฅ‰", "๐ŸŽˆ", "๐ŸŽ", "๐ŸŽ„", "๐ŸŽŠ", "๐Ÿงจ", "๐ŸŽ†", "๐ŸŽƒ", "๐ŸŽŽ", "๐ŸŽ‘", "๐ŸŽ‰", "๐ŸŽ", "๐Ÿงง", "๐ŸŽ€", "๐ŸŽ‡", "โœจ", "๐ŸŽ‹", "๐ŸŽซ", "๐ŸŽ", "๐ŸŽ", "๐ŸŽฏ", "๐Ÿ”ฎ", "๐ŸŽด", "๐ŸŽฒ", "๐Ÿƒ", "๐Ÿช", "๐Ÿช„", "๐Ÿ€„", "๐Ÿงฟ", "๐Ÿช†", "๐Ÿช…", "๐ŸŽฑ", "๐Ÿงฉ", "๐ŸŽฐ", "๐Ÿงธ", "๐ŸŽฎ", "๐Ÿช€", "๐Ÿˆ", "๐Ÿธ", "โšพ", "๐Ÿ€", "๐ŸŽณ", "๐ŸฅŠ", "๐Ÿ", "๐ŸฅŒ", "๐Ÿคฟ", "๐Ÿ‘", "๐ŸŽฃ", "โ›ณ", "๐Ÿฅ", "๐Ÿฅ…", "๐Ÿ’", "๐Ÿฅ", "๐Ÿฅ‹", "๐Ÿ“", "๐Ÿ‰", "๐ŸŽฝ", "๐ŸŽฟ", "๐Ÿ›ท", "โšฝ", "๐ŸฅŽ", "๐ŸŽพ", "๐Ÿ", "๐Ÿธ", "๐Ÿค", "๐Ÿฆ", "๐Ÿ”", "๐Ÿฆค", "๐Ÿฆ†", "๐Ÿฆ…", "๐Ÿชถ", "๐Ÿฆฉ", "๐Ÿฅ", "๐Ÿฃ", "๐Ÿฆ‰", "๐Ÿฆœ", "๐Ÿฆš", "๐Ÿง", "๐Ÿ“", "๐Ÿฆข", "๐Ÿฆƒ", "๐Ÿœ", "๐Ÿชฒ", "๐Ÿ›", "๐Ÿฆ‹", "๐Ÿชณ", "๐Ÿฆ—", "๐Ÿชฐ", "๐Ÿ", "๐Ÿž", "๐Ÿฆ ", "๐ŸฆŸ", "๐Ÿฆ‚", "๐ŸŒ", "๐Ÿชฑ", "๐Ÿฆก", "๐Ÿฆ‡", "๐Ÿป", "๐Ÿฆซ", "๐Ÿฆฌ", "๐Ÿ—", "๐Ÿช", "๐Ÿˆ", "๐Ÿฑ", "๐Ÿ„", "๐Ÿฎ", "๐ŸฆŒ", "๐Ÿ•", "๐Ÿถ", "๐Ÿ˜", "๐Ÿ‘", "๐ŸฆŠ", "๐Ÿฆ’", "๐Ÿ", "๐Ÿฆ", "๐Ÿฆฎ", "๐Ÿน", "๐Ÿฆ”", "๐Ÿฆ›", "๐ŸŽ", "๐Ÿด", "๐Ÿฆ˜", "๐Ÿจ", "๐Ÿ†", "๐Ÿฆ", "๐Ÿฆ™", "๐Ÿฆฃ", "๐Ÿ’", "๐Ÿต", "๐Ÿ", "๐Ÿญ", "๐Ÿฆง", "๐Ÿฆฆ", "๐Ÿ‚", "๐Ÿผ", "๐Ÿพ", "๐Ÿ–", "๐Ÿท", "๐Ÿฝ", "๐Ÿฉ", "๐Ÿ‡", "๐Ÿฐ", "๐Ÿฆ", "๐Ÿ", "๐Ÿ€", "๐Ÿฆ", "๐Ÿฆจ", "๐Ÿฆฅ", "๐Ÿ…", "๐Ÿฏ", "๐Ÿซ", "๐Ÿฆ„", "๐Ÿƒ", "๐Ÿบ", "๐Ÿฆ“", "๐Ÿก", "๐Ÿฌ", "๐ŸŸ", "๐Ÿ™", "๐Ÿฆญ", "๐Ÿฆˆ", "๐Ÿš", "๐Ÿณ", "๐Ÿ ", "๐Ÿ‹", "๐ŸŠ", "๐Ÿ‰", "๐Ÿฒ", "๐ŸฆŽ", "๐Ÿฆ•", "๐Ÿ", "๐Ÿข", "๐Ÿฆ–", "๐ŸŒผ", "๐Ÿ’", "๐ŸŒธ", "๐ŸŒบ", "๐ŸŒน", "๐ŸŒป", "๐ŸŒท", "๐Ÿ’ฎ", "๐Ÿฅ€", "๐ŸŒต", "๐ŸŒณ", "๐ŸŒฒ", "๐Ÿ‚", "๐Ÿ€", "๐ŸŒฟ", "๐Ÿƒ", "๐Ÿ", "๐ŸŒด", "๐Ÿชด", "๐ŸŒฑ", "๐ŸŒพ", "๐Ÿด", "๐Ÿ", "๐ŸŽŒ", "๐Ÿšฉ", "๐Ÿบ", "๐Ÿฅข", "๐Ÿด", "๐Ÿ”ช", "๐Ÿฅ„", "๐Ÿผ", "๐Ÿบ", "๐Ÿงƒ", "๐Ÿพ", "๐Ÿง‹", "๐Ÿป", "๐Ÿฅ‚", "๐Ÿธ", "๐Ÿฅค", "๐Ÿฅ›", "โ˜•", "๐ŸงŠ", "๐Ÿง‰", "๐Ÿถ", "๐Ÿต", "๐Ÿซ–", "๐Ÿน", "๐Ÿฅƒ", "๐Ÿท", "๐Ÿฑ", "๐Ÿš", "๐Ÿ›", "๐Ÿก", "๐ŸฅŸ", "๐Ÿฅ", "๐Ÿฅ ", "๐Ÿค", "๐Ÿฅฎ", "๐Ÿข", "๐Ÿ™", "๐Ÿ˜", "๐Ÿ ", "๐Ÿ", "๐Ÿœ", "๐Ÿฃ", "๐Ÿฅก", "๐ŸŒ", "๐Ÿซ", "๐Ÿ’", "๐Ÿฅฅ", "๐Ÿ‡", "๐Ÿ", "๐Ÿฅ", "๐Ÿ‹", "๐Ÿฅญ", "๐Ÿˆ", "๐Ÿซ’", "๐Ÿ‘", "๐Ÿ", "๐Ÿ", "๐ŸŽ", "๐Ÿ“", "๐ŸŠ", "๐Ÿ…", "๐Ÿ‰", "๐Ÿฆ€", "๐Ÿฆž", "๐Ÿฆช", "๐Ÿฆ", "๐Ÿฆ‘", "๐Ÿฅ“", "๐Ÿฅฏ", "๐Ÿฅ–", "๐Ÿฅฃ", "๐Ÿž", "๐ŸŒฏ", "๐Ÿงˆ", "๐Ÿฅซ", "๐Ÿง€", "๐Ÿณ", "๐Ÿฅ", "๐Ÿฅฉ", "๐Ÿฅš", "๐Ÿง†", "๐Ÿซ“", "๐Ÿซ•", "๐ŸŸ", "๐Ÿฅ—", "๐Ÿ”", "๐ŸŒญ", "๐Ÿ–", "๐Ÿฅž", "๐Ÿ•", "๐Ÿฟ", "๐Ÿฒ", "๐Ÿ—", "๐Ÿฅจ", "๐Ÿง‚", "๐Ÿฅช", "๐Ÿฅ˜", "๐Ÿฅ™", "๐ŸŒฎ", "๐Ÿซ”", "๐Ÿง‡", "๐ŸŽ‚", "๐Ÿฌ", "๐Ÿซ", "๐Ÿช", "๐Ÿง", "๐Ÿฎ", "๐Ÿฉ", "๐Ÿฏ", "๐Ÿจ", "๐Ÿญ", "๐Ÿฅง", "๐Ÿง", "๐Ÿฐ", "๐Ÿฆ", "๐Ÿฅ‘", "๐Ÿซ‘", "๐Ÿฅฆ", "๐Ÿฅ•", "๐ŸŒฐ", "๐Ÿฅ’", "๐ŸŒฝ", "๐Ÿ†", "๐Ÿง„", "๐Ÿฅฌ", "๐Ÿ„", "๐Ÿง…", "๐Ÿฅœ", "๐Ÿฅ”", "๐Ÿ“˜", "๐Ÿ”–", "๐Ÿ“‘", "๐Ÿ“š", "๐Ÿ“•", "๐Ÿ“—", "๐Ÿ“’", "๐Ÿ“ฐ", "๐Ÿ““", "๐Ÿ“”", "๐Ÿ“–", "๐Ÿ“™", "๐Ÿ“„", "๐Ÿ“ƒ", "๐Ÿ“œ", "๐ŸŽ’", "๐Ÿฉฐ", "๐Ÿ‘™", "๐Ÿงข", "๐Ÿฉฒ", "๐Ÿ‘", "๐Ÿงฅ", "๐Ÿ‘‘", "๐Ÿ‘—", "๐Ÿฅฟ", "๐Ÿ’Ž", "๐Ÿ‘“", "๐Ÿงค", "๐Ÿฅฝ", "๐ŸŽ“", "๐Ÿ‘œ", "๐Ÿ‘ ", "๐Ÿฅพ", "๐Ÿ‘–", "๐Ÿ‘˜", "๐Ÿฅผ", "๐Ÿ’„", "๐Ÿ‘ž", "๐Ÿช–", "๐Ÿ‘”", "๐Ÿฉฑ", "๐Ÿ“ฟ", "๐Ÿ‘›", "๐Ÿ’", "๐Ÿ‘Ÿ", "๐Ÿฆบ", "๐Ÿฅป", "๐Ÿงฃ", "๐Ÿฉณ", "๐Ÿงฆ", "๐Ÿฉด", "๐ŸŽฉ", "๐Ÿ‘•", "๐Ÿ‘ข", "๐Ÿ‘š", "๐Ÿ‘’", "๐Ÿ‘ก", "๐Ÿงฎ", "๐Ÿ”‹", "๐Ÿ’ฝ", "๐Ÿ“€", "๐Ÿ”Œ", "๐Ÿ’พ", "๐Ÿ’ป", "๐Ÿ’ฟ", "๐Ÿงบ", "๐Ÿ›", "๐Ÿงน", "๐Ÿชฃ", "๐Ÿช‘", "๐Ÿšช", "๐Ÿ›—", "๐Ÿงฏ", "๐Ÿงด", "๐Ÿชž", "๐Ÿชค", "๐Ÿช’", "๐Ÿงป", "๐Ÿงท", "๐Ÿ›’", "๐Ÿšฟ", "๐Ÿงผ", "๐Ÿงฝ", "๐Ÿšฝ", "๐Ÿชฅ", "๐ŸชŸ", "๐Ÿ“ท", "๐Ÿ“ธ", "๐ŸŽฌ", "๐Ÿช”", "๐Ÿ”ฆ", "๐Ÿ’ก", "๐Ÿ”", "๐Ÿ”Ž", "๐ŸŽฅ", "๐Ÿฎ", "๐Ÿ“บ", "๐Ÿ“ผ", "๐Ÿ“น", "๐Ÿ”‘", "๐Ÿ”’", "๐Ÿ”", "๐Ÿ”", "๐Ÿ”“", "๐Ÿ“ช", "๐Ÿ“ซ", "๐Ÿ“ฉ", "๐Ÿ“ง", "๐Ÿ“ฅ", "๐Ÿ“จ", "๐Ÿ“ญ", "๐Ÿ“ฌ", "๐Ÿ“ค", "๐Ÿ“ฆ", "๐Ÿ“ฎ", "๐Ÿฉน", "๐Ÿฉธ", "๐Ÿ’Š", "๐Ÿฉบ", "๐Ÿ’‰", "๐Ÿ’น", "๐Ÿช™", "๐Ÿ’ณ", "๐Ÿ’ต", "๐Ÿ’ถ", "๐Ÿ’ฐ", "๐Ÿ’ธ", "๐Ÿ’ท", "๐Ÿงพ", "๐Ÿ’ด", "๐ŸŽง", "๐ŸŽค", "๐ŸŽต", "๐ŸŽถ", "๐ŸŽผ", "๐Ÿ“ป", "๐Ÿช—", "๐Ÿช•", "๐Ÿฅ", "๐ŸŽธ", "๐Ÿช˜", "๐ŸŽน", "๐ŸŽท", "๐ŸŽบ", "๐ŸŽป", "๐Ÿ“Š", "๐Ÿ’ผ", "๐Ÿ“…", "๐Ÿ“‡", "๐Ÿ“‰", "๐Ÿ“ˆ", "๐Ÿ“‹", "๐Ÿ“", "๐Ÿ“‚", "๐Ÿ“Ž", "๐Ÿ“Œ", "๐Ÿ“", "๐Ÿ“", "๐Ÿ“†", "๐Ÿ“", "๐Ÿšฌ", "๐Ÿชฆ", "๐Ÿ—ฟ", "๐Ÿชง", "๐Ÿ“ ", "๐Ÿ“ฑ", "๐Ÿ“ฒ", "๐Ÿ“Ÿ", "๐Ÿ“ž", "๐Ÿงฌ", "๐Ÿ”ฌ", "๐Ÿงซ", "๐Ÿ“ก", "๐Ÿ”ญ", "๐Ÿงช", "๐Ÿ””", "๐Ÿ”•", "๐Ÿ“ข", "๐Ÿ“ฃ", "๐Ÿ”‡", "๐Ÿ“ฏ", "๐Ÿ”Š", "๐Ÿ”ˆ", "๐Ÿ”‰", "๐Ÿช“", "๐Ÿชƒ", "๐Ÿน", "๐Ÿชš", "๐Ÿ”จ", "๐Ÿช", "๐Ÿชœ", "๐Ÿ”—", "๐Ÿงฒ", "๐Ÿ”ฉ", "๐Ÿช›", "๐Ÿงฐ", "๐Ÿ”ซ", "๐Ÿฆฏ", "๐Ÿ”ง", "๐Ÿ“", "๐Ÿซ€", "๐Ÿฆด", "๐Ÿง ", "๐Ÿ‘‚", "๐Ÿฆป", "๐Ÿ‘€", "๐Ÿ’ช", "๐Ÿฆถ", "๐Ÿฆต", "๐Ÿซ", "๐Ÿฆพ", "๐Ÿฆฟ", "๐Ÿ‘„", "๐Ÿ‘ƒ", "๐Ÿ‘…", "๐Ÿฆท", "๐Ÿค›", "๐Ÿ‘Š", "โœŠ", "๐Ÿคœ", "๐Ÿ‘Ž", "๐Ÿ‘", "๐Ÿคš", "โœ‹", "๐Ÿ––", "๐Ÿ‘‹", "๐Ÿค™", "๐Ÿคž", "๐ŸคŸ", "๐Ÿ‘Œ", "๐ŸคŒ", "๐Ÿค", "๐Ÿค˜", "๐Ÿ’…", "๐Ÿคณ", "๐Ÿ‘‡", "๐Ÿ‘ˆ", "๐Ÿ‘‰", "๐Ÿ‘†", "๐Ÿ–•", "๐Ÿ‘", "๐Ÿ™", "๐Ÿค", "๐Ÿ‘", "๐Ÿคฒ", "๐Ÿ™Œ", "๐Ÿ‘ถ", "๐Ÿ‘ฆ", "๐Ÿง’", "๐Ÿ‘ง", "๐Ÿ‘จ", "๐Ÿง“", "๐Ÿ‘ด", "๐Ÿ‘ต", "๐Ÿง‘", "๐Ÿง”", "๐Ÿ‘ฑ", "๐Ÿ‘ฉ", "๐Ÿ•บ", "๐Ÿ‘ฏ", "๐Ÿง—", "๐Ÿ’‡", "๐Ÿ’†", "๐Ÿง–", "๐ŸงŽ", "๐Ÿƒ", "๐Ÿง", "๐Ÿšถ", "๐Ÿ’ƒ", "๐Ÿ‘ผ", "๐Ÿง", "๐Ÿงš", "๐Ÿงž", "๐Ÿง™", "๐Ÿงœ", "๐Ÿคถ", "๐ŸŽ…", "๐Ÿฆธ", "๐Ÿฆน", "๐Ÿง›", "๐ŸงŸ", "๐Ÿง", "๐Ÿ™‡", "๐Ÿคฆ", "๐Ÿ™", "๐Ÿ™…", "๐Ÿ™†", "๐Ÿ™Ž", "๐Ÿ™‹", "๐Ÿคท", "๐Ÿ’", "๐Ÿคฑ", "๐Ÿ‘ท", "๐Ÿ’‚", "๐Ÿฅท", "๐Ÿคต", "๐Ÿ‘ณ", "๐Ÿ‘ฒ", "๐Ÿ‘ฐ", "๐Ÿ‘ฎ", "๐Ÿคฐ", "๐Ÿคด", "๐Ÿ‘ธ", "๐Ÿง•", "๐Ÿ‡", "๐Ÿคผ", "๐Ÿšด", "๐Ÿคธ", "๐Ÿคบ", "๐Ÿคน", "๐Ÿšต", "๐Ÿคพ", "๐Ÿคฝ", "๐Ÿšฃ", "๐Ÿ„", "๐ŸŠ", "๐Ÿ‚", "๐Ÿ‘ฅ", "๐Ÿ‘ค", "๐Ÿ‘ฃ", "๐Ÿซ‚", "๐Ÿ’ข", "๐Ÿ’“", "๐Ÿ–ค", "๐Ÿ’™", "๐Ÿ’ฃ", "๐Ÿ’”", "๐ŸคŽ", "๐Ÿ’ฅ", "๐Ÿ’จ", "๐Ÿ’ซ", "๐Ÿ’š", "๐Ÿ’—", "๐Ÿ’Ÿ", "๐Ÿ’˜", "๐Ÿ’", "๐Ÿ’ฏ", "๐Ÿ’‹", "๐Ÿ’Œ", "๐Ÿงก", "๐Ÿ’œ", "๐Ÿ’ž", "๐Ÿ’–", "๐Ÿ’ฌ", "๐Ÿ’ฆ", "๐Ÿ’ญ", "๐Ÿ’•", "๐Ÿค", "๐Ÿ’›", "๐Ÿ’ค", "๐Ÿ˜˜", "๐Ÿ˜—", "๐Ÿ˜š", "๐Ÿ˜™", "๐Ÿฅฐ", "๐Ÿ˜", "๐Ÿฅฒ", "๐Ÿคฉ", "๐Ÿ˜ง", "๐Ÿ˜ฐ", "๐Ÿ˜ฒ", "๐Ÿ˜–", "๐Ÿ˜•", "๐Ÿ˜ข", "๐Ÿ˜ž", "๐Ÿ˜“", "๐Ÿ˜ฑ", "๐Ÿ˜ฎ", "๐Ÿ˜จ", "๐Ÿ˜ณ", "๐Ÿ˜ฆ", "๐Ÿ˜ฏ", "๐Ÿ˜ญ", "๐Ÿ˜ฃ", "๐Ÿฅบ", "๐Ÿ˜ฅ", "๐Ÿ™", "๐Ÿ˜ซ", "๐Ÿ˜ฉ", "๐Ÿ˜Ÿ", "๐Ÿฅฑ", "๐Ÿ‘ฝ", "๐Ÿ‘พ", "๐Ÿคก", "๐Ÿ‘ป", "๐Ÿ‘บ", "๐Ÿ‘น", "๐Ÿ’ฉ", "๐Ÿค–", "๐Ÿง", "๐Ÿค“", "๐Ÿ˜Ž", "๐Ÿคญ", "๐Ÿค—", "๐Ÿคซ", "๐Ÿค”", "๐Ÿค ", "๐Ÿฅธ", "๐Ÿฅณ", "๐Ÿ˜ ", "๐Ÿ‘ฟ", "๐Ÿ˜ค", "๐Ÿคฌ", "๐Ÿ˜ก", "๐Ÿ’€", "๐Ÿ˜ˆ", "๐Ÿ˜‘", "๐Ÿ˜ถ", "๐Ÿคจ", "๐Ÿ™„", "๐Ÿ˜ฌ", "๐Ÿคฅ", "๐Ÿ˜", "๐Ÿ˜", "๐Ÿ˜’", "๐Ÿค", "๐Ÿคค", "๐Ÿ˜”", "๐Ÿ˜Œ", "๐Ÿ˜ด", "๐Ÿ˜ช", "๐Ÿ˜", "๐Ÿ˜‚", "๐Ÿ˜€", "๐Ÿ˜ƒ", "๐Ÿ˜„", "๐Ÿ˜…", "๐Ÿ˜†", "๐Ÿคฃ", "๐Ÿ™‚", "๐Ÿ˜‡", "๐Ÿ˜Š", "๐Ÿ™ƒ", "๐Ÿ˜‰", "๐Ÿ˜‹", "๐Ÿ˜›", "๐Ÿค‘", "๐Ÿ˜", "๐Ÿ˜œ", "๐Ÿคช", "๐Ÿฅถ", "๐Ÿคฏ", "๐Ÿคฎ", "๐Ÿค•", "๐Ÿ˜ท", "๐Ÿค’", "๐Ÿฅต", "๐Ÿ˜ต", "๐Ÿคข", "๐Ÿคง", "๐Ÿฅด", "๐Ÿ†Ž", "๐Ÿ†‘", "๐Ÿ†’", "๐Ÿ†“", "๐Ÿ†”", "๐Ÿ”ค", "๐Ÿ”ก", "๐Ÿ” ", "๐Ÿ”ข", "๐Ÿ”ฃ", "๐Ÿ‰‘", "๐Ÿˆธ", "๐Ÿ‰", "๐Ÿˆน", "๐Ÿˆš", "๐Ÿˆ", "๐Ÿˆถ", "๐Ÿˆต", "๐Ÿˆบ", "๐Ÿˆด", "๐Ÿˆฒ", "๐Ÿˆฏ", "๐Ÿˆณ", "๐Ÿ†•", "๐Ÿ†–", "๐Ÿ†—", "๐Ÿ†˜", "๐Ÿ†™", "๐Ÿ†š", "๐Ÿ”™", "๐Ÿ”ƒ", "๐Ÿ”„", "๐Ÿ”š", "๐Ÿ”›", "๐Ÿ”œ", "๐Ÿ”", "๐Ÿ“ถ", "๐Ÿ”†", "๐ŸŽฆ", "๐Ÿ”…", "๐Ÿ”ฝ", "โฌ", "โฉ", "โช", "โซ", "๐Ÿ“ด", "๐Ÿ”", "๐Ÿ”‚", "๐Ÿ”€", "๐Ÿ”ผ", "๐Ÿ“ณ", "๐Ÿ’ฑ", "๐Ÿ’ฒ", "โž—", "โž–", "โž•", "โœ…", "โŒ", "โŽ", "โžฐ", "โžฟ", "โญ•", "๐Ÿ”ฐ", "๐Ÿ“›", "๐Ÿ”ฑ", "โ—", "โ“", "โ•", "โ”", "๐Ÿง", "๐Ÿšผ", "๐Ÿ›„", "๐Ÿ›ƒ", "๐Ÿ›…", "๐Ÿšฎ", "๐Ÿšน", "๐Ÿ›‚", "๐Ÿšฐ", "๐Ÿšป", "๐Ÿšพ", "โ™ฟ", "๐Ÿšบ", "๐Ÿšธ", "๐Ÿšฑ", "๐Ÿšณ", "โ›”", "๐Ÿšฏ", "๐Ÿ“ต", "๐Ÿ”ž", "๐Ÿšท", "๐Ÿšญ", "๐Ÿšซ", "๐Ÿฆ", "๐Ÿงฑ", "๐Ÿฐ", "๐Ÿช", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฅ", "๐Ÿจ", "๐Ÿ ", "๐Ÿก", "๐Ÿ›–", "๐Ÿฏ", "๐Ÿฃ", "๐Ÿฉ", "๐Ÿข", "๐Ÿค", "๐Ÿชจ", "๐Ÿซ", "๐Ÿ—ฝ", "๐Ÿ—ผ", "๐Ÿ’’", "๐Ÿชต", "๐Ÿ—ป", "๐ŸŒ‹", "๐Ÿ’ˆ", "๐ŸŒ‰", "๐ŸŽ ", "๐ŸŽช", "๐ŸŒ†", "๐ŸŽก", "๐ŸŒ", "โ›ฒ", "๐ŸŒƒ", "๐ŸŽข", "๐ŸŒ…", "๐ŸŒ„", "๐ŸŒ‡", "โ›บ", "โ›ช", "๐Ÿ›•", "๐Ÿ•‹", "๐Ÿ•Œ", "๐Ÿ•", "๐ŸŒ‚", "๐ŸŒ™", "๐ŸŒ€", "๐Ÿ’ง", "๐Ÿ”ฅ", "๐ŸŒ“", "๐ŸŒ›", "๐ŸŒ•", "๐ŸŒ", "๐ŸŒŸ", "โšก", "๐ŸŒ—", "๐ŸŒœ", "๐ŸŒŒ", "๐ŸŒ‘", "๐ŸŒš", "๐ŸŒˆ", "๐Ÿช", "๐ŸŒ ", "โ›„", "โญ", "โ›…", "๐ŸŒž", "โ˜”", "๐ŸŒ˜", "๐ŸŒ–", "๐ŸŒŠ", "๐ŸŒ’", "๐ŸŒ”", "โฐ", "๐Ÿ•—", "๐Ÿ•ฃ", "๐Ÿ•š", "๐Ÿ•ฆ", "๐Ÿ•”", "๐Ÿ• ", "๐Ÿ•“", "๐Ÿ•Ÿ", "โŒ›", "โณ", "๐Ÿ•˜", "๐Ÿ•ค", "๐Ÿ•", "๐Ÿ•œ", "๐Ÿ•–", "๐Ÿ•ข", "๐Ÿ••", "๐Ÿ•ก", "๐Ÿ•™", "๐Ÿ•ฅ", "๐Ÿ•’", "๐Ÿ•ž", "๐Ÿ•›", "๐Ÿ•ง", "๐Ÿ•‘", "๐Ÿ•", "โŒš", "๐Ÿšก", "๐Ÿ›ฌ", "๐Ÿ›ซ", "๐Ÿ›ธ", "๐Ÿš", "๐Ÿš ", "๐Ÿช‚", "๐Ÿš€", "๐Ÿ’บ", "๐ŸšŸ", "๐Ÿš‘", "๐Ÿš›", "๐Ÿš—", "๐Ÿ›บ", "๐Ÿšฒ", "๐Ÿš…", "๐ŸšŒ", "๐Ÿš", "๐Ÿšง", "๐Ÿšš", "๐Ÿš’", "โ›ฝ", "๐Ÿš„", "๐Ÿšฅ", "๐Ÿ›ด", "๐Ÿšˆ", "๐Ÿš‚", "๐Ÿฆฝ", "๐Ÿš‡", "๐Ÿš", "๐Ÿš", "๐Ÿฆผ", "๐Ÿ›ต", "๐Ÿšž", "๐Ÿš˜", "๐Ÿš", "๐Ÿš”", "๐Ÿš–", "๐Ÿ›ป", "๐Ÿš“", "๐Ÿšจ", "๐Ÿšƒ", "๐Ÿ›ผ", "๐Ÿ›น", "๐Ÿš™", "๐Ÿš‰" ]; } // Number base static get NUMBER_BASE() { // Return number base return Math.ceil(Math.log2(Emoji.GLYPHS["length"])); } // Extra bits value static get EXTRA_BITS_VALUE() { // Return extra bits value return 0; } } // Main function // Set global object's emoji globalThis["Emoji"] = Emoji;