Reputation: 2154
I have a String encoded in UTF-8. For example:
That's a nice joke ๐๐๐ ๐
I have to extract all the emojis present in the sentence. And the emoji could be anything.
When this sentence is viewed in terminal using command less text.txt
it is viewed as:
That's a nice joke <U+1F606><U+1F606><U+1F606> <U+1F61B>
This is the corresponding UTF code for the emoji. All the codes for emojis can be found at emojitracker.
For the purpose of finding all the occurances, I used a regular expression pattern (<U\+\w+?>)
but it didnt work for the UTF-8 encoded string.
Following is my code:
String s = "That's a nice joke ๐๐๐ ๐";
Pattern pattern = Pattern.compile("(<U\\+\\w+?>)");
Matcher matcher = pattern.matcher(s);
List<String> matchList = new ArrayList<>();
while (matcher.find()) {
matchList.add(matcher.group());
}
for (int i = 0; i < matchList.size(); i++) {
System.out.println(matchList.get(i));
}
This pdf says Range: 1F300โ1F5FF for Miscellaneous Symbols and Pictographs
. So I want to capture any character lying within this range.
Upvotes: 74
Views: 138216
Reputation: 1075079
Here in 2024 with Java 21, it's much simpler than it used to be back in 2014 when the answer below was written. You can use the Unicode character category IsEmoji
, see Mahozad's answer for details!
the pdf that you just mentioned says Range: 1F300โ1F5FF for Miscellaneous Symbols and Pictographs. So lets say I want to capture any character lying within this range. Now what to do?
Okay, but I will just note that the emoji in your question are outside that range! :-)
The fact that these are above 0xFFFF
complicates things, because Java strings store UTF-16. So we can't just use one simple character class for it. We're going to have surrogate pairs. (More: http://www.unicode.org/faq/utf_bom.html)
U+1F300 in UTF-16 ends up being the pair \uD83C\uDF00
; U+1F5FF ends up being \uD83D\uDDFF
. Note that the first character went up, we cross at least one boundary. So we have to know what ranges of surrogate pairs we're looking for.
Not being steeped in knowledge about the inner workings of UTF-16, I wrote a program to find out (source at the endย โ I'd double-check it if I were you, rather than trusting me). It tells me we're looking for \uD83C
followed by anything in the range \uDF00-\uDFFF
(inclusive), or \uD83D
followed by anything in the range \uDC00-\uDDFF
(inclusive).
So armed with that knowledge, in theory we could now write a pattern:
// This is wrong, keep reading
Pattern p = Pattern.compile("(?:\uD83C[\uDF00-\uDFFF])|(?:\uD83D[\uDC00-\uDDFF])");
That's an alternation of two non-capturing groups, the first group for the pairs starting with \uD83C
, and the second group for the pairs starting with \uD83D
.
But that fails (doesn't find anything). I'm fairly sure it's because we're trying to specify half of a surrogate pair in various places:
Pattern p = Pattern.compile("(?:\uD83C[\uDF00-\uDFFF])|(?:\uD83D[\uDC00-\uDDFF])");
// Half of a pair --------------^------^------^-----------^------^------^
We can't just split up surrogate pairs like that, they're called surrogate pairs for a reason. :-)
Consequently, I don't think we can use regular expressions (or indeed, any string-based approach) for this at all. I think we have to search through char
arrays.
char
arrays hold UTF-16 values, so we can find those half-pairs in the data if we look for it the hard way:
String s = new StringBuilder()
.append("Thats a nice joke ")
.appendCodePoint(0x1F606)
.appendCodePoint(0x1F606)
.appendCodePoint(0x1F606)
.append(" ")
.appendCodePoint(0x1F61B)
.toString();
char[] chars = s.toCharArray();
int index;
char ch1;
char ch2;
index = 0;
while (index < chars.length - 1) { // -1 because we're looking for two-char-long things
ch1 = chars[index];
if ((int)ch1 == 0xD83C) {
ch2 = chars[index+1];
if ((int)ch2 >= 0xDF00 && (int)ch2 <= 0xDFFF) {
System.out.println("Found emoji at index " + index);
index += 2;
continue;
}
}
else if ((int)ch1 == 0xD83D) {
ch2 = chars[index+1];
if ((int)ch2 >= 0xDC00 && (int)ch2 <= 0xDDFF) {
System.out.println("Found emoji at index " + index);
index += 2;
continue;
}
}
++index;
}
Obviously that's just debug-level code, but it does the job. (In your given string, with its emoji, of course it won't find anything as they're outside the range. But if you change the upper bound on the second pair to 0xDEFF
instead of 0xDDFF
, it will. No idea if that would also include non-emojis, though.)
Source of my program to find out what the surrogate ranges were:
public class FindRanges {
public static void main(String[] args) {
char last0 = '\0';
char last1 = '\0';
for (int x = 0x1F300; x <= 0x1F5FF; ++x) {
char[] chars = new StringBuilder().appendCodePoint(x).toString().toCharArray();
if (chars[0] != last0) {
if (last0 != '\0') {
System.out.println("-\\u" + Integer.toHexString((int)last1).toUpperCase());
}
System.out.print("\\u" + Integer.toHexString((int)chars[0]).toUpperCase() + " \\u" + Integer.toHexString((int)chars[1]).toUpperCase());
last0 = chars[0];
}
last1 = chars[1];
}
if (last0 != '\0') {
System.out.println("-\\u" + Integer.toHexString((int)last1).toUpperCase());
}
}
}
Output:
\uD83C \uDF00-\uDFFF \uD83D \uDC00-\uDDFF
Upvotes: 37
Reputation: 2167
There is a lifesaver project that can help:
https://github.com/mathiasbynens/emoji-test-regex-pattern
emoji-test-regex-pattern offers Java- and JavaScript-compatible regular expression patterns to match all emoji symbols and sequences listed in the emoji-test.txt file provided as part of Unicodeยฎ Technical Standard #51.
Moreover, it provides CPP and CSS compatible regular expression patterns. You'll find the generated patterns in the dist folder. All the regular expression patterns are generated based on Unicode data, so all unicode emojis are covered.For Javascript Project just use emoji-regex, which is powered by emoji-test-regex-pattern.
The generated full regex can be found here: https://github.com/mathiasbynens/emoji-test-regex-pattern/tree/main/dist/latest
Upvotes: 0
Reputation: 24622
This can be done with Java 21 new IsEmoji
character class:
var regex = "\\p{IsEmoji}";
var myString = "This is a โญ emoji and a \uD83C\uDF0D emoji";
var emojiRegex = "\\p{IsEmoji}";
var pattern = Pattern.compile(emojiRegex);
var matcher = pattern.matcher(myString);
var emojis = matcher.results().map(MatchResult::group).toList();
var emojisString = String.join(" ", emojis);
var myString = "This is a โญ emoji and a \uD83C\uDF0D emoji";
var emojiRegex = "\\p{IsEmoji}";
var myStringWithoutEmojis = myString.replaceAll(emojiRegex, "");
Upvotes: 6
Reputation: 7361
Here's a simpler approach and a regex that correctly parses (at current date May 2021) all 3,521 emojis.
It's a programmatically built, simple alternation the works by matching the longest emojis first, thus avoiding the problem that arises with a lot of suggested patterns, that of partial matching within compound emojis. (example: ๐ฉ๐ฟโโค๏ธโ๐โ๐จ๐ผ - since this is several emojis glued together with the Zero Width Joiner (U+200D
) you need to match the longer sequence without partial matching on the components)
So that the pattern is short enough to be pasted right here, we've brazenly used literal emojis, but unicode escapes work just as well (see links at bottom for demos and source code):
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyClass {
public static void main(String args[]) {
String line = "Adds ๐ซ word-relevant ๐ emojis ๐ค โค to ๐ฑ text โจ with ๐ sometimes ๐
๐ hilarious ๐ ๐ results ๐. Read more ๐๐
about๐จ๐พโโค๏ธโ๐โ๐จ๐ผ ma๐tching compound emojis";
String pattern = "(?:๐ง๐ปโโค๏ธโ๐โ๐ง๐ผ|๐ง๐ปโโค๏ธโ๐โ๐ง๐ฝ|๐ง๐ปโโค๏ธโ๐โ๐ง๐พ|๐ง๐ปโโค๏ธโ๐โ๐ง๐ฟ|๐ง๐ผโโค๏ธโ๐โ๐ง๐ป|๐ง๐ผโโค๏ธโ๐โ๐ง๐ฝ|๐ง๐ผโโค๏ธโ๐โ๐ง๐พ|๐ง๐ผโโค๏ธโ๐โ๐ง๐ฟ|๐ง๐ฝโโค๏ธโ๐โ๐ง๐ป|๐ง๐ฝโโค๏ธโ๐โ๐ง๐ผ|๐ง๐ฝโโค๏ธโ๐โ๐ง๐พ|๐ง๐ฝโโค๏ธโ๐โ๐ง๐ฟ|๐ง๐พโโค๏ธโ๐โ๐ง๐ป|๐ง๐พโโค๏ธโ๐โ๐ง๐ผ|๐ง๐พโโค๏ธโ๐โ๐ง๐ฝ|๐ง๐พโโค๏ธโ๐โ๐ง๐ฟ|๐ง๐ฟโโค๏ธโ๐โ๐ง๐ป|๐ง๐ฟโโค๏ธโ๐โ๐ง๐ผ|๐ง๐ฟโโค๏ธโ๐โ๐ง๐ฝ|๐ง๐ฟโโค๏ธโ๐โ๐ง๐พ|๐ฉ๐ปโโค๏ธโ๐โ๐จ๐ป|๐ฉ๐ปโโค๏ธโ๐โ๐จ๐ผ|๐ฉ๐ปโโค๏ธโ๐โ๐จ๐ฝ|๐ฉ๐ปโโค๏ธโ๐โ๐จ๐พ|๐ฉ๐ปโโค๏ธโ๐โ๐จ๐ฟ|๐ฉ๐ผโโค๏ธโ๐โ๐จ๐ป|๐ฉ๐ผโโค๏ธโ๐โ๐จ๐ผ|๐ฉ๐ผโโค๏ธโ๐โ๐จ๐ฝ|๐ฉ๐ผโโค๏ธโ๐โ๐จ๐พ|๐ฉ๐ผโโค๏ธโ๐โ๐จ๐ฟ|๐ฉ๐ฝโโค๏ธโ๐โ๐จ๐ป|๐ฉ๐ฝโโค๏ธโ๐โ๐จ๐ผ|๐ฉ๐ฝโโค๏ธโ๐โ๐จ๐ฝ|๐ฉ๐ฝโโค๏ธโ๐โ๐จ๐พ|๐ฉ๐ฝโโค๏ธโ๐โ๐จ๐ฟ|๐ฉ๐พโโค๏ธโ๐โ๐จ๐ป|๐ฉ๐พโโค๏ธโ๐โ๐จ๐ผ|๐ฉ๐พโโค๏ธโ๐โ๐จ๐ฝ|๐ฉ๐พโโค๏ธโ๐โ๐จ๐พ|๐ฉ๐พโโค๏ธโ๐โ๐จ๐ฟ|๐ฉ๐ฟโโค๏ธโ๐โ๐จ๐ป|๐ฉ๐ฟโโค๏ธโ๐โ๐จ๐ผ|๐ฉ๐ฟโโค๏ธโ๐โ๐จ๐ฝ|๐ฉ๐ฟโโค๏ธโ๐โ๐จ๐พ|๐ฉ๐ฟโโค๏ธโ๐โ๐จ๐ฟ|๐จ๐ปโโค๏ธโ๐โ๐จ๐ป|๐จ๐ปโโค๏ธโ๐โ๐จ๐ผ|๐จ๐ปโโค๏ธโ๐โ๐จ๐ฝ|๐จ๐ปโโค๏ธโ๐โ๐จ๐พ|๐จ๐ปโโค๏ธโ๐โ๐จ๐ฟ|๐จ๐ผโโค๏ธโ๐โ๐จ๐ป|๐จ๐ผโโค๏ธโ๐โ๐จ๐ผ|๐จ๐ผโโค๏ธโ๐โ๐จ๐ฝ|๐จ๐ผโโค๏ธโ๐โ๐จ๐พ|๐จ๐ผโโค๏ธโ๐โ๐จ๐ฟ|๐จ๐ฝโโค๏ธโ๐โ๐จ๐ป|๐จ๐ฝโโค๏ธโ๐โ๐จ๐ผ|๐จ๐ฝโโค๏ธโ๐โ๐จ๐ฝ|๐จ๐ฝโโค๏ธโ๐โ๐จ๐พ|๐จ๐ฝโโค๏ธโ๐โ๐จ๐ฟ|๐จ๐พโโค๏ธโ๐โ๐จ๐ป|๐จ๐พโโค๏ธโ๐โ๐จ๐ผ|๐จ๐พโโค๏ธโ๐โ๐จ๐ฝ|๐จ๐พโโค๏ธโ๐โ๐จ๐พ|๐จ๐พโโค๏ธโ๐โ๐จ๐ฟ|๐จ๐ฟโโค๏ธโ๐โ๐จ๐ป|๐จ๐ฟโโค๏ธโ๐โ๐จ๐ผ|๐จ๐ฟโโค๏ธโ๐โ๐จ๐ฝ|๐จ๐ฟโโค๏ธโ๐โ๐จ๐พ|๐จ๐ฟโโค๏ธโ๐โ๐จ๐ฟ|๐ฉ๐ปโโค๏ธโ๐โ๐ฉ๐ป|๐ฉ๐ปโโค๏ธโ๐โ๐ฉ๐ผ|๐ฉ๐ปโโค๏ธโ๐โ๐ฉ๐ฝ|๐ฉ๐ปโโค๏ธโ๐โ๐ฉ๐พ|๐ฉ๐ปโโค๏ธโ๐โ๐ฉ๐ฟ|๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ป|๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ผ|๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ฝ|๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐พ|๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ฟ|๐ฉ๐ฝโโค๏ธโ๐โ๐ฉ๐ป|๐ฉ๐ฝโโค๏ธโ๐โ๐ฉ๐ผ|๐ฉ๐ฝโโค๏ธโ๐โ๐ฉ๐ฝ|๐ฉ๐ฝโโค๏ธโ๐โ๐ฉ๐พ|๐ฉ๐ฝโโค๏ธโ๐โ๐ฉ๐ฟ|๐ฉ๐พโโค๏ธโ๐โ๐ฉ๐ป|๐ฉ๐พโโค๏ธโ๐โ๐ฉ๐ผ|๐ฉ๐พโโค๏ธโ๐โ๐ฉ๐ฝ|๐ฉ๐พโโค๏ธโ๐โ๐ฉ๐พ|๐ฉ๐พโโค๏ธโ๐โ๐ฉ๐ฟ|๐ฉ๐ฟโโค๏ธโ๐โ๐ฉ๐ป|๐ฉ๐ฟโโค๏ธโ๐โ๐ฉ๐ผ|๐ฉ๐ฟโโค๏ธโ๐โ๐ฉ๐ฝ|๐ฉ๐ฟโโค๏ธโ๐โ๐ฉ๐พ|๐ฉ๐ฟโโค๏ธโ๐โ๐ฉ๐ฟ|๐ด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ|๐ด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ|๐ด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ|๐ง๐ปโ๐คโ๐ง๐ป|๐ง๐ปโ๐คโ๐ง๐ผ|๐ง๐ปโ๐คโ๐ง๐ฝ|๐ง๐ปโ๐คโ๐ง๐พ|๐ง๐ปโ๐คโ๐ง๐ฟ|๐ง๐ผโ๐คโ๐ง๐ป|๐ง๐ผโ๐คโ๐ง๐ผ|๐ง๐ผโ๐คโ๐ง๐ฝ|๐ง๐ผโ๐คโ๐ง๐พ|๐ง๐ผโ๐คโ๐ง๐ฟ|๐ง๐ฝโ๐คโ๐ง๐ป|๐ง๐ฝโ๐คโ๐ง๐ผ|๐ง๐ฝโ๐คโ๐ง๐ฝ|๐ง๐ฝโ๐คโ๐ง๐พ|๐ง๐ฝโ๐คโ๐ง๐ฟ|๐ง๐พโ๐คโ๐ง๐ป|๐ง๐พโ๐คโ๐ง๐ผ|๐ง๐พโ๐คโ๐ง๐ฝ|๐ง๐พโ๐คโ๐ง๐พ|๐ง๐พโ๐คโ๐ง๐ฟ|๐ง๐ฟโ๐คโ๐ง๐ป|๐ง๐ฟโ๐คโ๐ง๐ผ|๐ง๐ฟโ๐คโ๐ง๐ฝ|๐ง๐ฟโ๐คโ๐ง๐พ|๐ง๐ฟโ๐คโ๐ง๐ฟ|๐ฉ๐ปโ๐คโ๐ฉ๐ผ|๐ฉ๐ปโ๐คโ๐ฉ๐ฝ|๐ฉ๐ปโ๐คโ๐ฉ๐พ|๐ฉ๐ปโ๐คโ๐ฉ๐ฟ|๐ฉ๐ผโ๐คโ๐ฉ๐ป|๐ฉ๐ผโ๐คโ๐ฉ๐ฝ|๐ฉ๐ผโ๐คโ๐ฉ๐พ|๐ฉ๐ผโ๐คโ๐ฉ๐ฟ|๐ฉ๐ฝโ๐คโ๐ฉ๐ป|๐ฉ๐ฝโ๐คโ๐ฉ๐ผ|๐ฉ๐ฝโ๐คโ๐ฉ๐พ|๐ฉ๐ฝโ๐คโ๐ฉ๐ฟ|๐ฉ๐พโ๐คโ๐ฉ๐ป|๐ฉ๐พโ๐คโ๐ฉ๐ผ|๐ฉ๐พโ๐คโ๐ฉ๐ฝ|๐ฉ๐พโ๐คโ๐ฉ๐ฟ|๐ฉ๐ฟโ๐คโ๐ฉ๐ป|๐ฉ๐ฟโ๐คโ๐ฉ๐ผ|๐ฉ๐ฟโ๐คโ๐ฉ๐ฝ|๐ฉ๐ฟโ๐คโ๐ฉ๐พ|๐ฉ๐ปโ๐คโ๐จ๐ผ|๐ฉ๐ปโ๐คโ๐จ๐ฝ|๐ฉ๐ปโ๐คโ๐จ๐พ|๐ฉ๐ปโ๐คโ๐จ๐ฟ|๐ฉ๐ผโ๐คโ๐จ๐ป|๐ฉ๐ผโ๐คโ๐จ๐ฝ|๐ฉ๐ผโ๐คโ๐จ๐พ|๐ฉ๐ผโ๐คโ๐จ๐ฟ|๐ฉ๐ฝโ๐คโ๐จ๐ป|๐ฉ๐ฝโ๐คโ๐จ๐ผ|๐ฉ๐ฝโ๐คโ๐จ๐พ|๐ฉ๐ฝโ๐คโ๐จ๐ฟ|๐ฉ๐พโ๐คโ๐จ๐ป|๐ฉ๐พโ๐คโ๐จ๐ผ|๐ฉ๐พโ๐คโ๐จ๐ฝ|๐ฉ๐พโ๐คโ๐จ๐ฟ|๐ฉ๐ฟโ๐คโ๐จ๐ป|๐ฉ๐ฟโ๐คโ๐จ๐ผ|๐ฉ๐ฟโ๐คโ๐จ๐ฝ|๐ฉ๐ฟโ๐คโ๐จ๐พ|๐จ๐ปโ๐คโ๐จ๐ผ|๐จ๐ปโ๐คโ๐จ๐ฝ|๐จ๐ปโ๐คโ๐จ๐พ|๐จ๐ปโ๐คโ๐จ๐ฟ|๐จ๐ผโ๐คโ๐จ๐ป|๐จ๐ผโ๐คโ๐จ๐ฝ|๐จ๐ผโ๐คโ๐จ๐พ|๐จ๐ผโ๐คโ๐จ๐ฟ|๐จ๐ฝโ๐คโ๐จ๐ป|๐จ๐ฝโ๐คโ๐จ๐ผ|๐จ๐ฝโ๐คโ๐จ๐พ|๐จ๐ฝโ๐คโ๐จ๐ฟ|๐จ๐พโ๐คโ๐จ๐ป|๐จ๐พโ๐คโ๐จ๐ผ|๐จ๐พโ๐คโ๐จ๐ฝ|๐จ๐พโ๐คโ๐จ๐ฟ|๐จ๐ฟโ๐คโ๐จ๐ป|๐จ๐ฟโ๐คโ๐จ๐ผ|๐จ๐ฟโ๐คโ๐จ๐ฝ|๐จ๐ฟโ๐คโ๐จ๐พ|๐ง๐ปโโค๏ธโ๐ง๐ผ|๐ง๐ปโโค๏ธโ๐ง๐ฝ|๐ง๐ปโโค๏ธโ๐ง๐พ|๐ง๐ปโโค๏ธโ๐ง๐ฟ|๐ง๐ผโโค๏ธโ๐ง๐ป|๐ง๐ผโโค๏ธโ๐ง๐ฝ|๐ง๐ผโโค๏ธโ๐ง๐พ|๐ง๐ผโโค๏ธโ๐ง๐ฟ|๐ง๐ฝโโค๏ธโ๐ง๐ป|๐ง๐ฝโโค๏ธโ๐ง๐ผ|๐ง๐ฝโโค๏ธโ๐ง๐พ|๐ง๐ฝโโค๏ธโ๐ง๐ฟ|๐ง๐พโโค๏ธโ๐ง๐ป|๐ง๐พโโค๏ธโ๐ง๐ผ|๐ง๐พโโค๏ธโ๐ง๐ฝ|๐ง๐พโโค๏ธโ๐ง๐ฟ|๐ง๐ฟโโค๏ธโ๐ง๐ป|๐ง๐ฟโโค๏ธโ๐ง๐ผ|๐ง๐ฟโโค๏ธโ๐ง๐ฝ|๐ง๐ฟโโค๏ธโ๐ง๐พ|๐ฉ๐ปโโค๏ธโ๐จ๐ป|๐ฉ๐ปโโค๏ธโ๐จ๐ผ|๐ฉ๐ปโโค๏ธโ๐จ๐ฝ|๐ฉ๐ปโโค๏ธโ๐จ๐พ|๐ฉ๐ปโโค๏ธโ๐จ๐ฟ|๐ฉ๐ผโโค๏ธโ๐จ๐ป|๐ฉ๐ผโโค๏ธโ๐จ๐ผ|๐ฉ๐ผโโค๏ธโ๐จ๐ฝ|๐ฉ๐ผโโค๏ธโ๐จ๐พ|๐ฉ๐ผโโค๏ธโ๐จ๐ฟ|๐ฉ๐ฝโโค๏ธโ๐จ๐ป|๐ฉ๐ฝโโค๏ธโ๐จ๐ผ|๐ฉ๐ฝโโค๏ธโ๐จ๐ฝ|๐ฉ๐ฝโโค๏ธโ๐จ๐พ|๐ฉ๐ฝโโค๏ธโ๐จ๐ฟ|๐ฉ๐พโโค๏ธโ๐จ๐ป|๐ฉ๐พโโค๏ธโ๐จ๐ผ|๐ฉ๐พโโค๏ธโ๐จ๐ฝ|๐ฉ๐พโโค๏ธโ๐จ๐พ|๐ฉ๐พโโค๏ธโ๐จ๐ฟ|๐ฉ๐ฟโโค๏ธโ๐จ๐ป|๐ฉ๐ฟโโค๏ธโ๐จ๐ผ|๐ฉ๐ฟโโค๏ธโ๐จ๐ฝ|๐ฉ๐ฟโโค๏ธโ๐จ๐พ|๐ฉ๐ฟโโค๏ธโ๐จ๐ฟ|๐จ๐ปโโค๏ธโ๐จ๐ป|๐จ๐ปโโค๏ธโ๐จ๐ผ|๐จ๐ปโโค๏ธโ๐จ๐ฝ|๐จ๐ปโโค๏ธโ๐จ๐พ|๐จ๐ปโโค๏ธโ๐จ๐ฟ|๐จ๐ผโโค๏ธโ๐จ๐ป|๐จ๐ผโโค๏ธโ๐จ๐ผ|๐จ๐ผโโค๏ธโ๐จ๐ฝ|๐จ๐ผโโค๏ธโ๐จ๐พ|๐จ๐ผโโค๏ธโ๐จ๐ฟ|๐จ๐ฝโโค๏ธโ๐จ๐ป|๐จ๐ฝโโค๏ธโ๐จ๐ผ|๐จ๐ฝโโค๏ธโ๐จ๐ฝ|๐จ๐ฝโโค๏ธโ๐จ๐พ|๐จ๐ฝโโค๏ธโ๐จ๐ฟ|๐จ๐พโโค๏ธโ๐จ๐ป|๐จ๐พโโค๏ธโ๐จ๐ผ|๐จ๐พโโค๏ธโ๐จ๐ฝ|๐จ๐พโโค๏ธโ๐จ๐พ|๐จ๐พโโค๏ธโ๐จ๐ฟ|๐จ๐ฟโโค๏ธโ๐จ๐ป|๐จ๐ฟโโค๏ธโ๐จ๐ผ|๐จ๐ฟโโค๏ธโ๐จ๐ฝ|๐จ๐ฟโโค๏ธโ๐จ๐พ|๐จ๐ฟโโค๏ธโ๐จ๐ฟ|๐ฉ๐ปโโค๏ธโ๐ฉ๐ป|๐ฉ๐ปโโค๏ธโ๐ฉ๐ผ|๐ฉ๐ปโโค๏ธโ๐ฉ๐ฝ|๐ฉ๐ปโโค๏ธโ๐ฉ๐พ|๐ฉ๐ปโโค๏ธโ๐ฉ๐ฟ|๐ฉ๐ผโโค๏ธโ๐ฉ๐ป|๐ฉ๐ผโโค๏ธโ๐ฉ๐ผ|๐ฉ๐ผโโค๏ธโ๐ฉ๐ฝ|๐ฉ๐ผโโค๏ธโ๐ฉ๐พ|๐ฉ๐ผโโค๏ธโ๐ฉ๐ฟ|๐ฉ๐ฝโโค๏ธโ๐ฉ๐ป|๐ฉ๐ฝโโค๏ธโ๐ฉ๐ผ|๐ฉ๐ฝโโค๏ธโ๐ฉ๐ฝ|๐ฉ๐ฝโโค๏ธโ๐ฉ๐พ|๐ฉ๐ฝโโค๏ธโ๐ฉ๐ฟ|๐ฉ๐พโโค๏ธโ๐ฉ๐ป|๐ฉ๐พโโค๏ธโ๐ฉ๐ผ|๐ฉ๐พโโค๏ธโ๐ฉ๐ฝ|๐ฉ๐พโโค๏ธโ๐ฉ๐พ|๐ฉ๐พโโค๏ธโ๐ฉ๐ฟ|๐ฉ๐ฟโโค๏ธโ๐ฉ๐ป|๐ฉ๐ฟโโค๏ธโ๐ฉ๐ผ|๐ฉ๐ฟโโค๏ธโ๐ฉ๐ฝ|๐ฉ๐ฟโโค๏ธโ๐ฉ๐พ|๐ฉ๐ฟโโค๏ธโ๐ฉ๐ฟ|๐ฉโโค๏ธโ๐โ๐จ|๐จโโค๏ธโ๐โ๐จ|๐ฉโโค๏ธโ๐โ๐ฉ|๐จโ๐ฉโ๐งโ๐ฆ|๐จโ๐ฉโ๐ฆโ๐ฆ|๐จโ๐ฉโ๐งโ๐ง|๐จโ๐จโ๐งโ๐ฆ|๐จโ๐จโ๐ฆโ๐ฆ|๐จโ๐จโ๐งโ๐ง|๐ฉโ๐ฉโ๐งโ๐ฆ|๐ฉโ๐ฉโ๐ฆโ๐ฆ|๐ฉโ๐ฉโ๐งโ๐ง|๐งโ๐คโ๐ง|๐ฉโโค๏ธโ๐จ|๐จโโค๏ธโ๐จ|๐ฉโโค๏ธโ๐ฉ|๐จโ๐ฉโ๐ฆ|๐จโ๐ฉโ๐ง|๐จโ๐จโ๐ฆ|๐จโ๐จโ๐ง|๐ฉโ๐ฉโ๐ฆ|๐ฉโ๐ฉโ๐ง|๐จโ๐ฆโ๐ฆ|๐จโ๐งโ๐ฆ|๐จโ๐งโ๐ง|๐ฉโ๐ฆโ๐ฆ|๐ฉโ๐งโ๐ฆ|๐ฉโ๐งโ๐ง|๐๏ธโ๐จ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐จ๐ปโ๐ฆฐ|๐จ๐ผโ๐ฆฐ|๐จ๐ฝโ๐ฆฐ|๐จ๐พโ๐ฆฐ|๐จ๐ฟโ๐ฆฐ|๐จ๐ปโ๐ฆฑ|๐จ๐ผโ๐ฆฑ|๐จ๐ฝโ๐ฆฑ|๐จ๐พโ๐ฆฑ|๐จ๐ฟโ๐ฆฑ|๐จ๐ปโ๐ฆณ|๐จ๐ผโ๐ฆณ|๐จ๐ฝโ๐ฆณ|๐จ๐พโ๐ฆณ|๐จ๐ฟโ๐ฆณ|๐จ๐ปโ๐ฆฒ|๐จ๐ผโ๐ฆฒ|๐จ๐ฝโ๐ฆฒ|๐จ๐พโ๐ฆฒ|๐จ๐ฟโ๐ฆฒ|๐ฉ๐ปโ๐ฆฐ|๐ฉ๐ผโ๐ฆฐ|๐ฉ๐ฝโ๐ฆฐ|๐ฉ๐พโ๐ฆฐ|๐ฉ๐ฟโ๐ฆฐ|๐ง๐ปโ๐ฆฐ|๐ง๐ผโ๐ฆฐ|๐ง๐ฝโ๐ฆฐ|๐ง๐พโ๐ฆฐ|๐ง๐ฟโ๐ฆฐ|๐ฉ๐ปโ๐ฆฑ|๐ฉ๐ผโ๐ฆฑ|๐ฉ๐ฝโ๐ฆฑ|๐ฉ๐พโ๐ฆฑ|๐ฉ๐ฟโ๐ฆฑ|๐ง๐ปโ๐ฆฑ|๐ง๐ผโ๐ฆฑ|๐ง๐ฝโ๐ฆฑ|๐ง๐พโ๐ฆฑ|๐ง๐ฟโ๐ฆฑ|๐ฉ๐ปโ๐ฆณ|๐ฉ๐ผโ๐ฆณ|๐ฉ๐ฝโ๐ฆณ|๐ฉ๐พโ๐ฆณ|๐ฉ๐ฟโ๐ฆณ|๐ง๐ปโ๐ฆณ|๐ง๐ผโ๐ฆณ|๐ง๐ฝโ๐ฆณ|๐ง๐พโ๐ฆณ|๐ง๐ฟโ๐ฆณ|๐ฉ๐ปโ๐ฆฒ|๐ฉ๐ผโ๐ฆฒ|๐ฉ๐ฝโ๐ฆฒ|๐ฉ๐พโ๐ฆฒ|๐ฉ๐ฟโ๐ฆฒ|๐ง๐ปโ๐ฆฒ|๐ง๐ผโ๐ฆฒ|๐ง๐ฝโ๐ฆฒ|๐ง๐พโ๐ฆฒ|๐ง๐ฟโ๐ฆฒ|๐ฑ๐ปโโ๏ธ|๐ฑ๐ผโโ๏ธ|๐ฑ๐ฝโโ๏ธ|๐ฑ๐พโโ๏ธ|๐ฑ๐ฟโโ๏ธ|๐ฑ๐ปโโ๏ธ|๐ฑ๐ผโโ๏ธ|๐ฑ๐ฝโโ๏ธ|๐ฑ๐พโโ๏ธ|๐ฑ๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐
๐ปโโ๏ธ|๐
๐ผโโ๏ธ|๐
๐ฝโโ๏ธ|๐
๐พโโ๏ธ|๐
๐ฟโโ๏ธ|๐
๐ปโโ๏ธ|๐
๐ผโโ๏ธ|๐
๐ฝโโ๏ธ|๐
๐พโโ๏ธ|๐
๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐คฆ๐ปโโ๏ธ|๐คฆ๐ผโโ๏ธ|๐คฆ๐ฝโโ๏ธ|๐คฆ๐พโโ๏ธ|๐คฆ๐ฟโโ๏ธ|๐คฆ๐ปโโ๏ธ|๐คฆ๐ผโโ๏ธ|๐คฆ๐ฝโโ๏ธ|๐คฆ๐พโโ๏ธ|๐คฆ๐ฟโโ๏ธ|๐คท๐ปโโ๏ธ|๐คท๐ผโโ๏ธ|๐คท๐ฝโโ๏ธ|๐คท๐พโโ๏ธ|๐คท๐ฟโโ๏ธ|๐คท๐ปโโ๏ธ|๐คท๐ผโโ๏ธ|๐คท๐ฝโโ๏ธ|๐คท๐พโโ๏ธ|๐คท๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐จ๐ปโโ๏ธ|๐จ๐ผโโ๏ธ|๐จ๐ฝโโ๏ธ|๐จ๐พโโ๏ธ|๐จ๐ฟโโ๏ธ|๐ฉ๐ปโโ๏ธ|๐ฉ๐ผโโ๏ธ|๐ฉ๐ฝโโ๏ธ|๐ฉ๐พโโ๏ธ|๐ฉ๐ฟโโ๏ธ|๐ง๐ปโ๐|๐ง๐ผโ๐|๐ง๐ฝโ๐|๐ง๐พโ๐|๐ง๐ฟโ๐|๐จ๐ปโ๐|๐จ๐ผโ๐|๐จ๐ฝโ๐|๐จ๐พโ๐|๐จ๐ฟโ๐|๐ฉ๐ปโ๐|๐ฉ๐ผโ๐|๐ฉ๐ฝโ๐|๐ฉ๐พโ๐|๐ฉ๐ฟโ๐|๐ง๐ปโ๐ซ|๐ง๐ผโ๐ซ|๐ง๐ฝโ๐ซ|๐ง๐พโ๐ซ|๐ง๐ฟโ๐ซ|๐จ๐ปโ๐ซ|๐จ๐ผโ๐ซ|๐จ๐ฝโ๐ซ|๐จ๐พโ๐ซ|๐จ๐ฟโ๐ซ|๐ฉ๐ปโ๐ซ|๐ฉ๐ผโ๐ซ|๐ฉ๐ฝโ๐ซ|๐ฉ๐พโ๐ซ|๐ฉ๐ฟโ๐ซ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐จ๐ปโโ๏ธ|๐จ๐ผโโ๏ธ|๐จ๐ฝโโ๏ธ|๐จ๐พโโ๏ธ|๐จ๐ฟโโ๏ธ|๐ฉ๐ปโโ๏ธ|๐ฉ๐ผโโ๏ธ|๐ฉ๐ฝโโ๏ธ|๐ฉ๐พโโ๏ธ|๐ฉ๐ฟโโ๏ธ|๐ง๐ปโ๐พ|๐ง๐ผโ๐พ|๐ง๐ฝโ๐พ|๐ง๐พโ๐พ|๐ง๐ฟโ๐พ|๐จ๐ปโ๐พ|๐จ๐ผโ๐พ|๐จ๐ฝโ๐พ|๐จ๐พโ๐พ|๐จ๐ฟโ๐พ|๐ฉ๐ปโ๐พ|๐ฉ๐ผโ๐พ|๐ฉ๐ฝโ๐พ|๐ฉ๐พโ๐พ|๐ฉ๐ฟโ๐พ|๐ง๐ปโ๐ณ|๐ง๐ผโ๐ณ|๐ง๐ฝโ๐ณ|๐ง๐พโ๐ณ|๐ง๐ฟโ๐ณ|๐จ๐ปโ๐ณ|๐จ๐ผโ๐ณ|๐จ๐ฝโ๐ณ|๐จ๐พโ๐ณ|๐จ๐ฟโ๐ณ|๐ฉ๐ปโ๐ณ|๐ฉ๐ผโ๐ณ|๐ฉ๐ฝโ๐ณ|๐ฉ๐พโ๐ณ|๐ฉ๐ฟโ๐ณ|๐ง๐ปโ๐ง|๐ง๐ผโ๐ง|๐ง๐ฝโ๐ง|๐ง๐พโ๐ง|๐ง๐ฟโ๐ง|๐จ๐ปโ๐ง|๐จ๐ผโ๐ง|๐จ๐ฝโ๐ง|๐จ๐พโ๐ง|๐จ๐ฟโ๐ง|๐ฉ๐ปโ๐ง|๐ฉ๐ผโ๐ง|๐ฉ๐ฝโ๐ง|๐ฉ๐พโ๐ง|๐ฉ๐ฟโ๐ง|๐ง๐ปโ๐ญ|๐ง๐ผโ๐ญ|๐ง๐ฝโ๐ญ|๐ง๐พโ๐ญ|๐ง๐ฟโ๐ญ|๐จ๐ปโ๐ญ|๐จ๐ผโ๐ญ|๐จ๐ฝโ๐ญ|๐จ๐พโ๐ญ|๐จ๐ฟโ๐ญ|๐ฉ๐ปโ๐ญ|๐ฉ๐ผโ๐ญ|๐ฉ๐ฝโ๐ญ|๐ฉ๐พโ๐ญ|๐ฉ๐ฟโ๐ญ|๐ง๐ปโ๐ผ|๐ง๐ผโ๐ผ|๐ง๐ฝโ๐ผ|๐ง๐พโ๐ผ|๐ง๐ฟโ๐ผ|๐จ๐ปโ๐ผ|๐จ๐ผโ๐ผ|๐จ๐ฝโ๐ผ|๐จ๐พโ๐ผ|๐จ๐ฟโ๐ผ|๐ฉ๐ปโ๐ผ|๐ฉ๐ผโ๐ผ|๐ฉ๐ฝโ๐ผ|๐ฉ๐พโ๐ผ|๐ฉ๐ฟโ๐ผ|๐ง๐ปโ๐ฌ|๐ง๐ผโ๐ฌ|๐ง๐ฝโ๐ฌ|๐ง๐พโ๐ฌ|๐ง๐ฟโ๐ฌ|๐จ๐ปโ๐ฌ|๐จ๐ผโ๐ฌ|๐จ๐ฝโ๐ฌ|๐จ๐พโ๐ฌ|๐จ๐ฟโ๐ฌ|๐ฉ๐ปโ๐ฌ|๐ฉ๐ผโ๐ฌ|๐ฉ๐ฝโ๐ฌ|๐ฉ๐พโ๐ฌ|๐ฉ๐ฟโ๐ฌ|๐ง๐ปโ๐ป|๐ง๐ผโ๐ป|๐ง๐ฝโ๐ป|๐ง๐พโ๐ป|๐ง๐ฟโ๐ป|๐จ๐ปโ๐ป|๐จ๐ผโ๐ป|๐จ๐ฝโ๐ป|๐จ๐พโ๐ป|๐จ๐ฟโ๐ป|๐ฉ๐ปโ๐ป|๐ฉ๐ผโ๐ป|๐ฉ๐ฝโ๐ป|๐ฉ๐พโ๐ป|๐ฉ๐ฟโ๐ป|๐ง๐ปโ๐ค|๐ง๐ผโ๐ค|๐ง๐ฝโ๐ค|๐ง๐พโ๐ค|๐ง๐ฟโ๐ค|๐จ๐ปโ๐ค|๐จ๐ผโ๐ค|๐จ๐ฝโ๐ค|๐จ๐พโ๐ค|๐จ๐ฟโ๐ค|๐ฉ๐ปโ๐ค|๐ฉ๐ผโ๐ค|๐ฉ๐ฝโ๐ค|๐ฉ๐พโ๐ค|๐ฉ๐ฟโ๐ค|๐ง๐ปโ๐จ|๐ง๐ผโ๐จ|๐ง๐ฝโ๐จ|๐ง๐พโ๐จ|๐ง๐ฟโ๐จ|๐จ๐ปโ๐จ|๐จ๐ผโ๐จ|๐จ๐ฝโ๐จ|๐จ๐พโ๐จ|๐จ๐ฟโ๐จ|๐ฉ๐ปโ๐จ|๐ฉ๐ผโ๐จ|๐ฉ๐ฝโ๐จ|๐ฉ๐พโ๐จ|๐ฉ๐ฟโ๐จ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐จ๐ปโโ๏ธ|๐จ๐ผโโ๏ธ|๐จ๐ฝโโ๏ธ|๐จ๐พโโ๏ธ|๐จ๐ฟโโ๏ธ|๐ฉ๐ปโโ๏ธ|๐ฉ๐ผโโ๏ธ|๐ฉ๐ฝโโ๏ธ|๐ฉ๐พโโ๏ธ|๐ฉ๐ฟโโ๏ธ|๐ง๐ปโ๐|๐ง๐ผโ๐|๐ง๐ฝโ๐|๐ง๐พโ๐|๐ง๐ฟโ๐|๐จ๐ปโ๐|๐จ๐ผโ๐|๐จ๐ฝโ๐|๐จ๐พโ๐|๐จ๐ฟโ๐|๐ฉ๐ปโ๐|๐ฉ๐ผโ๐|๐ฉ๐ฝโ๐|๐ฉ๐พโ๐|๐ฉ๐ฟโ๐|๐ง๐ปโ๐|๐ง๐ผโ๐|๐ง๐ฝโ๐|๐ง๐พโ๐|๐ง๐ฟโ๐|๐จ๐ปโ๐|๐จ๐ผโ๐|๐จ๐ฝโ๐|๐จ๐พโ๐|๐จ๐ฟโ๐|๐ฉ๐ปโ๐|๐ฉ๐ผโ๐|๐ฉ๐ฝโ๐|๐ฉ๐พโ๐|๐ฉ๐ฟโ๐|๐ฎ๐ปโโ๏ธ|๐ฎ๐ผโโ๏ธ|๐ฎ๐ฝโโ๏ธ|๐ฎ๐พโโ๏ธ|๐ฎ๐ฟโโ๏ธ|๐ฎ๐ปโโ๏ธ|๐ฎ๐ผโโ๏ธ|๐ฎ๐ฝโโ๏ธ|๐ฎ๐พโโ๏ธ|๐ฎ๐ฟโโ๏ธ|๐ต๐ปโโ๏ธ|๐ต๐ผโโ๏ธ|๐ต๐ฝโโ๏ธ|๐ต๐พโโ๏ธ|๐ต๐ฟโโ๏ธ|๐ต๐ปโโ๏ธ|๐ต๐ผโโ๏ธ|๐ต๐ฝโโ๏ธ|๐ต๐พโโ๏ธ|๐ต๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐ท๐ปโโ๏ธ|๐ท๐ผโโ๏ธ|๐ท๐ฝโโ๏ธ|๐ท๐พโโ๏ธ|๐ท๐ฟโโ๏ธ|๐ท๐ปโโ๏ธ|๐ท๐ผโโ๏ธ|๐ท๐ฝโโ๏ธ|๐ท๐พโโ๏ธ|๐ท๐ฟโโ๏ธ|๐ณ๐ปโโ๏ธ|๐ณ๐ผโโ๏ธ|๐ณ๐ฝโโ๏ธ|๐ณ๐พโโ๏ธ|๐ณ๐ฟโโ๏ธ|๐ณ๐ปโโ๏ธ|๐ณ๐ผโโ๏ธ|๐ณ๐ฝโโ๏ธ|๐ณ๐พโโ๏ธ|๐ณ๐ฟโโ๏ธ|๐คต๐ปโโ๏ธ|๐คต๐ผโโ๏ธ|๐คต๐ฝโโ๏ธ|๐คต๐พโโ๏ธ|๐คต๐ฟโโ๏ธ|๐คต๐ปโโ๏ธ|๐คต๐ผโโ๏ธ|๐คต๐ฝโโ๏ธ|๐คต๐พโโ๏ธ|๐คต๐ฟโโ๏ธ|๐ฐ๐ปโโ๏ธ|๐ฐ๐ผโโ๏ธ|๐ฐ๐ฝโโ๏ธ|๐ฐ๐พโโ๏ธ|๐ฐ๐ฟโโ๏ธ|๐ฐ๐ปโโ๏ธ|๐ฐ๐ผโโ๏ธ|๐ฐ๐ฝโโ๏ธ|๐ฐ๐พโโ๏ธ|๐ฐ๐ฟโโ๏ธ|๐ฉ๐ปโ๐ผ|๐ฉ๐ผโ๐ผ|๐ฉ๐ฝโ๐ผ|๐ฉ๐พโ๐ผ|๐ฉ๐ฟโ๐ผ|๐จ๐ปโ๐ผ|๐จ๐ผโ๐ผ|๐จ๐ฝโ๐ผ|๐จ๐พโ๐ผ|๐จ๐ฟโ๐ผ|๐ง๐ปโ๐ผ|๐ง๐ผโ๐ผ|๐ง๐ฝโ๐ผ|๐ง๐พโ๐ผ|๐ง๐ฟโ๐ผ|๐ง๐ปโ๐|๐ง๐ผโ๐|๐ง๐ฝโ๐|๐ง๐พโ๐|๐ง๐ฟโ๐|๐ฆธ๐ปโโ๏ธ|๐ฆธ๐ผโโ๏ธ|๐ฆธ๐ฝโโ๏ธ|๐ฆธ๐พโโ๏ธ|๐ฆธ๐ฟโโ๏ธ|๐ฆธ๐ปโโ๏ธ|๐ฆธ๐ผโโ๏ธ|๐ฆธ๐ฝโโ๏ธ|๐ฆธ๐พโโ๏ธ|๐ฆธ๐ฟโโ๏ธ|๐ฆน๐ปโโ๏ธ|๐ฆน๐ผโโ๏ธ|๐ฆน๐ฝโโ๏ธ|๐ฆน๐พโโ๏ธ|๐ฆน๐ฟโโ๏ธ|๐ฆน๐ปโโ๏ธ|๐ฆน๐ผโโ๏ธ|๐ฆน๐ฝโโ๏ธ|๐ฆน๐พโโ๏ธ|๐ฆน๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐ถ๐ปโโ๏ธ|๐ถ๐ผโโ๏ธ|๐ถ๐ฝโโ๏ธ|๐ถ๐พโโ๏ธ|๐ถ๐ฟโโ๏ธ|๐ถ๐ปโโ๏ธ|๐ถ๐ผโโ๏ธ|๐ถ๐ฝโโ๏ธ|๐ถ๐พโโ๏ธ|๐ถ๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโ๐ฆฏ|๐ง๐ผโ๐ฆฏ|๐ง๐ฝโ๐ฆฏ|๐ง๐พโ๐ฆฏ|๐ง๐ฟโ๐ฆฏ|๐จ๐ปโ๐ฆฏ|๐จ๐ผโ๐ฆฏ|๐จ๐ฝโ๐ฆฏ|๐จ๐พโ๐ฆฏ|๐จ๐ฟโ๐ฆฏ|๐ฉ๐ปโ๐ฆฏ|๐ฉ๐ผโ๐ฆฏ|๐ฉ๐ฝโ๐ฆฏ|๐ฉ๐พโ๐ฆฏ|๐ฉ๐ฟโ๐ฆฏ|๐ง๐ปโ๐ฆผ|๐ง๐ผโ๐ฆผ|๐ง๐ฝโ๐ฆผ|๐ง๐พโ๐ฆผ|๐ง๐ฟโ๐ฆผ|๐จ๐ปโ๐ฆผ|๐จ๐ผโ๐ฆผ|๐จ๐ฝโ๐ฆผ|๐จ๐พโ๐ฆผ|๐จ๐ฟโ๐ฆผ|๐ฉ๐ปโ๐ฆผ|๐ฉ๐ผโ๐ฆผ|๐ฉ๐ฝโ๐ฆผ|๐ฉ๐พโ๐ฆผ|๐ฉ๐ฟโ๐ฆผ|๐ง๐ปโ๐ฆฝ|๐ง๐ผโ๐ฆฝ|๐ง๐ฝโ๐ฆฝ|๐ง๐พโ๐ฆฝ|๐ง๐ฟโ๐ฆฝ|๐จ๐ปโ๐ฆฝ|๐จ๐ผโ๐ฆฝ|๐จ๐ฝโ๐ฆฝ|๐จ๐พโ๐ฆฝ|๐จ๐ฟโ๐ฆฝ|๐ฉ๐ปโ๐ฆฝ|๐ฉ๐ผโ๐ฆฝ|๐ฉ๐ฝโ๐ฆฝ|๐ฉ๐พโ๐ฆฝ|๐ฉ๐ฟโ๐ฆฝ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐ฃ๐ปโโ๏ธ|๐ฃ๐ผโโ๏ธ|๐ฃ๐ฝโโ๏ธ|๐ฃ๐พโโ๏ธ|๐ฃ๐ฟโโ๏ธ|๐ฃ๐ปโโ๏ธ|๐ฃ๐ผโโ๏ธ|๐ฃ๐ฝโโ๏ธ|๐ฃ๐พโโ๏ธ|๐ฃ๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐๐ปโโ๏ธ|๐๐ผโโ๏ธ|๐๐ฝโโ๏ธ|๐๐พโโ๏ธ|๐๐ฟโโ๏ธ|๐ด๐ปโโ๏ธ|๐ด๐ผโโ๏ธ|๐ด๐ฝโโ๏ธ|๐ด๐พโโ๏ธ|๐ด๐ฟโโ๏ธ|๐ด๐ปโโ๏ธ|๐ด๐ผโโ๏ธ|๐ด๐ฝโโ๏ธ|๐ด๐พโโ๏ธ|๐ด๐ฟโโ๏ธ|๐ต๐ปโโ๏ธ|๐ต๐ผโโ๏ธ|๐ต๐ฝโโ๏ธ|๐ต๐พโโ๏ธ|๐ต๐ฟโโ๏ธ|๐ต๐ปโโ๏ธ|๐ต๐ผโโ๏ธ|๐ต๐ฝโโ๏ธ|๐ต๐พโโ๏ธ|๐ต๐ฟโโ๏ธ|๐คธ๐ปโโ๏ธ|๐คธ๐ผโโ๏ธ|๐คธ๐ฝโโ๏ธ|๐คธ๐พโโ๏ธ|๐คธ๐ฟโโ๏ธ|๐คธ๐ปโโ๏ธ|๐คธ๐ผโโ๏ธ|๐คธ๐ฝโโ๏ธ|๐คธ๐พโโ๏ธ|๐คธ๐ฟโโ๏ธ|๐คฝ๐ปโโ๏ธ|๐คฝ๐ผโโ๏ธ|๐คฝ๐ฝโโ๏ธ|๐คฝ๐พโโ๏ธ|๐คฝ๐ฟโโ๏ธ|๐คฝ๐ปโโ๏ธ|๐คฝ๐ผโโ๏ธ|๐คฝ๐ฝโโ๏ธ|๐คฝ๐พโโ๏ธ|๐คฝ๐ฟโโ๏ธ|๐คพ๐ปโโ๏ธ|๐คพ๐ผโโ๏ธ|๐คพ๐ฝโโ๏ธ|๐คพ๐พโโ๏ธ|๐คพ๐ฟโโ๏ธ|๐คพ๐ปโโ๏ธ|๐คพ๐ผโโ๏ธ|๐คพ๐ฝโโ๏ธ|๐คพ๐พโโ๏ธ|๐คพ๐ฟโโ๏ธ|๐คน๐ปโโ๏ธ|๐คน๐ผโโ๏ธ|๐คน๐ฝโโ๏ธ|๐คน๐พโโ๏ธ|๐คน๐ฟโโ๏ธ|๐คน๐ปโโ๏ธ|๐คน๐ผโโ๏ธ|๐คน๐ฝโโ๏ธ|๐คน๐พโโ๏ธ|๐คน๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ง๐ปโโ๏ธ|๐ง๐ผโโ๏ธ|๐ง๐ฝโโ๏ธ|๐ง๐พโโ๏ธ|๐ง๐ฟโโ๏ธ|๐ถโ๐ซ๏ธ|๐ต๏ธโโ๏ธ|๐ต๏ธโโ๏ธ|๐๏ธโโ๏ธ|๐๏ธโโ๏ธ|๐๏ธโโ๏ธ|๐๏ธโโ๏ธ|๐ณ๏ธโ๐|๐ณ๏ธโโง๏ธ|โน๐ปโโ๏ธ|โน๐ผโโ๏ธ|โน๐ฝโโ๏ธ|โน๐พโโ๏ธ|โน๐ฟโโ๏ธ|โน๐ปโโ๏ธ|โน๐ผโโ๏ธ|โน๐ฝโโ๏ธ|โน๐พโโ๏ธ|โน๐ฟโโ๏ธ|๐ฎโ๐จ|๐ตโ๐ซ|โค๏ธโ๐ฅ|โค๏ธโ๐ฉน|๐งโโ๏ธ|๐งโโ๏ธ|๐จโ๐ฆฐ|๐จโ๐ฆฑ|๐จโ๐ฆณ|๐จโ๐ฆฒ|๐ฉโ๐ฆฐ|๐งโ๐ฆฐ|๐ฉโ๐ฆฑ|๐งโ๐ฆฑ|๐ฉโ๐ฆณ|๐งโ๐ฆณ|๐ฉโ๐ฆฒ|๐งโ๐ฆฒ|๐ฑโโ๏ธ|๐ฑโโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐
โโ๏ธ|๐
โโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐คฆโโ๏ธ|๐คฆโโ๏ธ|๐คทโโ๏ธ|๐คทโโ๏ธ|๐งโโ๏ธ|๐จโโ๏ธ|๐ฉโโ๏ธ|๐งโ๐|๐จโ๐|๐ฉโ๐|๐งโ๐ซ|๐จโ๐ซ|๐ฉโ๐ซ|๐งโโ๏ธ|๐จโโ๏ธ|๐ฉโโ๏ธ|๐งโ๐พ|๐จโ๐พ|๐ฉโ๐พ|๐งโ๐ณ|๐จโ๐ณ|๐ฉโ๐ณ|๐งโ๐ง|๐จโ๐ง|๐ฉโ๐ง|๐งโ๐ญ|๐จโ๐ญ|๐ฉโ๐ญ|๐งโ๐ผ|๐จโ๐ผ|๐ฉโ๐ผ|๐งโ๐ฌ|๐จโ๐ฌ|๐ฉโ๐ฌ|๐งโ๐ป|๐จโ๐ป|๐ฉโ๐ป|๐งโ๐ค|๐จโ๐ค|๐ฉโ๐ค|๐งโ๐จ|๐จโ๐จ|๐ฉโ๐จ|๐งโโ๏ธ|๐จโโ๏ธ|๐ฉโโ๏ธ|๐งโ๐|๐จโ๐|๐ฉโ๐|๐งโ๐|๐จโ๐|๐ฉโ๐|๐ฎโโ๏ธ|๐ฎโโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐ทโโ๏ธ|๐ทโโ๏ธ|๐ณโโ๏ธ|๐ณโโ๏ธ|๐คตโโ๏ธ|๐คตโโ๏ธ|๐ฐโโ๏ธ|๐ฐโโ๏ธ|๐ฉโ๐ผ|๐จโ๐ผ|๐งโ๐ผ|๐งโ๐|๐ฆธโโ๏ธ|๐ฆธโโ๏ธ|๐ฆนโโ๏ธ|๐ฆนโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐ถโโ๏ธ|๐ถโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโ๐ฆฏ|๐จโ๐ฆฏ|๐ฉโ๐ฆฏ|๐งโ๐ฆผ|๐จโ๐ฆผ|๐ฉโ๐ฆผ|๐งโ๐ฆฝ|๐จโ๐ฆฝ|๐ฉโ๐ฆฝ|๐โโ๏ธ|๐โโ๏ธ|๐ฏโโ๏ธ|๐ฏโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|๐ฃโโ๏ธ|๐ฃโโ๏ธ|๐โโ๏ธ|๐โโ๏ธ|โน๏ธโโ๏ธ|โน๏ธโโ๏ธ|๐ดโโ๏ธ|๐ดโโ๏ธ|๐ตโโ๏ธ|๐ตโโ๏ธ|๐คธโโ๏ธ|๐คธโโ๏ธ|๐คผโโ๏ธ|๐คผโโ๏ธ|๐คฝโโ๏ธ|๐คฝโโ๏ธ|๐คพโโ๏ธ|๐คพโโ๏ธ|๐คนโโ๏ธ|๐คนโโ๏ธ|๐งโโ๏ธ|๐งโโ๏ธ|๐จโ๐ฆ|๐จโ๐ง|๐ฉโ๐ฆ|๐ฉโ๐ง|๐โ๐ฆบ|๐ปโโ๏ธ|๐ดโโ ๏ธ|๐โโฌ|๐ฆ๐จ|๐ฆ๐ฉ|๐ฆ๐ช|๐ฆ๐ซ|๐ฆ๐ฌ|๐ฆ๐ฎ|๐ฆ๐ฑ|๐ฆ๐ฒ|๐ฆ๐ด|๐ฆ๐ถ|๐ฆ๐ท|๐ฆ๐ธ|๐ฆ๐น|๐ฆ๐บ|๐ฆ๐ผ|๐ฆ๐ฝ|๐ฆ๐ฟ|๐ง๐ฆ|๐ง๐ง|๐ง๐ฉ|๐ง๐ช|๐ง๐ซ|๐ง๐ฌ|๐ง๐ญ|๐ง๐ฎ|๐ง๐ฏ|๐ง๐ฑ|๐ง๐ฒ|๐ง๐ณ|๐ง๐ด|๐ง๐ถ|๐ง๐ท|๐ง๐ธ|๐ง๐น|๐ง๐ป|๐ง๐ผ|๐ง๐พ|๐ง๐ฟ|๐จ๐ฆ|๐จ๐จ|๐จ๐ฉ|๐จ๐ซ|๐จ๐ฌ|๐จ๐ญ|๐จ๐ฎ|๐จ๐ฐ|๐จ๐ฑ|๐จ๐ฒ|๐จ๐ณ|๐จ๐ด|๐จ๐ต|๐จ๐ท|๐จ๐บ|๐จ๐ป|๐จ๐ผ|๐จ๐ฝ|๐จ๐พ|๐จ๐ฟ|๐ฉ๐ช|๐ฉ๐ฌ|๐ฉ๐ฏ|๐ฉ๐ฐ|๐ฉ๐ฒ|๐ฉ๐ด|๐ฉ๐ฟ|๐ช๐ฆ|๐ช๐จ|๐ช๐ช|๐ช๐ฌ|๐ช๐ญ|๐ช๐ท|๐ช๐ธ|๐ช๐น|๐ช๐บ|๐ซ๐ฎ|๐ซ๐ฏ|๐ซ๐ฐ|๐ซ๐ฒ|๐ซ๐ด|๐ซ๐ท|๐ฌ๐ฆ|๐ฌ๐ง|๐ฌ๐ฉ|๐ฌ๐ช|๐ฌ๐ซ|๐ฌ๐ฌ|๐ฌ๐ญ|๐ฌ๐ฎ|๐ฌ๐ฑ|๐ฌ๐ฒ|๐ฌ๐ณ|๐ฌ๐ต|๐ฌ๐ถ|๐ฌ๐ท|๐ฌ๐ธ|๐ฌ๐น|๐ฌ๐บ|๐ฌ๐ผ|๐ฌ๐พ|๐ญ๐ฐ|๐ญ๐ฒ|๐ญ๐ณ|๐ญ๐ท|๐ญ๐น|๐ญ๐บ|๐ฎ๐จ|๐ฎ๐ฉ|๐ฎ๐ช|๐ฎ๐ฑ|๐ฎ๐ฒ|๐ฎ๐ณ|๐ฎ๐ด|๐ฎ๐ถ|๐ฎ๐ท|๐ฎ๐ธ|๐ฎ๐น|๐ฏ๐ช|๐ฏ๐ฒ|๐ฏ๐ด|๐ฏ๐ต|๐ฐ๐ช|๐ฐ๐ฌ|๐ฐ๐ญ|๐ฐ๐ฎ|๐ฐ๐ฒ|๐ฐ๐ณ|๐ฐ๐ต|๐ฐ๐ท|๐ฐ๐ผ|๐ฐ๐พ|๐ฐ๐ฟ|๐ฑ๐ฆ|๐ฑ๐ง|๐ฑ๐จ|๐ฑ๐ฎ|๐ฑ๐ฐ|๐ฑ๐ท|๐ฑ๐ธ|๐ฑ๐น|๐ฑ๐บ|๐ฑ๐ป|๐ฑ๐พ|๐ฒ๐ฆ|๐ฒ๐จ|๐ฒ๐ฉ|๐ฒ๐ช|๐ฒ๐ซ|๐ฒ๐ฌ|๐ฒ๐ญ|๐ฒ๐ฐ|๐ฒ๐ฑ|๐ฒ๐ฒ|๐ฒ๐ณ|๐ฒ๐ด|๐ฒ๐ต|๐ฒ๐ถ|๐ฒ๐ท|๐ฒ๐ธ|๐ฒ๐น|๐ฒ๐บ|๐ฒ๐ป|๐ฒ๐ผ|๐ฒ๐ฝ|๐ฒ๐พ|๐ฒ๐ฟ|๐ณ๐ฆ|๐ณ๐จ|๐ณ๐ช|๐ณ๐ซ|๐ณ๐ฌ|๐ณ๐ฎ|๐ณ๐ฑ|๐ณ๐ด|๐ณ๐ต|๐ณ๐ท|๐ณ๐บ|๐ณ๐ฟ|๐ด๐ฒ|๐ต๐ฆ|๐ต๐ช|๐ต๐ซ|๐ต๐ฌ|๐ต๐ญ|๐ต๐ฐ|๐ต๐ฑ|๐ต๐ฒ|๐ต๐ณ|๐ต๐ท|๐ต๐ธ|๐ต๐น|๐ต๐ผ|๐ต๐พ|๐ถ๐ฆ|๐ท๐ช|๐ท๐ด|๐ท๐ธ|๐ท๐บ|๐ท๐ผ|๐ธ๐ฆ|๐ธ๐ง|๐ธ๐จ|๐ธ๐ฉ|๐ธ๐ช|๐ธ๐ฌ|๐ธ๐ญ|๐ธ๐ฎ|๐ธ๐ฏ|๐ธ๐ฐ|๐ธ๐ฑ|๐ธ๐ฒ|๐ธ๐ณ|๐ธ๐ด|๐ธ๐ท|๐ธ๐ธ|๐ธ๐น|๐ธ๐ป|๐ธ๐ฝ|๐ธ๐พ|๐ธ๐ฟ|๐น๐ฆ|๐น๐จ|๐น๐ฉ|๐น๐ซ|๐น๐ฌ|๐น๐ญ|๐น๐ฏ|๐น๐ฐ|๐น๐ฑ|๐น๐ฒ|๐น๐ณ|๐น๐ด|๐น๐ท|๐น๐น|๐น๐ป|๐น๐ผ|๐น๐ฟ|๐บ๐ฆ|๐บ๐ฌ|๐บ๐ฒ|๐บ๐ณ|๐บ๐ธ|๐บ๐พ|๐บ๐ฟ|๐ป๐ฆ|๐ป๐จ|๐ป๐ช|๐ป๐ฌ|๐ป๐ฎ|๐ป๐ณ|๐ป๐บ|๐ผ๐ซ|๐ผ๐ธ|๐ฝ๐ฐ|๐พ๐ช|๐พ๐น|๐ฟ๐ฆ|๐ฟ๐ฒ|๐ฟ๐ผ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ค๐ป|๐ค๐ผ|๐ค๐ฝ|๐ค๐พ|๐ค๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ค๐ป|๐ค๐ผ|๐ค๐ฝ|๐ค๐พ|๐ค๐ฟ|๐ค๐ป|๐ค๐ผ|๐ค๐ฝ|๐ค๐พ|๐ค๐ฟ|๐ค๐ป|๐ค๐ผ|๐ค๐ฝ|๐ค๐พ|๐ค๐ฟ|๐ค๐ป|๐ค๐ผ|๐ค๐ฝ|๐ค๐พ|๐ค๐ฟ|๐ค๐ป|๐ค๐ผ|๐ค๐ฝ|๐ค๐พ|๐ค๐ฟ|๐ค๐ป|๐ค๐ผ|๐ค๐ฝ|๐ค๐พ|๐ค๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ค๐ป|๐ค๐ผ|๐ค๐ฝ|๐ค๐พ|๐ค๐ฟ|๐ค๐ป|๐ค๐ผ|๐ค๐ฝ|๐ค๐พ|๐ค๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐คฒ๐ป|๐คฒ๐ผ|๐คฒ๐ฝ|๐คฒ๐พ|๐คฒ๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐
๐ป|๐
๐ผ|๐
๐ฝ|๐
๐พ|๐
๐ฟ|๐คณ๐ป|๐คณ๐ผ|๐คณ๐ฝ|๐คณ๐พ|๐คณ๐ฟ|๐ช๐ป|๐ช๐ผ|๐ช๐ฝ|๐ช๐พ|๐ช๐ฟ|๐ฆต๐ป|๐ฆต๐ผ|๐ฆต๐ฝ|๐ฆต๐พ|๐ฆต๐ฟ|๐ฆถ๐ป|๐ฆถ๐ผ|๐ฆถ๐ฝ|๐ฆถ๐พ|๐ฆถ๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ฆป๐ป|๐ฆป๐ผ|๐ฆป๐ฝ|๐ฆป๐พ|๐ฆป๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ถ๐ป|๐ถ๐ผ|๐ถ๐ฝ|๐ถ๐พ|๐ถ๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ฆ๐ป|๐ฆ๐ผ|๐ฆ๐ฝ|๐ฆ๐พ|๐ฆ๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ฑ๐ป|๐ฑ๐ผ|๐ฑ๐ฝ|๐ฑ๐พ|๐ฑ๐ฟ|๐จ๐ป|๐จ๐ผ|๐จ๐ฝ|๐จ๐พ|๐จ๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ฉ๐ป|๐ฉ๐ผ|๐ฉ๐ฝ|๐ฉ๐พ|๐ฉ๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ด๐ป|๐ด๐ผ|๐ด๐ฝ|๐ด๐พ|๐ด๐ฟ|๐ต๐ป|๐ต๐ผ|๐ต๐ฝ|๐ต๐พ|๐ต๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐
๐ป|๐
๐ผ|๐
๐ฝ|๐
๐พ|๐
๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐คฆ๐ป|๐คฆ๐ผ|๐คฆ๐ฝ|๐คฆ๐พ|๐คฆ๐ฟ|๐คท๐ป|๐คท๐ผ|๐คท๐ฝ|๐คท๐พ|๐คท๐ฟ|๐ฎ๐ป|๐ฎ๐ผ|๐ฎ๐ฝ|๐ฎ๐พ|๐ฎ๐ฟ|๐ต๐ป|๐ต๐ผ|๐ต๐ฝ|๐ต๐พ|๐ต๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ฅท๐ป|๐ฅท๐ผ|๐ฅท๐ฝ|๐ฅท๐พ|๐ฅท๐ฟ|๐ท๐ป|๐ท๐ผ|๐ท๐ฝ|๐ท๐พ|๐ท๐ฟ|๐คด๐ป|๐คด๐ผ|๐คด๐ฝ|๐คด๐พ|๐คด๐ฟ|๐ธ๐ป|๐ธ๐ผ|๐ธ๐ฝ|๐ธ๐พ|๐ธ๐ฟ|๐ณ๐ป|๐ณ๐ผ|๐ณ๐ฝ|๐ณ๐พ|๐ณ๐ฟ|๐ฒ๐ป|๐ฒ๐ผ|๐ฒ๐ฝ|๐ฒ๐พ|๐ฒ๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐คต๐ป|๐คต๐ผ|๐คต๐ฝ|๐คต๐พ|๐คต๐ฟ|๐ฐ๐ป|๐ฐ๐ผ|๐ฐ๐ฝ|๐ฐ๐พ|๐ฐ๐ฟ|๐คฐ๐ป|๐คฐ๐ผ|๐คฐ๐ฝ|๐คฐ๐พ|๐คฐ๐ฟ|๐คฑ๐ป|๐คฑ๐ผ|๐คฑ๐ฝ|๐คฑ๐พ|๐คฑ๐ฟ|๐ผ๐ป|๐ผ๐ผ|๐ผ๐ฝ|๐ผ๐พ|๐ผ๐ฟ|๐
๐ป|๐
๐ผ|๐
๐ฝ|๐
๐พ|๐
๐ฟ|๐คถ๐ป|๐คถ๐ผ|๐คถ๐ฝ|๐คถ๐พ|๐คถ๐ฟ|๐ฆธ๐ป|๐ฆธ๐ผ|๐ฆธ๐ฝ|๐ฆธ๐พ|๐ฆธ๐ฟ|๐ฆน๐ป|๐ฆน๐ผ|๐ฆน๐ฝ|๐ฆน๐พ|๐ฆน๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ถ๐ป|๐ถ๐ผ|๐ถ๐ฝ|๐ถ๐พ|๐ถ๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐บ๐ป|๐บ๐ผ|๐บ๐ฝ|๐บ๐พ|๐บ๐ฟ|๐ด๐ป|๐ด๐ผ|๐ด๐ฝ|๐ด๐พ|๐ด๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ฃ๐ป|๐ฃ๐ผ|๐ฃ๐ฝ|๐ฃ๐พ|๐ฃ๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ด๐ป|๐ด๐ผ|๐ด๐ฝ|๐ด๐พ|๐ด๐ฟ|๐ต๐ป|๐ต๐ผ|๐ต๐ฝ|๐ต๐พ|๐ต๐ฟ|๐คธ๐ป|๐คธ๐ผ|๐คธ๐ฝ|๐คธ๐พ|๐คธ๐ฟ|๐คฝ๐ป|๐คฝ๐ผ|๐คฝ๐ฝ|๐คฝ๐พ|๐คฝ๐ฟ|๐คพ๐ป|๐คพ๐ผ|๐คพ๐ฝ|๐คพ๐พ|๐คพ๐ฟ|๐คน๐ป|๐คน๐ผ|๐คน๐ฝ|๐คน๐พ|๐คน๐ฟ|๐ง๐ป|๐ง๐ผ|๐ง๐ฝ|๐ง๐พ|๐ง๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐ญ๐ป|๐ญ๐ผ|๐ญ๐ฝ|๐ญ๐พ|๐ญ๐ฟ|๐ซ๐ป|๐ซ๐ผ|๐ซ๐ฝ|๐ซ๐พ|๐ซ๐ฟ|๐ฌ๐ป|๐ฌ๐ผ|๐ฌ๐ฝ|๐ฌ๐พ|๐ฌ๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|๐๐ป|๐๐ผ|๐๐ฝ|๐๐พ|๐๐ฟ|#๏ธโฃ|0๏ธโฃ|1๏ธโฃ|2๏ธโฃ|3๏ธโฃ|4๏ธโฃ|5๏ธโฃ|6๏ธโฃ|7๏ธโฃ|8๏ธโฃ|9๏ธโฃ|โ๐ป|โ๐ผ|โ๐ฝ|โ๐พ|โ๐ฟ|โ๐ป|โ๐ผ|โ๐ฝ|โ๐พ|โ๐ฟ|โ๐ป|โ๐ผ|โ๐ฝ|โ๐พ|โ๐ฟ|โ๐ป|โ๐ผ|โ๐ฝ|โ๐พ|โ๐ฟ|โ๐ป|โ๐ผ|โ๐ฝ|โ๐พ|โ๐ฟ|โน๐ป|โน๐ผ|โน๐ฝ|โน๐พ|โน๐ฟ|๐|๐|๐|๐|๐|๐
|๐คฃ|๐|๐|๐|๐|๐|๐|๐ฅฐ|๐|๐คฉ|๐|๐|๐|๐|๐ฅฒ|๐|๐|๐|๐คช|๐|๐ค|๐ค|๐คญ|๐คซ|๐ค|๐ค|๐คจ|๐|๐|๐ถ|๐|๐|๐|๐ฌ|๐คฅ|๐|๐|๐ช|๐คค|๐ด|๐ท|๐ค|๐ค|๐คข|๐คฎ|๐คง|๐ฅต|๐ฅถ|๐ฅด|๐ต|๐คฏ|๐ค |๐ฅณ|๐ฅธ|๐|๐ค|๐ง|๐|๐|๐|๐ฎ|๐ฏ|๐ฒ|๐ณ|๐ฅบ|๐ฆ|๐ง|๐จ|๐ฐ|๐ฅ|๐ข|๐ญ|๐ฑ|๐|๐ฃ|๐|๐|๐ฉ|๐ซ|๐ฅฑ|๐ค|๐ก|๐ |๐คฌ|๐|๐ฟ|๐|๐ฉ|๐คก|๐น|๐บ|๐ป|๐ฝ|๐พ|๐ค|๐บ|๐ธ|๐น|๐ป|๐ผ|๐ฝ|๐|๐ฟ|๐พ|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐งก|๐|๐|๐|๐|๐ค|๐ค|๐ค|๐ฏ|๐ข|๐ฅ|๐ซ|๐ฆ|๐จ|๐ณ|๐ฃ|๐ฌ|๐จ|๐ฏ|๐ญ|๐ค|๐|๐ค|๐|๐|๐|๐ค|๐ค|๐ค|๐ค|๐ค|๐ค|๐|๐|๐|๐|๐|๐|๐|๐|๐ค|๐ค|๐|๐|๐|๐คฒ|๐ค|๐|๐
|๐คณ|๐ช|๐ฆพ|๐ฆฟ|๐ฆต|๐ฆถ|๐|๐ฆป|๐|๐ง |๐ซ|๐ซ|๐ฆท|๐ฆด|๐|๐|๐
|๐|๐ถ|๐ง|๐ฆ|๐ง|๐ง|๐ฑ|๐จ|๐ง|๐ฉ|๐ง|๐ด|๐ต|๐|๐|๐
|๐|๐|๐|๐ง|๐|๐คฆ|๐คท|๐ฎ|๐ต|๐|๐ฅท|๐ท|๐คด|๐ธ|๐ณ|๐ฒ|๐ง|๐คต|๐ฐ|๐คฐ|๐คฑ|๐ผ|๐
|๐คถ|๐ฆธ|๐ฆน|๐ง|๐ง|๐ง|๐ง|๐ง|๐ง|๐ง|๐|๐|๐ถ|๐ง|๐ง|๐|๐|๐บ|๐ด|๐ฏ|๐ง|๐ง|๐คบ|๐|๐|๐|๐|๐ฃ|๐|๐|๐ด|๐ต|๐คธ|๐คผ|๐คฝ|๐คพ|๐คน|๐ง|๐|๐|๐ญ|๐ซ|๐ฌ|๐|๐|๐ช|๐ฃ|๐ค|๐ฅ|๐ซ|๐ฃ|๐ฆฐ|๐ฆฑ|๐ฆณ|๐ฆฒ|๐ต|๐|๐ฆ|๐ฆง|๐ถ|๐|๐ฆฎ|๐ฉ|๐บ|๐ฆ|๐ฆ|๐ฑ|๐|๐ฆ|๐ฏ|๐
|๐|๐ด|๐|๐ฆ|๐ฆ|๐ฆ|๐ฆฌ|๐ฎ|๐|๐|๐|๐ท|๐|๐|๐ฝ|๐|๐|๐|๐ช|๐ซ|๐ฆ|๐ฆ|๐|๐ฆฃ|๐ฆ|๐ฆ|๐ญ|๐|๐|๐น|๐ฐ|๐|๐ฟ|๐ฆซ|๐ฆ|๐ฆ|๐ป|๐จ|๐ผ|๐ฆฅ|๐ฆฆ|๐ฆจ|๐ฆ|๐ฆก|๐พ|๐ฆ|๐|๐|๐ฃ|๐ค|๐ฅ|๐ฆ|๐ง|๐|๐ฆ
|๐ฆ|๐ฆข|๐ฆ|๐ฆค|๐ชถ|๐ฆฉ|๐ฆ|๐ฆ|๐ธ|๐|๐ข|๐ฆ|๐|๐ฒ|๐|๐ฆ|๐ฆ|๐ณ|๐|๐ฌ|๐ฆญ|๐|๐ |๐ก|๐ฆ|๐|๐|๐|๐ฆ|๐|๐|๐|๐ชฒ|๐|๐ฆ|๐ชณ|๐ท|๐ธ|๐ฆ|๐ฆ|๐ชฐ|๐ชฑ|๐ฆ |๐|๐ธ|๐ฎ|๐ต|๐น|๐ฅ|๐บ|๐ป|๐ผ|๐ท|๐ฑ|๐ชด|๐ฒ|๐ณ|๐ด|๐ต|๐พ|๐ฟ|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐ฅญ|๐|๐|๐|๐|๐|๐|๐ซ|๐ฅ|๐
|๐ซ|๐ฅฅ|๐ฅ|๐|๐ฅ|๐ฅ|๐ฝ|๐ถ|๐ซ|๐ฅ|๐ฅฌ|๐ฅฆ|๐ง|๐ง
|๐|๐ฅ|๐ฐ|๐|๐ฅ|๐ฅ|๐ซ|๐ฅจ|๐ฅฏ|๐ฅ|๐ง|๐ง|๐|๐|๐ฅฉ|๐ฅ|๐|๐|๐|๐ญ|๐ฅช|๐ฎ|๐ฏ|๐ซ|๐ฅ|๐ง|๐ฅ|๐ณ|๐ฅ|๐ฒ|๐ซ|๐ฅฃ|๐ฅ|๐ฟ|๐ง|๐ง|๐ฅซ|๐ฑ|๐|๐|๐|๐|๐|๐|๐ |๐ข|๐ฃ|๐ค|๐ฅ|๐ฅฎ|๐ก|๐ฅ|๐ฅ |๐ฅก|๐ฆ|๐ฆ|๐ฆ|๐ฆ|๐ฆช|๐ฆ|๐ง|๐จ|๐ฉ|๐ช|๐|๐ฐ|๐ง|๐ฅง|๐ซ|๐ฌ|๐ญ|๐ฎ|๐ฏ|๐ผ|๐ฅ|๐ซ|๐ต|๐ถ|๐พ|๐ท|๐ธ|๐น|๐บ|๐ป|๐ฅ|๐ฅ|๐ฅค|๐ง|๐ง|๐ง|๐ง|๐ฅข|๐ฝ|๐ด|๐ฅ|๐ช|๐บ|๐|๐|๐|๐|๐บ|๐พ|๐งญ|๐|๐|๐ป|๐|๐|๐|๐|๐|๐|๐|๐|๐งฑ|๐ชจ|๐ชต|๐|๐|๐|๐ |๐ก|๐ข|๐ฃ|๐ค|๐ฅ|๐ฆ|๐จ|๐ฉ|๐ช|๐ซ|๐ฌ|๐ญ|๐ฏ|๐ฐ|๐|๐ผ|๐ฝ|๐|๐|๐|๐|๐|๐|๐|๐|๐
|๐|๐|๐|๐ |๐ก|๐ข|๐|๐ช|๐|๐|๐|๐
|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐ป|๐|๐|๐|๐|๐|๐ต|๐ฆฝ|๐ฆผ|๐บ|๐ฒ|๐ด|๐น|๐ผ|๐|๐ฃ|๐ค|๐ข|๐จ|๐ฅ|๐ฆ|๐|๐ง|๐ถ|๐ค|๐ณ|๐ฅ|๐ข|๐ฉ|๐ซ|๐ฌ|๐ช|๐บ|๐|๐|๐ |๐ก|๐ฐ|๐|๐ธ|๐|๐งณ|๐ฐ|๐|๐ง|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐ |๐|๐ก|๐|๐ข|๐|๐ฃ|๐|๐ค|๐|๐ฅ|๐|๐ฆ|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐ก|๐|๐|๐ช|๐|๐ |๐|๐ค|๐ฅ|๐ฆ|๐ง|๐จ|๐ฉ|๐ช|๐ซ|๐ฌ|๐|๐|๐|๐ฅ|๐ง|๐|๐|๐|๐|๐|๐งจ|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐งง|๐|๐|๐|๐|๐ซ|๐|๐|๐
|๐ฅ|๐ฅ|๐ฅ|๐ฅ|๐|๐|๐|๐|๐พ|๐ฅ|๐ณ|๐|๐|๐|๐ฅ|๐|๐ธ|๐ฅ|๐ฅ|๐ฅ
|๐ฃ|๐คฟ|๐ฝ|๐ฟ|๐ท|๐ฅ|๐ฏ|๐ช|๐ช|๐ฑ|๐ฎ|๐ช|๐งฟ|๐ฎ|๐น|๐ฐ|๐ฒ|๐งฉ|๐งธ|๐ช
|๐ช|๐|๐|๐ด|๐ญ|๐ผ|๐จ|๐งต|๐ชก|๐งถ|๐ชข|๐|๐ถ|๐ฅฝ|๐ฅผ|๐ฆบ|๐|๐|๐|๐งฃ|๐งค|๐งฅ|๐งฆ|๐|๐|๐ฅป|๐ฉฑ|๐ฉฒ|๐ฉณ|๐|๐|๐|๐|๐|๐|๐|๐ฉด|๐|๐|๐ฅพ|๐ฅฟ|๐ |๐ก|๐ฉฐ|๐ข|๐|๐|๐ฉ|๐|๐งข|๐ช|๐ฟ|๐|๐|๐|๐|๐|๐|๐|๐ข|๐ฃ|๐ฏ|๐|๐|๐ผ|๐ต|๐ถ|๐|๐|๐|๐ค|๐ง|๐ป|๐ท|๐ช|๐ธ|๐น|๐บ|๐ป|๐ช|๐ฅ|๐ช|๐ฑ|๐ฒ|๐|๐|๐ |๐|๐|๐ป|๐ฅ|๐จ|๐ฑ|๐ฒ|๐ฝ|๐พ|๐ฟ|๐|๐งฎ|๐ฅ|๐|๐ฝ|๐ฌ|๐บ|๐ท|๐ธ|๐น|๐ผ|๐|๐|๐ฏ|๐ก|๐ฆ|๐ฎ|๐ช|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐ฐ|๐|๐|๐|๐ท|๐ฐ|๐ช|๐ด|๐ต|๐ถ|๐ท|๐ธ|๐ณ|๐งพ|๐น|๐ง|๐จ|๐ฉ|๐ค|๐ฅ|๐ฆ|๐ซ|๐ช|๐ฌ|๐ญ|๐ฎ|๐ณ|๐|๐|๐|๐|๐|๐ผ|๐|๐|๐|๐
|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐จ|๐ช|๐ |๐ก|๐ซ|๐ช|๐น|๐ก|๐ช|๐ง|๐ช|๐ฉ|๐|๐ฆฏ|๐|๐ช|๐งฐ|๐งฒ|๐ช|๐งช|๐งซ|๐งฌ|๐ฌ|๐ญ|๐ก|๐|๐ฉธ|๐|๐ฉน|๐ฉบ|๐ช|๐|๐ช|๐ช|๐|๐|๐ช|๐ฝ|๐ช |๐ฟ|๐|๐ชค|๐ช|๐งด|๐งท|๐งน|๐งบ|๐งป|๐ชฃ|๐งผ|๐ชฅ|๐งฝ|๐งฏ|๐|๐ฌ|๐ชฆ|๐ฟ|๐ชง|๐ง|๐ฎ|๐ฐ|๐น|๐บ|๐ป|๐ผ|๐พ|๐|๐|๐|๐
|๐ธ|๐ซ|๐ณ|๐ญ|๐ฏ|๐ฑ|๐ท|๐ต|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐|๐ฏ|๐|๐|๐|๐ผ|๐ฝ|๐ฆ|๐
|๐|๐ถ|๐ณ|๐ด|๐ฑ|๐ฒ|๐ฑ|๐|๐ฐ|๐|๐ |๐ก|๐ข|๐ฃ|๐ค|๐
ฐ|๐|๐
ฑ|๐|๐|๐|๐|๐|๐|๐
พ|๐|๐
ฟ|๐|๐|๐|๐|๐|๐ท|๐ถ|๐ฏ|๐|๐น|๐|๐ฒ|๐|๐ธ|๐ด|๐ณ|๐บ|๐ต|๐ด|๐ |๐ก|๐ข|๐ต|๐ฃ|๐ค|๐ฅ|๐ง|๐จ|๐ฉ|๐ฆ|๐ช|๐ซ|๐ถ|๐ท|๐ธ|๐น|๐บ|๐ป|๐ |๐|๐ณ|๐ฒ|๐|๐ฉ|๐|๐ด|๐ณ|๐ป|๐ผ|๐ฝ|๐พ|๐ฟ|โบ|โน|โ |โฃ|โค|โ|โ|โ|โ|โ|โท|โน|โ|โ|โฐ|โช|โฉ|โฒ|โบ|โจ|โฝ|โ|โต|โด|โ|โ|โณ|โ|โฐ|โฑ|โฒ|โ|โญ|โ|โ
|โ|โ|โ|โฑ|โก|โ|โ|โ|โ|โจ|โฝ|โพ|โณ|โธ|โ |โฅ|โฆ|โฃ|โ|โ|โ|โจ|โ|โ|โ|โ|โ|โ|โ|โ|โ|โ|โ|โฐ|โฑ|โฟ|โ |โ|โข|โฃ|โฌ|โ|โก|โ|โฌ|โ|โฌ
|โ|โ|โ|โฉ|โช|โคด|โคต|โ|โก|โธ|โฏ|โ|โฆ|โช|โฎ|โ|โ|โ|โ|โ|โ|โ|โ|โ|โ|โ|โ|โ|โถ|โฉ|โญ|โฏ|โ|โช|โฎ|โซ|โฌ|โธ|โน|โบ|โ|โ|โ|โง|โ|โ|โ|โ|โพ|โผ|โ|โ|โ|โ|โ|ใฐ|โ|โป|โ|โญ|โ
|โ|โ|โ|โ|โฐ|โฟ|ใฝ|โณ|โด|โ|ยฉ|ยฎ|โข|โน|โ|ใ|ใ|โซ|โช|โฌ|โฌ|โผ|โป|โพ|โฝ|โช|โซ)";
var i = 0;
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
while(m.find( )) {
i++;
System.out.println("Found value: " + m.group(0) );
}
System.out.println("Found " + i + " emojis." );
}
}
More information:
https://github.com/sweaver2112/Regex-combined-emojis
Regex 101 Demo (compact, unsafe literal emoji version)
Regex 101 Demo (long, safe unicode escape version)
Upvotes: 0
Reputation: 3676
Some PRCE do not acknowlege \p
. Many do not permit ranges on characters exceeding 2 bytes \udde6-\ud83c
.
One effective trick I have come up with is to encode them so the characters are forced to be escaped, such as json.
After encoding to json, the characters are now a literal \ud000
which one can find with a standard regular express: \\\\ud[0-9a-f]{3}
, \\\\u[0-9a-f]{4,6}
After filtering the escaped strings, the data can be decoded again without the emoticons present.
Upvotes: 0
Reputation: 2323
Using emoji-java i've wrote a simple method that removes all emojis including fitzpatrick modifiers. Requires an external library but easier to maintain than those monster regexes.
Use:
String input = "A string ๐with a \uD83D\uDC66\uD83C\uDFFFfew ๐emojis!";
String result = EmojiParser.removeAllEmojis(input);
emoji-java maven installation:
<dependency>
<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
<version>3.1.3</version>
</dependency>
gradle:
implementation 'com.vdurmont:emoji-java:3.1.3'
EDIT: previously submitted answer was pulled into emoji-java source code.
Upvotes: 54
Reputation: 869
\p{Cs}
works well for matching emoji with PCRE regex flavours. Test it at https://regex101.com/r/o69vJJ/1.
The Unicode Character Category is "Other, Surrogate".
Upvotes: 2
Reputation: 319
Regex is too slow, and Emoji is updated very fast.
Try this project simple-emoji-4j
Compatible with Emoji 12.0 (2018.10.15)
Simple with:
EmojiUtils.containsEmoji(str)
Upvotes: 0
Reputation: 161
Emoji regex
public static final String sEmojiRegex = "(?:[\\u2700-\\u27bf]|" +
"(?:[\\ud83c\\udde6-\\ud83c\\uddff]){2}|" +
"[\\ud800\\udc00-\\uDBFF\\uDFFF]|[\\u2600-\\u26FF])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|[\\ud83c\\udffb-\\ud83c\\udfff])?" +
"(?:\\u200d(?:[^\\ud800-\\udfff]|" +
"(?:[\\ud83c\\udde6-\\ud83c\\uddff]){2}|" +
"[\\ud800\\udc00-\\uDBFF\\uDFFF]|[\\u2600-\\u26FF])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|[\\ud83c\\udffb-\\ud83c\\udfff])?)*|" +
"[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|[\\ud83c\\udd70-\\ud83c\\udd71]|[\\ud83c\\udd7e-\\ud83c\\udd7f]|\\ud83c\\udd8e|[\\ud83c\\udd91-\\ud83c\\udd9a]|[\\ud83c\\udde6-\\ud83c\\uddff]|[\\ud83c\\ude01-\\ud83c\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|[\\ud83c\\ude32-\\ud83c\\ude3a]|[\\ud83c\\ude50-\\ud83c\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff]";
some emojis (1627)
// count = 1627
public static final String sEmojiTest = "๐๐๐๐๐๐
๐๐คฃโบ๏ธ๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐ค๐ค๐ค๐๐คก๐ค ๐๐๐๐๐๐๐โน๏ธ๐ฃ๐๐ซ๐ฉ๐ค๐ ๐ก๐ถ๐๐๐ฏ๐ฆ๐ง๐ฎ๐ฒ๐ต๐ณ๐ฑ๐จ๐ฐ๐ข๐ฅ๐คค๐ญ๐๐ช๐ด๐๐ค๐คฅ๐ฌ๐ค๐คข๐คง๐ท๐ค๐ค๐๐ฟ๐น๐บ๐ฉ๐ป๐โ ๏ธ๐ฝ๐พ๐ค๐๐บ๐ธ๐น๐ป๐ผ๐ฝ๐๐ฟ๐พ๐๐๐๐๐ค๐๐๐โ๐ค๐ค๐คโ๏ธ๐ค๐๐๐๐๐โ๏ธโ๐ค๐๐๐๐ค๐ช๐โ๏ธ๐คณ๐
๐๐๐๐๐
๐๐๐ฃ๐๐๐ฃ๐ค๐ฅ๐ถ๐ฆ๐ง๐จ๐ฉ๐ฑโโ๐ฑ๐ด๐ต๐ฒ๐ณโโ๐ณ๐ฎโโ๐ฎ๐ทโโ๐ท๐โโ๐๐ต๏ธโโ๏ธ๐ต๐ฉโโ๐จโโ๐ฉโ๐พ๐จโ๐พ๐ฉโ๐ณ๐จโ๐ณ๐ฉโ๐๐จโ๐๐ฉโ๐ค๐จโ๐ค๐ฉโ๐ซ๐จโ๐ซ๐ฉโ๐ญ๐จโ๐ญ๐ฉโ๐ป๐จโ๐ป๐ฉโ๐ผ๐จโ๐ผ๐ฉโ๐ง๐จโ๐ง๐ฉโ๐ฌ๐จโ๐ฌ๐ฉโ๐จ๐จโ๐จ๐ฉโ๐๐จโ๐๐ฉโโ๐จโโ๐ฉโ๐๐จโ๐๐ฉโโ๐จโโ๐คถ๐
๐ธ๐คด๐ฐ๐คต๐ผ๐คฐ๐โโ๐๐๐โโ๐
๐
โโ๐๐โโ๐๐โโ๐คฆโโ๐คฆโโ๐คทโโ๐คทโโ๐๐โโ๐๐โโ๐๐โโ๐๐โโ๐ด๐๐บ๐ฏ๐ฏโโ๐ถโโ๐ถ๐โโ๐๐ซ๐ญ๐ฌ๐๐ฉโโค๏ธโ๐ฉ๐จโโค๏ธโ๐จ๐๐ฉโโค๏ธโ๐โ๐ฉ๐จโโค๏ธโ๐โ๐จ๐ช๐จโ๐ฉโ๐ง๐จโ๐ฉโ๐งโ๐ฆ๐จโ๐ฉโ๐ฆโ๐ฆ๐จโ๐ฉโ๐งโ๐ง๐ฉโ๐ฉโ๐ฆ๐ฉโ๐ฉโ๐ง๐ฉโ๐ฉโ๐งโ๐ฆ๐ฉโ๐ฉโ๐ฆโ๐ฆ๐ฉโ๐ฉโ๐งโ๐ง๐จโ๐จโ๐ฆ๐จโ๐จโ๐ง๐จโ๐จโ๐งโ๐ฆ๐จโ๐จโ๐ฆโ๐ฆ๐จโ๐จโ๐งโ๐ง๐ฉโ๐ฆ๐ฉโ๐ง๐ฉโ๐งโ๐ฆ๐ฉโ๐ฆโ๐ฆ๐ฉโ๐งโ๐ง๐จโ๐ฆ๐จโ๐ง๐จโ๐งโ๐ฆ๐จโ๐ฆโ๐ฆ๐จโ๐งโ๐ง๐๐๐๐๐๐๐๐ ๐ก๐ข๐๐๐๐ฉ๐๐โ๐๐๐๐๐ผ๐๐ถ๐โ๏ธ๐ถ๐ฑ๐ญ๐น๐ฐ๐ฆ๐ป๐ผ๐จ๐ฏ๐ฆ๐ฎ๐ท๐ฝ๐ธ๐ต๐๐๐๐๐๐ง๐ฆ๐ค๐ฃ๐ฅ๐ฆ๐ฆ
๐ฆ๐ฆ๐บ๐๐ด๐ฆ๐๐๐ฆ๐๐๐๐๐ท๐ธ๐ข๐๐ฆ๐ฆ๐ฆ๐ฆ๐๐ฆ๐ ๐๐ก๐ฌ๐ฆ๐ณ๐๐๐๐
๐๐๐๐ฆ๐ช๐ซ๐๐ฆ๐ฆ๐๐๐๐๐๐๐ฉ๐๐๐ฆ๐๐๐๐๐ฟ๐พ๐๐ฒ๐ต๐๐ฒ๐ณ๐ด๐ฑ๐ฟโ๏ธ๐๐๐๐๐๐๐๐พ๐๐ท๐น๐ฅ๐ป๐ผ๐ธ๐บ๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐ซโญ๏ธ๐โจโก๏ธ๐ฅ๐ฅโโ๏ธ๐คโ
๏ธ๐ฅ๐ฆ๐โ๏ธ๐งโ๐ฉ๐จโ๏ธโ๏ธโ๏ธ๐ฌ๐จ๐ช๐ซ๐๐ง๐ฆโ๏ธ๐๐๐๐๐๐๐๐๐๐๐๐๐๐ฅ๐ฅ๐
๐๐ฅ๐ฅ๐ฝ๐ถ๐ฅ๐ ๐ฐ๐ฅ๐ฏ๐ฅ๐๐ฅ๐ง๐ฅ๐ณ๐ฅ๐ฅ๐ค๐๐๐๐ญ๐๐๐ฅ๐ฎ๐ฏ๐ฅ๐ฅ๐๐๐ฒ๐ฅ๐ฃ๐ฑ๐๐๐๐๐ข๐ก๐ง๐จ๐ฆ๐ฐ๐๐ฎ๐ญ๐ฌ๐ซ๐ฟ๐ฉ๐ช๐ฅ๐ผโ๏ธ๐ต๐ถ๐บ๐ป๐ฅ๐ท๐ฅ๐ธ๐น๐พ๐ฅ๐ด๐ฝโฝ๏ธ๐๐โพ๏ธ๐พ๐๐๐ฑ๐๐ธ๐ฅ
๐๐๐โณ๏ธ๐น๐ฃ๐ฅ๐ฅโธ๐ฟโท๐๐๏ธโโ๏ธ๐๐คบ๐คผโโ๐คผโโ๐คธโโ๐คธโโโน๏ธโโ๏ธโน๐คพโโ๐คพโโ๐๏ธโโ๏ธ๐๐โโ๐๐โโ๐๐คฝโโ๐คฝโโ๐ฃโโ๐ฃ๐๐ดโโ๐ด๐ตโโ๐ต๐ฝ๐
๐๐ฅ๐ฅ๐ฅ๐๐ต๐๐ซ๐๐ช๐คนโโ๐คนโโ๐ญ๐จ๐ฌ๐ค๐ง๐ผ๐น๐ฅ๐ท๐บ๐ธ๐ป๐ฒ๐ฏ๐ณ๐ฎ๐ฐ๐๐๐๐๐๐๐๐๐๐๐๐๐๐ด๐ฒ๐ต๐๐จ๐๐๐๐๐ก๐ ๐๐๐๐๐๐๐
๐๐๐๐๐๐๐๐ฉโ๏ธ๐ซ๐ฌ๐๐ฐ๐บ๐ถโต๏ธ๐ฅ๐ค๐ณโด๐ขโ๏ธ๐งโฝ๏ธ๐๐ฆ๐ฅ๐บ๐ฟ๐ฝโฒ๏ธ๐ผ๐ฐ๐ฏ๐๐ก๐ข๐ โฑ๐๐โฐ๐๐ป๐๐๐โบ๏ธ๐ค๐ฃ๐๐ญ๐ ๐ก๐๐๐ข๐ฌ๐ฃ๐ค๐ฅ๐ฆ๐จ๐ช๐ซ๐ฉ๐๐โช๏ธ๐๐๐โฉ๐พ๐๐๐
๐๐ ๐๐๐๐๐๐๐๐๐โ๏ธ๐ฑ๐ฒ๐ปโจ๏ธ๐ฅ๐จ๐ฑ๐ฒ๐น๐๐ฝ๐พ๐ฟ๐๐ผ๐ท๐ธ๐น๐ฅ๐ฝ๐๐โ๏ธ๐๐ ๐บ๐ป๐๐๐โฑโฒโฐ๐ฐโ๏ธโณ๐ก๐๐๐ก๐ฆ๐ฏ๐๐ข๐ธ๐ต๐ด๐ถ๐ท๐ฐ๐ณ๐โ๏ธ๐ง๐จโ๐ โ๐ฉโ๏ธโ๐ซ๐ฃ๐ช๐กโ๏ธ๐ก๐ฌโฐ๏ธโฑ๏ธ๐บ๐ฎ๐ฟ๐โ๏ธ๐ญ๐ฌ๐ณ๐๐๐ก๐ฝ๐ฐ๐ฟ๐๐๐๐๐๐ช๐๐๐๐ผ๐๐๐๐๐๐๐๐๐๐ฎ๐โ๏ธ๐ฉ๐จ๐ง๐๐ฅ๐ค๐ฆ๐ท๐ช๐ซ๐ฌ๐ญ๐ฎ๐ฏ๐๐๐๐๐๐๐๐๐๐๐
๐๐๐ณ๐๐๐๐๐๐๐ฐ๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐โ๏ธ๐๐โ๏ธ๐๐๐โ๏ธ๐๐๐๐๐๐โค๏ธ๐๐๐๐๐ค๐โฃ๏ธ๐๐๐๐๐๐๐๐โฎ๏ธโ๏ธโช๏ธ๐โธ๏ธโก๏ธ๐ฏ๐โฏ๏ธโฆ๏ธ๐โโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธ๐โ๏ธ๐โข๏ธโฃ๏ธ๐ด๐ณ๐ถ๐๏ธ๐ธ๐บ๐ท๏ธโด๏ธ๐๐ฎ๐ใ๏ธใ๏ธ๐ด๐ต๐น๐ฒ๐
ฐ๏ธ๐
ฑ๏ธ๐๐๐
พ๏ธ๐โโญ๏ธ๐โ๏ธ๐๐ซ๐ฏ๐ขโจ๏ธ๐ท๐ฏ๐ณ๐ฑ๐๐ต๐ญโ๏ธโโโโผ๏ธโ๏ธ๐
๐ใฝ๏ธโ ๏ธ๐ธ๐ฑโ๏ธ๐ฐโป๏ธโ
๐ฏ๏ธ๐นโ๏ธโณ๏ธโ๐๐ โ๏ธ๐๐ค๐ง๐พโฟ๏ธ๐
ฟ๏ธ๐ณ๐๏ธ๐๐๐๐
๐น๐บ๐ผ๐ป๐ฎ๐ฆ๐ถ๐๐ฃโน๏ธ๐ค๐ก๐ ๐๐๐๐๐๐0๏ธโฃ1๏ธโฃ2๏ธโฃ3๏ธโฃ4๏ธโฃ5๏ธโฃ6๏ธโฃ7๏ธโฃ8๏ธโฃ9๏ธโฃ๐๐ข#๏ธโฃ*๏ธโฃโถ๏ธโธโฏโนโบโญโฎโฉโชโซโฌโ๏ธ๐ผ๐ฝโก๏ธโฌ
๏ธโฌ๏ธโฌ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโ๏ธโช๏ธโฉ๏ธโคด๏ธโคต๏ธ๐๐๐๐๐๐ต๐ถโโโโ๏ธ๐ฒ๐ฑโข๏ธยฉ๏ธยฎ๏ธใฐ๏ธโฐโฟ๐๐๐๐๐โ๏ธโ๏ธ๐โช๏ธโซ๏ธ๐ด๐ต๐บ๐ป๐ธ๐น๐ถ๐ท๐ณ๐ฒโช๏ธโซ๏ธโพ๏ธโฝ๏ธโผ๏ธโป๏ธโฌ๏ธโฌ๏ธ๐๐๐๐๐๐๐ฃ๐ข๐โ๐จ๐ฌ๐ญ๐ฏโ ๏ธโฃ๏ธโฅ๏ธโฆ๏ธ๐๐ด๐๏ธ๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐ ๐ก๐ข๐ฃ๐ค๐ฅ๐ฆ๐ง๐ณ๏ธ๐ด๐๐ฉ๐ณ๏ธโ๐๐ฆ๐ซ๐ฆ๐ฝ๐ฆ๐ฑ๐ฉ๐ฟ๐ฆ๐ธ๐ฆ๐ฉ๐ฆ๐ด๐ฆ๐ฎ๐ฆ๐ถ๐ฆ๐ฌ๐ฆ๐ท๐ฆ๐ฒ๐ฆ๐ผ๐ฆ๐บ๐ฆ๐น๐ฆ๐ฟ๐ง๐ธ๐ง๐ญ๐ง๐ฉ๐ง๐ง๐ง๐พ๐ง๐ช๐ง๐ฟ๐ง๐ฏ๐ง๐ฒ๐ง๐น๐ง๐ด๐ง๐ถ๐ง๐ฆ๐ง๐ผ๐ง๐ท๐ฎ๐ด๐ป๐ฌ๐ง๐ณ๐ง๐ฌ๐ง๐ซ๐ง๐ฎ๐จ๐ป๐ฐ๐ญ๐จ๐ฒ๐จ๐ฆ๐ฎ๐จ๐ฐ๐พ๐จ๐ซ๐น๐ฉ๐จ๐ฑ๐จ๐ณ๐จ๐ฝ๐จ๐จ๐จ๐ด๐ฐ๐ฒ๐จ๐ฌ๐จ๐ฉ๐จ๐ฐ๐จ๐ท๐จ๐ฎ๐ญ๐ท๐จ๐บ๐จ๐ผ๐จ๐พ๐จ๐ฟ๐ฉ๐ฐ๐ฉ๐ฏ๐ฉ๐ฒ๐ฉ๐ด๐ช๐จ๐ช๐ฌ๐ธ๐ป๐ฌ๐ถ๐ช๐ท๐ช๐ช๐ช๐น๐ช๐บ๐ซ๐ฐ๐ซ๐ด๐ซ๐ฏ๐ซ๐ฎ๐ซ๐ท๐ฌ๐ซ๐ต๐ซ๐น๐ซ๐ฌ๐ฆ๐ฌ๐ฒ๐ฌ๐ช๐ฉ๐ช๐ฌ๐ญ๐ฌ๐ฎ๐ฌ๐ท๐ฌ๐ฑ๐ฌ๐ฉ๐ฌ๐ต๐ฌ๐บ๐ฌ๐น๐ฌ๐ฌ๐ฌ๐ณ๐ฌ๐ผ๐ฌ๐พ๐ญ๐น๐ญ๐ณ๐ญ๐ฐ๐ญ๐บ๐ฎ๐ธ๐ฎ๐ณ๐ฎ๐ฉ๐ฎ๐ท๐ฎ๐ถ๐ฎ๐ช๐ฎ๐ฒ๐ฎ๐ฑ๐ฎ๐น๐ฏ๐ฒ๐ฏ๐ต๐๐ฏ๐ช๐ฏ๐ด๐ฐ๐ฟ๐ฐ๐ช๐ฐ๐ฎ๐ฝ๐ฐ๐ฐ๐ผ๐ฐ๐ฌ๐ฑ๐ฆ๐ฑ๐ป๐ฑ๐ง๐ฑ๐ธ๐ฑ๐ท๐ฑ๐พ๐ฑ๐ฎ๐ฑ๐น๐ฑ๐บ๐ฒ๐ด๐ฒ๐ฐ๐ฒ๐ฌ๐ฒ๐ผ๐ฒ๐พ๐ฒ๐ป๐ฒ๐ฑ๐ฒ๐น๐ฒ๐ญ๐ฒ๐ถ๐ฒ๐ท๐ฒ๐บ๐พ๐น๐ฒ๐ฝ๐ซ๐ฒ๐ฒ๐ฉ๐ฒ๐จ๐ฒ๐ณ๐ฒ๐ช๐ฒ๐ธ๐ฒ๐ฆ๐ฒ๐ฟ๐ฒ๐ฒ๐ณ๐ฆ๐ณ๐ท๐ณ๐ต๐ณ๐ฑ๐ณ๐จ๐ณ๐ฟ๐ณ๐ฎ๐ณ๐ช๐ณ๐ฌ๐ณ๐บ๐ณ๐ซ๐ฒ๐ต๐ฐ๐ต๐ณ๐ด๐ด๐ฒ๐ต๐ฐ๐ต๐ผ๐ต๐ธ๐ต๐ฆ๐ต๐ฌ๐ต๐พ๐ต๐ช๐ต๐ญ๐ต๐ณ๐ต๐ฑ๐ต๐น๐ต๐ท๐ถ๐ฆ๐ท๐ช๐ท๐ด๐ท๐บ๐ท๐ผ๐ง๐ฑ๐ธ๐ญ๐ฐ๐ณ๐ฑ๐จ๐ต๐ฒ๐ป๐จ๐ผ๐ธ๐ธ๐ฒ๐ธ๐น๐ธ๐ฆ๐ธ๐ณ๐ท๐ธ๐ธ๐จ๐ธ๐ฑ๐ธ๐ฌ๐ธ๐ฝ๐ธ๐ฐ๐ธ๐ฎ๐ธ๐ง๐ธ๐ด๐ฟ๐ฆ๐ฌ๐ธ๐ฐ๐ท๐ธ๐ธ๐ช๐ธ๐ฑ๐ฐ๐ธ๐ฉ๐ธ๐ท๐ธ๐ฟ๐ธ๐ช๐จ๐ญ๐ธ๐พ๐น๐ผ๐น๐ฏ๐น๐ฟ๐น๐ญ๐น๐ฑ๐น๐ฌ๐น๐ฐ๐น๐ด๐น๐น๐น๐ณ๐น๐ท๐น๐ฒ๐น๐จ๐น๐ป๐บ๐ฌ๐บ๐ฆ๐ฆ๐ช๐ฌ๐ง๐บ๐ธ๐ป๐ฎ๐บ๐พ๐บ๐ฟ๐ป๐บ๐ป๐ฆ๐ป๐ช๐ป๐ณ๐ผ๐ซ๐ช๐ญ๐พ๐ช๐ฟ๐ฒ๐ฟ๐ผโฝ๏ธ๐๐โพ๏ธ๐พ๐๐๐ฑ๐๐ธ๐ฅ
๐๐๐โณ๏ธ๐น๐ฃ๐ฅ๐ฅโธ๐ฟโท๐๐๏ธโโ๏ธ๐๐ปโโ๏ธ๐๐ผโโ๏ธ๐๐ฝโโ๏ธ๐๐พโโ๏ธ๐๐ฟโโ๏ธ๐๏ธ๐๐ป๐๐ผ๐๐ฝ๐๐พ๐๐ฟ๐คบ๐คผโโ๏ธ๐คผโโ๏ธ๐คธโโ๏ธ๐คธ๐ปโโ๏ธ๐คธ๐ผโโ๏ธ๐คธ๐ฝโโ๏ธ๐คธ๐พโโ๏ธ๐คธ๐ฟโโ๏ธ๐คธโโ๏ธ๐คธ๐ปโโ๏ธ๐คธ๐ผโโ๏ธ๐คธ๐ฝโโ๏ธ๐คธ๐พโโ๏ธ๐คธ๐ฟโโ๏ธโน๏ธโโ๏ธโน๐ปโโ๏ธโน๐ผโโ๏ธโน๐ฝโโ๏ธโน๐พโโ๏ธโน๐ฟโโ๏ธโน๏ธโน๐ปโน๐ผโน๐ฝโน๐พโน๐ฟ๐คพโโ๏ธ๐คพ๐ปโโ๏ธ๐คพ๐ผโโ๏ธ๐คพ๐ฝโโ๏ธ๐คพ๐พโโ๏ธ๐คพ๐ฟโโ๏ธ๐คพโโ๏ธ๐คพ๐ปโโ๏ธ๐คพ๐ผโโ๏ธ๐คพ๐ฝโโ๏ธ๐คพ๐พโโ๏ธ๐คพ๐ฟโโ๏ธ๐๏ธโโ๏ธ๐๐ปโโ๏ธ๐๐ผโโ๏ธ๐๐ฝโโ๏ธ๐๐พโโ๏ธ๐๐ฟโโ๏ธ๐๏ธ๐๐ป๐๐ผ๐๐ฝ๐๐พ๐๐ฟ๐โโ๏ธ๐๐ปโโ๏ธ๐๐ผโโ๏ธ๐๐ฝโโ๏ธ๐๐พโโ๏ธ๐๐ฟโโ๏ธ๐๐๐ป๐๐ผ๐๐ฝ๐๐พ๐๐ฟ๐โโ๏ธ๐๐ปโโ๏ธ๐๐ผโโ๏ธ๐๐ฝโโ๏ธ๐๐พโโ๏ธ๐๐ฟโโ๏ธ๐๐๐ป๐๐ผ๐๐ฝ๐๐พ๐๐ฟ๐คฝโโ๏ธ๐คฝ๐ปโโ๏ธ๐คฝ๐ผโโ๏ธ๐คฝ๐ฝโโ๏ธ๐คฝ๐พโโ๏ธ๐คฝ๐ฟโโ๏ธ๐คฝโโ๏ธ๐คฝ๐ปโโ๏ธ๐คฝ๐ผโโ๏ธ๐คฝ๐ฝโโ๏ธ๐คฝ๐พโโ๏ธ๐คฝ๐ฟโโ๏ธ๐ฃโโ๏ธ๐ฃ๐ปโโ๏ธ๐ฃ๐ผโโ๏ธ๐ฃ๐ฝโโ๏ธ๐ฃ๐พโโ๏ธ๐ฃ๐ฟโโ๏ธ๐ฃ๐ฃ๐ป๐ฃ๐ผ๐ฃ๐ฝ๐ฃ๐พ๐ฃ๐ฟ๐๐๐ป๐๐ผ๐๐ฝ๐๐พ๐๐ฟ๐ดโโ๏ธ๐ด๐ปโโ๏ธ๐ด๐ผโโ๏ธ๐ด๐ฝโโ๏ธ๐ด๐พโโ๏ธ๐ด๐ฟโโ๏ธ๐ด๐ด๐ป๐ด๐ผ๐ด๐ฝ๐ด๐พ๐ด๐ฟ๐ตโโ๏ธ๐ต๐ปโโ๏ธ๐ต๐ผโโ๏ธ๐ต๐ฝโโ๏ธ๐ต๐พโโ๏ธ๐ต๐ฟโโ๏ธ๐ต๐ต๐ป๐ต๐ผ๐ต๐ฝ๐ต๐พ๐ต๐ฟ๐ฝ๐
๐๐ฅ๐ฅ๐ฅ๐๐ต๐๐ซ๐๐ช๐คนโโ๏ธ๐คนโโ๏ธ๐ญ๐จ๐ฌ๐ค๐ง๐ผ๐น๐ฅ๐ท๐บ๐ธ๐ป๐ฒ๐ฏ๐ณ๐ฎ๐ฐ";
function to test emojis
public void checkMatchingEmojis() {
final Pattern pattern = Pattern.compile(sEmojiRegex);
final Matcher matcher = pattern.matcher(sEmojiTest);
int foundEmojiCount = 0;
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
foundEmojiCount++;
}
System.out.println("*******************************************");
System.out.println("Input Emoji count = 1627");
System.out.println("Captured Emoji count = " + foundEmojiCount);
System.out.println("*******************************************");
}
Here is the gist, tested on all unicode 10 emojis
Thanks to Kevin Scott for writting greate example
Upvotes: 4
Reputation:
You can generate your own regex whenever the spec changes.
This tool (screenshot here).
For utf-8/32 mode (stringed), expanded mode :
" # Use the 'Mega-Conversion' tool to change into other syntaxes"
" # -------------------------------------------------------------"
" "
" [#*0-9] \\x{FE0F} \\x{20E3}"
" | [\\x{A9}\\x{AE}\\x{203C}\\x{2049}\\x{2122}\\x{2139}\\x{2194}-\\x{2199}\\x{21A9}\\x{21AA}\\x{231A}\\x{231B}\\x{2328}\\x{23CF}\\x{23E9}-\\x{23F3}\\x{23F8}-\\x{23FA}\\x{24C2}\\x{25AA}\\x{25AB}\\x{25B6}\\x{25C0}\\x{25FB}-\\x{25FE}\\x{2600}-\\x{2604}\\x{260E}\\x{2611}\\x{2614}\\x{2615}\\x{2618}]"
" | \\x{261D} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{2620}\\x{2622}\\x{2623}\\x{2626}\\x{262A}\\x{262E}\\x{262F}\\x{2638}-\\x{263A}\\x{2640}\\x{2642}\\x{2648}-\\x{2653}\\x{265F}\\x{2660}\\x{2663}\\x{2665}\\x{2666}\\x{2668}\\x{267B}\\x{267E}\\x{267F}\\x{2692}-\\x{2697}\\x{2699}\\x{269B}\\x{269C}\\x{26A0}\\x{26A1}\\x{26AA}\\x{26AB}\\x{26B0}\\x{26B1}\\x{26BD}\\x{26BE}\\x{26C4}\\x{26C5}\\x{26C8}\\x{26CE}\\x{26CF}\\x{26D1}\\x{26D3}\\x{26D4}\\x{26E9}\\x{26EA}\\x{26F0}-\\x{26F5}\\x{26F7}\\x{26F8}]"
" | \\x{26F9}"
" (?:"
" \\x{FE0F} \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{26FA}\\x{26FD}\\x{2702}\\x{2705}\\x{2708}\\x{2709}]"
" | [\\x{270A}-\\x{270D}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{270F}\\x{2712}\\x{2714}\\x{2716}\\x{271D}\\x{2721}\\x{2728}\\x{2733}\\x{2734}\\x{2744}\\x{2747}\\x{274C}\\x{274E}\\x{2753}-\\x{2755}\\x{2757}\\x{2763}\\x{2764}\\x{2795}-\\x{2797}\\x{27A1}\\x{27B0}\\x{27BF}\\x{2934}\\x{2935}\\x{2B05}-\\x{2B07}\\x{2B1B}\\x{2B1C}\\x{2B50}\\x{2B55}\\x{3030}\\x{303D}\\x{3297}\\x{3299}\\x{1F004}\\x{1F0CF}\\x{1F170}\\x{1F171}\\x{1F17E}\\x{1F17F}\\x{1F18E}\\x{1F191}-\\x{1F19A}]"
" | \\x{1F1E6} [\\x{1F1E8}-\\x{1F1EC}\\x{1F1EE}\\x{1F1F1}\\x{1F1F2}\\x{1F1F4}\\x{1F1F6}-\\x{1F1FA}\\x{1F1FC}\\x{1F1FD}\\x{1F1FF}]"
" | \\x{1F1E7} [\\x{1F1E6}\\x{1F1E7}\\x{1F1E9}-\\x{1F1EF}\\x{1F1F1}-\\x{1F1F4}\\x{1F1F6}-\\x{1F1F9}\\x{1F1FB}\\x{1F1FC}\\x{1F1FE}\\x{1F1FF}]"
" | \\x{1F1E8} [\\x{1F1E6}\\x{1F1E8}\\x{1F1E9}\\x{1F1EB}-\\x{1F1EE}\\x{1F1F0}-\\x{1F1F5}\\x{1F1F7}\\x{1F1FA}-\\x{1F1FF}]"
" | \\x{1F1E9} [\\x{1F1EA}\\x{1F1EC}\\x{1F1EF}\\x{1F1F0}\\x{1F1F2}\\x{1F1F4}\\x{1F1FF}]"
" | \\x{1F1EA} [\\x{1F1E6}\\x{1F1E8}\\x{1F1EA}\\x{1F1EC}\\x{1F1ED}\\x{1F1F7}-\\x{1F1FA}]"
" | \\x{1F1EB} [\\x{1F1EE}-\\x{1F1F0}\\x{1F1F2}\\x{1F1F4}\\x{1F1F7}]"
" | \\x{1F1EC} [\\x{1F1E6}\\x{1F1E7}\\x{1F1E9}-\\x{1F1EE}\\x{1F1F1}-\\x{1F1F3}\\x{1F1F5}-\\x{1F1FA}\\x{1F1FC}\\x{1F1FE}]"
" | \\x{1F1ED} [\\x{1F1F0}\\x{1F1F2}\\x{1F1F3}\\x{1F1F7}\\x{1F1F9}\\x{1F1FA}]"
" | \\x{1F1EE} [\\x{1F1E8}-\\x{1F1EA}\\x{1F1F1}-\\x{1F1F4}\\x{1F1F6}-\\x{1F1F9}]"
" | \\x{1F1EF} [\\x{1F1EA}\\x{1F1F2}\\x{1F1F4}\\x{1F1F5}]"
" | \\x{1F1F0} [\\x{1F1EA}\\x{1F1EC}-\\x{1F1EE}\\x{1F1F2}\\x{1F1F3}\\x{1F1F5}\\x{1F1F7}\\x{1F1FC}\\x{1F1FE}\\x{1F1FF}]"
" | \\x{1F1F1} [\\x{1F1E6}-\\x{1F1E8}\\x{1F1EE}\\x{1F1F0}\\x{1F1F7}-\\x{1F1FB}\\x{1F1FE}]"
" | \\x{1F1F2} [\\x{1F1E6}\\x{1F1E8}-\\x{1F1ED}\\x{1F1F0}-\\x{1F1FF}]"
" | \\x{1F1F3} [\\x{1F1E6}\\x{1F1E8}\\x{1F1EA}-\\x{1F1EC}\\x{1F1EE}\\x{1F1F1}\\x{1F1F4}\\x{1F1F5}\\x{1F1F7}\\x{1F1FA}\\x{1F1FF}]"
" | \\x{1F1F4} \\x{1F1F2}"
" | \\x{1F1F5} [\\x{1F1E6}\\x{1F1EA}-\\x{1F1ED}\\x{1F1F0}-\\x{1F1F3}\\x{1F1F7}-\\x{1F1F9}\\x{1F1FC}\\x{1F1FE}]"
" | \\x{1F1F6} \\x{1F1E6}"
" | \\x{1F1F7} [\\x{1F1EA}\\x{1F1F4}\\x{1F1F8}\\x{1F1FA}\\x{1F1FC}]"
" | \\x{1F1F8} [\\x{1F1E6}-\\x{1F1EA}\\x{1F1EC}-\\x{1F1F4}\\x{1F1F7}-\\x{1F1F9}\\x{1F1FB}\\x{1F1FD}-\\x{1F1FF}]"
" | \\x{1F1F9} [\\x{1F1E6}\\x{1F1E8}\\x{1F1E9}\\x{1F1EB}-\\x{1F1ED}\\x{1F1EF}-\\x{1F1F4}\\x{1F1F7}\\x{1F1F9}\\x{1F1FB}\\x{1F1FC}\\x{1F1FF}]"
" | \\x{1F1FA} [\\x{1F1E6}\\x{1F1EC}\\x{1F1F2}\\x{1F1F3}\\x{1F1F8}\\x{1F1FE}\\x{1F1FF}]"
" | \\x{1F1FB} [\\x{1F1E6}\\x{1F1E8}\\x{1F1EA}\\x{1F1EC}\\x{1F1EE}\\x{1F1F3}\\x{1F1FA}]"
" | \\x{1F1FC} [\\x{1F1EB}\\x{1F1F8}]"
" | \\x{1F1FD} \\x{1F1F0}"
" | \\x{1F1FE} [\\x{1F1EA}\\x{1F1F9}]"
" | \\x{1F1FF} [\\x{1F1E6}\\x{1F1F2}\\x{1F1FC}]"
" | [\\x{1F201}\\x{1F202}\\x{1F21A}\\x{1F22F}\\x{1F232}-\\x{1F23A}\\x{1F250}\\x{1F251}\\x{1F300}-\\x{1F321}\\x{1F324}-\\x{1F384}]"
" | \\x{1F385} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F386}-\\x{1F393}\\x{1F396}\\x{1F397}\\x{1F399}-\\x{1F39B}\\x{1F39E}-\\x{1F3C1}]"
" | \\x{1F3C2} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F3C3}\\x{1F3C4}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F3C5}\\x{1F3C6}]"
" | \\x{1F3C7} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F3C8}\\x{1F3C9}]"
" | \\x{1F3CA}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F3CB}\\x{1F3CC}]"
" (?:"
" \\x{FE0F} \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F3CD}-\\x{1F3F0}]"
" | \\x{1F3F3}"
" (?: \\x{FE0F} \\x{200D} \\x{1F308} )?"
" | \\x{1F3F4}"
" (?:"
" \\x{200D} \\x{2620} \\x{FE0F}"
" | \\x{E0067} \\x{E0062}"
" (?:"
" \\x{E0065} \\x{E006E} \\x{E0067}"
" | \\x{E0073} \\x{E0063} \\x{E0074}"
" | \\x{E0077} \\x{E006C} \\x{E0073}"
" )"
" \\x{E007F}"
" )?"
" | [\\x{1F3F5}\\x{1F3F7}-\\x{1F440}]"
" | \\x{1F441}"
" (?: \\x{FE0F} \\x{200D} \\x{1F5E8} \\x{FE0F} )?"
" | [\\x{1F442}\\x{1F443}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F444}\\x{1F445}]"
" | [\\x{1F446}-\\x{1F450}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F451}-\\x{1F465}]"
" | [\\x{1F466}\\x{1F467}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F468}"
" (?:"
" \\x{200D}"
" (?:"
" [\\x{2695}\\x{2696}\\x{2708}] \\x{FE0F}"
" | \\x{2764} \\x{FE0F} \\x{200D}"
" (?: \\x{1F48B} \\x{200D} )?"
" \\x{1F468}"
" | [\\x{1F33E}\\x{1F373}\\x{1F393}\\x{1F3A4}\\x{1F3A8}\\x{1F3EB}\\x{1F3ED}]"
" | \\x{1F466}"
" (?: \\x{200D} \\x{1F466} )?"
" | \\x{1F467}"
" (?: \\x{200D} [\\x{1F466}\\x{1F467}] )?"
" | [\\x{1F468}\\x{1F469}] \\x{200D}"
" (?:"
" \\x{1F466}"
" (?: \\x{200D} \\x{1F466} )?"
" | \\x{1F467}"
" (?: \\x{200D} [\\x{1F466}\\x{1F467}] )?"
" )"
" | [\\x{1F4BB}\\x{1F4BC}\\x{1F527}\\x{1F52C}\\x{1F680}\\x{1F692}\\x{1F9B0}-\\x{1F9B3}]"
" )"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?:"
" \\x{200D}"
" (?:"
" [\\x{2695}\\x{2696}\\x{2708}] \\x{FE0F}"
" | [\\x{1F33E}\\x{1F373}\\x{1F393}\\x{1F3A4}\\x{1F3A8}\\x{1F3EB}\\x{1F3ED}\\x{1F4BB}\\x{1F4BC}\\x{1F527}\\x{1F52C}\\x{1F680}\\x{1F692}\\x{1F9B0}-\\x{1F9B3}]"
" )"
" )?"
" )?"
" | \\x{1F469}"
" (?:"
" \\x{200D}"
" (?:"
" [\\x{2695}\\x{2696}\\x{2708}] \\x{FE0F}"
" | \\x{2764} \\x{FE0F} \\x{200D}"
" (?: \\x{1F48B} \\x{200D} )?"
" [\\x{1F468}\\x{1F469}]"
" | [\\x{1F33E}\\x{1F373}\\x{1F393}\\x{1F3A4}\\x{1F3A8}\\x{1F3EB}\\x{1F3ED}]"
" | \\x{1F466}"
" (?: \\x{200D} \\x{1F466} )?"
" | \\x{1F467}"
" (?: \\x{200D} [\\x{1F466}\\x{1F467}] )?"
" | \\x{1F469} \\x{200D}"
" (?:"
" \\x{1F466}"
" (?: \\x{200D} \\x{1F466} )?"
" | \\x{1F467}"
" (?: \\x{200D} [\\x{1F466}\\x{1F467}] )?"
" )"
" | [\\x{1F4BB}\\x{1F4BC}\\x{1F527}\\x{1F52C}\\x{1F680}\\x{1F692}\\x{1F9B0}-\\x{1F9B3}]"
" )"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?:"
" \\x{200D}"
" (?:"
" [\\x{2695}\\x{2696}\\x{2708}] \\x{FE0F}"
" | [\\x{1F33E}\\x{1F373}\\x{1F393}\\x{1F3A4}\\x{1F3A8}\\x{1F3EB}\\x{1F3ED}\\x{1F4BB}\\x{1F4BC}\\x{1F527}\\x{1F52C}\\x{1F680}\\x{1F692}\\x{1F9B0}-\\x{1F9B3}]"
" )"
" )?"
" )?"
" | [\\x{1F46A}-\\x{1F46D}]"
" | \\x{1F46E}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F46F}"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" | \\x{1F470} [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F471}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F472} [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F473}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F474}-\\x{1F476}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F477}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F478} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F479}-\\x{1F47B}]"
" | \\x{1F47C} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F47D}-\\x{1F480}]"
" | [\\x{1F481}\\x{1F482}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F483} [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F484}"
" | \\x{1F485} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F486}\\x{1F487}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F488}-\\x{1F4A9}]"
" | \\x{1F4AA} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F4AB}-\\x{1F4FD}\\x{1F4FF}-\\x{1F53D}\\x{1F549}-\\x{1F54E}\\x{1F550}-\\x{1F567}\\x{1F56F}\\x{1F570}\\x{1F573}]"
" | \\x{1F574} [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F575}"
" (?:"
" \\x{FE0F} \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F576}-\\x{1F579}]"
" | \\x{1F57A} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F587}\\x{1F58A}-\\x{1F58D}]"
" | [\\x{1F590}\\x{1F595}\\x{1F596}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F5A4}\\x{1F5A5}\\x{1F5A8}\\x{1F5B1}\\x{1F5B2}\\x{1F5BC}\\x{1F5C2}-\\x{1F5C4}\\x{1F5D1}-\\x{1F5D3}\\x{1F5DC}-\\x{1F5DE}\\x{1F5E1}\\x{1F5E3}\\x{1F5E8}\\x{1F5EF}\\x{1F5F3}\\x{1F5FA}-\\x{1F644}]"
" | [\\x{1F645}-\\x{1F647}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F648}-\\x{1F64A}]"
" | \\x{1F64B}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F64C} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F64D}\\x{1F64E}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F64F} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F680}-\\x{1F6A2}]"
" | \\x{1F6A3}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F6A4}-\\x{1F6B3}]"
" | [\\x{1F6B4}-\\x{1F6B6}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F6B7}-\\x{1F6BF}]"
" | \\x{1F6C0} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F6C1}-\\x{1F6C5}\\x{1F6CB}]"
" | \\x{1F6CC} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F6CD}-\\x{1F6D2}\\x{1F6E0}-\\x{1F6E5}\\x{1F6E9}\\x{1F6EB}\\x{1F6EC}\\x{1F6F0}\\x{1F6F3}-\\x{1F6F9}\\x{1F910}-\\x{1F917}]"
" | [\\x{1F918}-\\x{1F91C}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F91D}"
" | [\\x{1F91E}\\x{1F91F}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F920}-\\x{1F925}]"
" | \\x{1F926}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F927}-\\x{1F92F}]"
" | [\\x{1F930}-\\x{1F936}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F937}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F938}\\x{1F939}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F93A}"
" | \\x{1F93C}"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" | [\\x{1F93D}\\x{1F93E}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F940}-\\x{1F945}\\x{1F947}-\\x{1F970}\\x{1F973}-\\x{1F976}\\x{1F97A}\\x{1F97C}-\\x{1F9A2}\\x{1F9B0}-\\x{1F9B4}]"
" | [\\x{1F9B5}\\x{1F9B6}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F9B7}"
" | [\\x{1F9B8}\\x{1F9B9}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F9C0}-\\x{1F9C2}\\x{1F9D0}]"
" | [\\x{1F9D1}-\\x{1F9D5}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F9D6}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F9D7}-\\x{1F9DD}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F9DE}\\x{1F9DF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" | [\\x{1F9E0}-\\x{1F9FF}]"
For utf-16 mode (stringed), compressed mode :
"[#*0-9]\\uFE0F\\u20E3|[\\u00A9\\u00AE\\u203C\\u2049\\u2122\\u2139\\u2"
"194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\"
"u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u260"
"0-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618]|\\u261D(?:\\uD83C[\\uDF"
"FB-\\uDFFF])?|[\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u26"
"38-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u"
"2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\"
"u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\"
"u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5"
"\\u26F7\\u26F8]|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640"
"\\u2642]\\uFE0F)?|\\uFE0F\\u200D[\\u2640\\u2642]\\uFE0F)?|[\\u26FA\\u"
"26FD\\u2702\\u2705\\u2708\\u2709]|[\\u270A-\\u270D](?:\\uD83C[\\uDFF"
"B-\\uDFFF])?|[\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u273"
"3\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u27"
"64\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u"
"2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C(?:[\\u"
"DC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A]|\\uDDE"
"6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\u"
"DDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDD"
"F1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C"
"[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\u"
"DDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDF"
"F]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]"
"|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C["
"\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uD"
"DFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDD"
"EE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD8"
"3C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDE"
"E\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\u"
"DDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uD"
"DE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDD"
"EA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\"
"uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uD"
"DF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDD"
"EA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC"
"-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6"
"\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDD"
"FC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\"
"uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDD"
"FA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD8"
"3C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|[\\uDE01\\uD"
"E02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-"
"\\uDF84]|\\uDF85(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDF86-\\uDF93\\uDF9"
"6\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFC1]|\\uDFC2(?:\\uD83C[\\uDFFB-\\u"
"DFFF])?|[\\uDFC3\\uDFC4](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\"
"uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDFC5\\uDFC6"
"]|\\uDFC7(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC8\\uDFC9]|\\uDFCA(?:\\"
"u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2"
"640\\u2642]\\uFE0F)?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]("
"?:\\u200D[\\u2640\\u2642]\\uFE0F)?|\\uFE0F\\u200D[\\u2640\\u2642]\\uF"
"E0F)?|[\\uDFCD-\\uDFF0]|\\uDFF3(?:\\uFE0F\\u200D\\uD83C\\uDF08)?|\\u"
"DFF4(?:\\u200D\\u2620\\uFE0F|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\"
"uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74"
"|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?|[\\uDFF5\\uDFF7"
"-\\uDFFF])|\\uD83D(?:[\\uDC00-\\uDC40]|\\uDC41(?:\\uFE0F\\u200D\\uD8"
"3D\\uDDE8\\uFE0F)?|[\\uDC42\\uDC43](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\"
"uDC44\\uDC45]|[\\uDC46-\\uDC50](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC"
"51-\\uDC65]|[\\uDC66\\uDC67](?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDC68(?"
":\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F|\\u2764\\uFE0F\\u200D\\uD83"
"D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDF"
"A4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?"
"|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|[\\uDC68\\uDC69]\\u200D\\"
"uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D["
"\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92])|\\uD"
"83E[\\uDDB0-\\uDDB3])|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D(?:[\\u2695"
"\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uD"
"FEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD8"
"3E[\\uDDB0-\\uDDB3]))?)?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708"
"]\\uFE0F|\\u2764\\uFE0F\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC"
"68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]"
"|\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83"
"D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D"
"\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCB"
"C\\uDD27\\uDD2C\\uDE80\\uDE92])|\\uD83E[\\uDDB0-\\uDDB3])|\\uD83C[\\u"
"DFFB-\\uDFFF](?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\u"
"DF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCB"
"C\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDB0-\\uDDB3]))?)?|[\\uDC6"
"A-\\uDC6D]|\\uDC6E(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-"
"\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uDC6F(?:\\u200D[\\u2"
"640\\u2642]\\uFE0F)?|\\uDC70(?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDC71(?"
":\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\"
"u2640\\u2642]\\uFE0F)?)?|\\uDC72(?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDC"
"73(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u20"
"0D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDC74-\\uDC76](?:\\uD83C[\\uDFFB-\\"
"uDFFF])?|\\uDC77(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\"
"uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uDC78(?:\\uD83C[\\uDF"
"FB-\\uDFFF])?|[\\uDC79-\\uDC7B]|\\uDC7C(?:\\uD83C[\\uDFFB-\\uDFFF])"
"?|[\\uDC7D-\\uDC80]|[\\uDC81\\uDC82](?:\\u200D[\\u2640\\u2642]\\uFE0"
"F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uD"
"C83(?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDC84|\\uDC85(?:\\uD83C[\\uDFFB-"
"\\uDFFF])?|[\\uDC86\\uDC87](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C"
"[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDC88-\\uD"
"CA9]|\\uDCAA(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDCAB-\\uDCFD\\uDCFF-\\"
"uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73]|\\uDD74(?:"
"\\uD83C[\\uDFFB-\\uDFFF])?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF](?:\\u2"
"00D[\\u2640\\u2642]\\uFE0F)?|\\uFE0F\\u200D[\\u2640\\u2642]\\uFE0F)?"
"|[\\uDD76-\\uDD79]|\\uDD7A(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD87\\uD"
"D8A-\\uDD8D]|[\\uDD90\\uDD95\\uDD96](?:\\uD83C[\\uDFFB-\\uDFFF])?|["
"\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDD"
"D3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE44]|"
"[\\uDE45-\\uDE47](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\"
"uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDE48-\\uDE4A]|\\uDE"
"4B(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u20"
"0D[\\u2640\\u2642]\\uFE0F)?)?|\\uDE4C(?:\\uD83C[\\uDFFB-\\uDFFF])?|"
"[\\uDE4D\\uDE4E](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\u"
"DFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uDE4F(?:\\uD83C[\\uDFF"
"B-\\uDFFF])?|[\\uDE80-\\uDEA2]|\\uDEA3(?:\\u200D[\\u2640\\u2642]\\uF"
"E0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|["
"\\uDEA4-\\uDEB3]|[\\uDEB4-\\uDEB6](?:\\u200D[\\u2640\\u2642]\\uFE0F|"
"\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDE"
"B7-\\uDEBF]|\\uDEC0(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDEC1-\\uDEC5\\u"
"DECB]|\\uDECC(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDECD-\\uDED2\\uDEE0-"
"\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEF9])|\\uD83E(?:[\\uDD"
"10-\\uDD17]|[\\uDD18-\\uDD1C](?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDD1D|"
"[\\uDD1E\\uDD1F](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD20-\\uDD25]|\\uD"
"D26(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u2"
"00D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDD27-\\uDD2F]|[\\uDD30-\\uDD36]("
"?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDD37(?:\\u200D[\\u2640\\u2642]\\uFE0"
"F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\u"
"DD38\\uDD39](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFF"
"F](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uDD3A|\\uDD3C(?:\\u200D[\\"
"u2640\\u2642]\\uFE0F)?|[\\uDD3D\\uDD3E](?:\\u200D[\\u2640\\u2642]\\u"
"FE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|"
"[\\uDD40-\\uDD45\\uDD47-\\uDD70\\uDD73-\\uDD76\\uDD7A\\uDD7C-\\uDDA2\\"
"uDDB0-\\uDDB4]|[\\uDDB5\\uDDB6](?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDB"
"7|[\\uDDB8\\uDDB9](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-"
"\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDDC0-\\uDDC2\\uDDD"
"0]|[\\uDDD1-\\uDDD5](?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDD6(?:\\u200D"
"[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u"
"2642]\\uFE0F)?)?|[\\uDDD7-\\uDDDD](?:\\u200D[\\u2640\\u2642]\\uFE0F"
"|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uD"
"DDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?|[\\uDDE0-\\uDDFF])"
Upvotes: 0
Reputation: 709
Just to use regex to solve it:
s = s.replaceAll("\\p{So}+", "");
You can find it in
http://www.regular-expressions.info/unicode.html
https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#OTHER_SYMBOL
Upvotes: 22
Reputation: 185
There are two ways to solve this sticky problem.
The first one is Using third-party libs like emoji-java and emoji4j. These are mentioned above. You can easily use the method containsEmoji
or removesEmoji
, etc. And in your own Apps, you need to keep update with these libs.
As for me, I want to find a simple solution to solve this problem.
After a whole day of searching, I've found a magic regex:
"(?:[\uD83C\uDF00-\uD83D\uDDFF]|[\uD83E\uDD00-\uD83E\uDDFF]|[\uD83D\uDE00-\uD83D\uDE4F]|[\uD83D\uDE80-\uD83D\uDEFF]|[\u2600-\u26FF]\uFE0F?|[\u2700-\u27BF]\uFE0F?|\u24C2\uFE0F?|[\uD83C\uDDE6-\uD83C\uDDFF]{1,2}|[\uD83C\uDD70\uD83C\uDD71\uD83C\uDD7E\uD83C\uDD7F\uD83C\uDD8E\uD83C\uDD91-\uD83C\uDD9A]\uFE0F?|[\u0023\u002A\u0030-\u0039]\uFE0F?\u20E3|[\u2194-\u2199\u21A9-\u21AA]\uFE0F?|[\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55]\uFE0F?|[\u2934\u2935]\uFE0F?|[\u3030\u303D]\uFE0F?|[\u3297\u3299]\uFE0F?|[\uD83C\uDE01\uD83C\uDE02\uD83C\uDE1A\uD83C\uDE2F\uD83C\uDE32-\uD83C\uDE3A\uD83C\uDE50\uD83C\uDE51]\uFE0F?|[\u203C\u2049]\uFE0F?|[\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE]\uFE0F?|[\u00A9\u00AE]\uFE0F?|[\u2122\u2139]\uFE0F?|\uD83C\uDC04\uFE0F?|\uD83C\uDCCF\uFE0F?|[\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA]\uFE0F?)"
which I have tested OK in Java. It perfectly solved my problem.
You can view this on the Github page:
https://github.com/zly394/EmojiRegex
Notes:
The answer which provided by @Eric Nakagawa contains some errors, which cannot be operated properly.
Upvotes: 6
Reputation: 57
This is what I use to remove emojis and so far it has shown to allow all other alphabets.
private static String remove_Emojis(String name)
{
//we will store all the letters in this array
ArrayList<Character> nonEmoji = new ArrayList<>();
// and when we rebuild the name we will put it in here
String newName = "";
// we are going to loop through checking each character to see if its an emoji or not
for (int i = 0; i < name.length(); i++)
{
if (Character.isLetterOrDigit(name.charAt(i)))
{
nonEmoji.add(name.charAt(i));
}
else
{
// this is just a 2nd check in case the other method didn't allow some letter
if (Build.VERSION.SDK_INT > 18)
{
if (Character.isAlphabetic(name.charAt(i)))
{
nonEmoji.add(name.charAt(i));
}
}
}
if (name.charAt(i) == ' ')// may want to consider adding or '-' or '\''
{
nonEmoji.add(i);// just add it
}
if (name.charAt(i) == '@' && !name.contains(" "))// I put this in for email addresses
{
nonEmoji.add('@');
}
}
// finally just loop through building it back out
for (int i = 0; i < nonEmoji.size(); i++) {
newName += nonEmoji.get(i);
}
return newName;
}
Upvotes: 2
Reputation: 152
The best regex for extracting ALL emoji is this:
(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32-\ude3a]|[\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])
It identifies many single-char emoji that the other answers do not account for. For more information about how this regex works, take a look at this post. https://medium.com/@thekevinscott/emojis-in-javascript-f693d0eb79fb#.enomgcu63
Upvotes: 7
Reputation: 2444
You may also use emoji4j library.
String emojiText = "A ๐ฑ, ๐ฑ and a ๐ญ became friends. For ๐ถ's birthday party, they all had ๐s, ๐s, ๐ชs and ๐ฐ.";
EmojiUtils.removeAllEmojis(emojiText);//returns "A , and a became friends. For 's birthday party, they all had s, s, s and .
Upvotes: 3
Reputation: 131
This worked for me in java 8:
public static String mysqlSafe(String input) {
if (input == null) return null;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
if (i < (input.length() - 1)) { // Emojis are two characters long in java, e.g. a rocket emoji is "\uD83D\uDE80";
if (Character.isSurrogatePair(input.charAt(i), input.charAt(i + 1))) {
i += 1; //also skip the second character of the emoji
continue;
}
}
sb.append(input.charAt(i));
}
return sb.toString();
}
Upvotes: 12
Reputation: 91
you can do it like this
String s="Thats a nice joke ๐๐๐ ๐";
Pattern pattern = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",
Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(s);
List<String> matchList = new ArrayList<String>();
while (matcher.find()) {
matchList.add(matcher.group());
}
for(int i=0;i<matchList.size();i++){
System.out.println(matchList.get(i));
}
Upvotes: 9
Reputation: 1400
Had a similar problem. The following served me well and matches surrogate pairs
public class SplitByUnicode {
public static void main(String[] argv) throws Exception {
String string = "Thats a nice joke ๐๐๐ ๐";
System.out.println("Original String:"+string);
String regexPattern = "[\uD83C-\uDBFF\uDC00-\uDFFF]+";
byte[] utf8 = string.getBytes("UTF-8");
String string1 = new String(utf8, "UTF-8");
Pattern pattern = Pattern.compile(regexPattern);
Matcher matcher = pattern.matcher(string1);
List<String> matchList = new ArrayList<String>();
while (matcher.find()) {
matchList.add(matcher.group());
}
for(int i=0;i<matchList.size();i++){
System.out.println(i+":"+matchList.get(i));
}
}
}
Output is:
Original String:Thats a nice joke ๐๐๐ ๐
0:๐๐๐
1:๐
Found the regex from https://stackoverflow.com/a/24071599/915972
Upvotes: 20
Reputation: 61
Assuming that you are asking for standard Unicode emoji ranges (there are different blocks by vendor) you may consider these three ranges:
Besides all the thoughtful explanation that T.J.Crowder has shared with us, needs to be said that beginning with Java 7 is possible to match UTF-16 encoded surrogate pairs with ease.
Take a look at the docs:
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
A Unicode character can also be represented in a regular-expression by using its Hex notation(hexadecimal code point value) directly as described in construct \x{...}, for example a supplementary character U+2011F can be specified as \x{2011F}, instead of two consecutive Unicode escape sequences of the surrogate pair \uD840\uDD1F.
Nevertheless, if you cannot switch to Java 7, you can extend the valuable UnicodeEscaper provided by Guava.
Here an implementation for the sake of example:
public class SimpleEscaper extends UnicodeEscaper
{
@Override
protected char[] escape(int codePoint)
{
if (0x1f000 >= codePoint && codePoint <= 0x1ffff)
{
return Integer.toHexString(codePoint).toCharArray();
}
return Character.toChars(codePoint);
}
}
Upvotes: 5