wdt-emoji-bundle
Version:
Slack like emoji selector with apple, twitter, google, emojione, facebook, messenger and custom emoji support.
798 lines (727 loc) • 189 kB
JavaScript
"use strict";
;(function () {
var root = this;
var previous_emoji = root.EmojiConvertor;
/**
* @global
* @namespace
*/
var emoji = function () {
var self = this;
/**
* The set of images to use for graphical emoji.
*
* @memberof emoji
* @type {string}
*/
self.img_set = 'apple';
/**
* Configuration details for different image sets. This includes a path to a directory containing the
* individual images (`path`) and a URL to sprite sheets (`sheet`). All of these images can be found
* in the [emoji-data repository]{@link https://github.com/iamcal/emoji-data}. Using a CDN for these
* is not a bad idea.
*
* @memberof emoji
* @type {object}
*/
self.img_sets = {
'apple' : {'path': '/emoji-data/img-apple-64/', 'sheet': '/emoji-data/sheet_apple_64.png', 'mask': 1},
'google' : {'path': '/emoji-data/img-google-64/', 'sheet': '/emoji-data/sheet_google_64.png', 'mask': 2},
'twitter' : {'path': '/emoji-data/img-twitter-64/', 'sheet': '/emoji-data/sheet_twitter_64.png', 'mask': 4},
'emojione' : {'path': '/emoji-data/img-emojione-64/', 'sheet': '/emoji-data/sheet_emojione_64.png', 'mask': 8},
'facebook' : {'path': '/emoji-data/img-facebook-64/', 'sheet': '/emoji-data/sheet_facebook_64.png', 'mask': 16},
'messenger': {'path': '/emoji-data/img-messenger-64/', 'sheet': '/emoji-data/sheet_messenger_64.png', 'mask': 32},
};
/**
* Use a CSS class instead of specifying a sprite or background image for
* the span representing the emoticon. This requires a CSS sheet with
* emoticon data-uris.
*
* @memberof emoji
* @type bool
* @todo document how to build the CSS stylesheet self requires.
*/
self.use_css_imgs = false;
/**
* Instead of replacing emoticons with the appropriate representations,
* replace them with their colon string representation.
* @memberof emoji
* @type bool
*/
self.colons_mode = false;
self.text_mode = false;
/**
* If true, sets the "title" property on the span or image that gets
* inserted for the emoticon.
* @memberof emoji
* @type bool
*/
self.include_title = false;
/**
* If true, sets the text of the span or image that gets inserted for the
* emoticon.
* @memberof emoji
* @type bool
*/
self.include_text = false;
/**
* If the platform supports native emoticons, use those instead
* of the fallbacks.
* @memberof emoji
* @type bool
*/
self.allow_native = true;
/**
* Set to true to use CSS sprites instead of individual images on
* platforms that support it.
*
* @memberof emoji
* @type bool
*/
self.use_sheet = false;
/**
*
* Set to true to avoid black & white native Windows emoji being used.
*
* @memberof emoji
* @type bool
*/
self.avoid_ms_emoji = true;
/**
*
* Set to true to allow :CAPITALIZATION:
*
* @memberof emoji
* @type bool
*/
self.allow_caps = false;
/**
*
* Suffix to allow for individual image cache busting
*
* @memberof emoji
* @type string
*/
self.img_suffix = '';
// Keeps track of what has been initialized.
/** @private */
self.inits = {};
self.map = {};
// discover the environment settings
self.init_env();
return self;
}
emoji.prototype.noConflict = function () {
root.EmojiConvertor = previous_emoji;
return emoji;
}
/**
* @memberof emoji
* @param {string} str A string potentially containing ascii emoticons
* (ie. `:)`)
*
* @returns {string} A new string with all emoticons in `str`
* replaced by a representatation that's supported by the current
* environtment.
*/
emoji.prototype.replace_emoticons = function (str) {
var self = this;
var colonized = self.replace_emoticons_with_colons(str);
return self.replace_colons(colonized);
};
/**
* @memberof emoji
* @param {string} str A string potentially containing ascii emoticons
* (ie. `:)`)
*
* @returns {string} A new string with all emoticons in `str`
* replaced by their colon string representations (ie. `:smile:`)
*/
emoji.prototype.replace_emoticons_with_colons = function (str) {
var self = this;
self.init_emoticons();
var _prev_offset = 0;
var emoticons_with_parens = [];
var str_replaced = str.replace(self.rx_emoticons, function (m, $1, emoticon, offset) {
var prev_offset = _prev_offset;
_prev_offset = offset + m.length;
var has_open_paren = emoticon.indexOf('(') !== -1;
var has_close_paren = emoticon.indexOf(')') !== -1;
/*
* Track paren-having emoticons for fixing later
*/
if ((has_open_paren || has_close_paren) && emoticons_with_parens.indexOf(emoticon) == -1) {
emoticons_with_parens.push(emoticon);
}
/*
* Look for preceding open paren for emoticons that contain a close paren
* This prevents matching "8)" inside "(around 7 - 8)"
*/
if (has_close_paren && !has_open_paren) {
var piece = str.substring(prev_offset, offset);
if (piece.indexOf('(') !== -1 && piece.indexOf(')') === -1) return m;
}
/*
* See if we're in a numbered list
* This prevents matching "8)" inside "7) foo\n8) bar"
*/
if (m === '\n8)') {
var before_match = str.substring(0, offset);
if (/\n?(6\)|7\))/.test(before_match)) return m;
}
var val = self.data[self.map.emoticons[emoticon]][3][0];
return val ? $1 + ':' + val + ':' : m;
});
/*
* Come back and fix emoticons we ignored because they were inside parens.
* It's useful to do self at the end so we don't get tripped up by other,
* normal emoticons
*/
if (emoticons_with_parens.length) {
var escaped_emoticons = emoticons_with_parens.map(self.escape_rx);
var parenthetical_rx = new RegExp('(\\(.+)(' + escaped_emoticons.join('|') + ')(.+\\))', 'g');
str_replaced = str_replaced.replace(parenthetical_rx, function (m, $1, emoticon, $2) {
var val = self.data[self.map.emoticons[emoticon]][3][0];
return val ? $1 + ':' + val + ':' + $2 : m;
});
}
return str_replaced;
};
/**
* @memberof emoji
* @param {string} str A string potentially containing colon string
* representations of emoticons (ie. `:smile:`)
*
* @returns {string} A new string with all colon string emoticons replaced
* with the appropriate representation.
*/
emoji.prototype.replace_colons = function (str) {
var self = this;
self.init_colons();
return str.replace(self.rx_colons, function (m) {
var idx = m.substr(1, m.length - 2);
if (self.allow_caps) idx = idx.toLowerCase();
// special case - an emoji with a skintone modified
if (idx.indexOf('::skin-tone-') > -1) {
var skin_tone = idx.substr(-1, 1);
var skin_idx = 'skin-tone-' + skin_tone;
var skin_val = self.map.colons[skin_idx];
idx = idx.substr(0, idx.length - 13);
var val = self.map.colons[idx];
if (val) {
return self.replacement(val, idx, ':', {
'idx' : skin_val,
'actual' : skin_idx,
'wrapper': ':'
});
} else {
return ':' + idx + ':' + self.replacement(skin_val, skin_idx, ':');
}
} else {
var val = self.map.colons[idx];
return val ? self.replacement(val, idx, ':') : m;
}
});
};
/**
* @memberof emoji
* @param {string} str A string potentially containing unified unicode
* emoticons. (ie. 😄)
*
* @returns {string} A new string with all unicode emoticons replaced with
* the appropriate representation for the current environment.
*/
emoji.prototype.replace_unified = function (str) {
var self = this;
self.init_unified();
return str.replace(self.rx_unified, function (m, p1, p2) {
var val = self.map.unified[p1];
if (!val) return m;
var idx = null;
if (p2 == '\uD83C\uDFFB') idx = '1f3fb';
if (p2 == '\uD83C\uDFFC') idx = '1f3fc';
if (p2 == '\uD83C\uDFFD') idx = '1f3fd';
if (p2 == '\uD83C\uDFFE') idx = '1f3fe';
if (p2 == '\uD83C\uDFFF') idx = '1f3ff';
if (idx) {
return self.replacement(val, null, null, {
idx : idx,
actual : p2,
wrapper: ''
});
}
return self.replacement(val);
});
};
emoji.prototype.addAliases = function (map) {
var self = this;
self.init_colons();
for (var i in map) {
self.map.colons[i] = map[i];
}
};
emoji.prototype.removeAliases = function (list) {
var self = this;
for (var i = 0; i < list.length; i++) {
var alias = list[i];
// first, delete the alias mapping
delete self.map.colons[alias];
// now reset it to the default, if one exists
finder_block: {
for (var j in self.data) {
for (var k = 0; k < self.data[j][3].length; k++) {
if (alias == self.data[j][3][k]) {
self.map.colons[alias] = j;
break finder_block;
}
}
}
}
}
};
// Does the actual replacement of a character with the appropriate
/** @private */
emoji.prototype.replacement = function (idx, actual, wrapper, variation) {
var self = this;
var full_idx = idx;
// for emoji with variation modifiers, set `extra` to the standalone output for the
// modifier (used if we can't combine the glyph) and set variation_idx to key of the
// variation modifier (used below)
var extra = '';
var variation_idx = 0;
if (typeof variation === 'object') {
extra = self.replacement(variation.idx, variation.actual, variation.wrapper);
variation_idx = idx + '-' + variation.idx;
}
var img_set = self.img_set;
// When not using sheets (which all contain all emoji),
// make sure we use an img_set that contains this emoji.
// For now, assume set "apple" has all individual images.
if ((!self.use_sheet || !self.supports_css) && !(self.data[idx][6] & self.img_sets[self.img_set].mask)) {
img_set = 'apple';
}
// deal with simple modes (colons and text) first
wrapper = wrapper || '';
if (self.colons_mode) return ':' + self.data[idx][3][0] + ':' + extra;
var text_name = (actual) ? wrapper + actual + wrapper : self.data[idx][8] || wrapper + self.data[idx][3][0] + wrapper;
if (self.text_mode) return text_name + extra;
// native modes next.
// for variations selectors, we just need to output them raw, which `extra` will contain.
self.init_env();
if (self.replace_mode == 'unified' && self.allow_native && self.data[idx][0][0]) return self.data[idx][0][0] + extra;
if (self.replace_mode == 'softbank' && self.allow_native && self.data[idx][1]) return self.data[idx][1] + extra;
if (self.replace_mode == 'google' && self.allow_native && self.data[idx][2]) return self.data[idx][2] + extra;
// finally deal with image modes.
// variation selectors are more complex here - if the image set and particular emoji supports variations, then
// use the variation image. otherwise, return it as a separate image (already calculated in `extra`).
// first we set up the params we'll use if we can't use a variation.
var img = self.data[idx][7] || self.img_sets[img_set].path + idx + '.png' + self.img_suffix;
var title = self.include_title ? ' title="' + (actual || self.data[idx][3][0]) + '"' : '';
var text = self.include_text ? wrapper + (actual || self.data[idx][3][0]) + wrapper : '';
var px = self.data[idx][4];
var py = self.data[idx][5];
// now we'll see if we can use a varition. if we can, we can override the params above and blank
// out `extra` so we output a sinlge glyph.
// we need to check that:
// * we requested a variation
// * such a variation exists in `emoji.variations_data`
// * we're not using a custom image for self glyph
// * the variation has an image defined for the current image set
if (variation_idx && self.variations_data[variation_idx] && self.variations_data[variation_idx][2] && !self.data[idx][7]) {
if (self.variations_data[variation_idx][2] & self.img_sets[self.img_set].mask) {
img = self.img_sets[self.img_set].path + variation_idx + '.png';
px = self.variations_data[variation_idx][0];
py = self.variations_data[variation_idx][1];
extra = '';
full_idx = variation_idx;
// add variation text
if (self.include_text && variation && variation.actual && variation.wrapper) {
text += variation.wrapper + variation.actual + variation.wrapper;
}
}
}
if (self.supports_css) {
if (self.use_sheet && px != null && py != null) {
var mul = 100 / (self.sheet_size - 1);
var style = 'background: url(' + self.img_sets[img_set].sheet + ');background-position:' + (mul * px) + '% ' + (mul * py) + '%;background-size:' + self.sheet_size + '00%';
return '<span class="emoji-outer emoji-sizer"><span class="emoji-inner" style="' + style + '"' + title + ' data-codepoints="' + full_idx + '">' + text + '</span></span>' + extra;
} else if (self.use_css_imgs) {
return '<span class="emoji emoji-' + idx + '"' + title + ' data-codepoints="' + full_idx + '">' + text + '</span>' + extra;
} else {
return '<span class="emoji emoji-sizer" style="background-image:url(' + img + ')"' + title + ' data-codepoints="' + full_idx + '">' + text + '</span>' + extra;
}
}
return '<img src="' + img + '" class="emoji" data-codepoints="' + full_idx + '" ' + title + '/>' + extra;
};
// Initializes the text emoticon data
/** @private */
emoji.prototype.init_emoticons = function () {
var self = this;
if (self.inits.emoticons) return;
self.init_colons(); // we require this for the emoticons map
self.inits.emoticons = 1;
var a = [];
self.map.emoticons = {};
for (var i in self.emoticons_data) {
// because we never see some characters in our text except as entities, we must do some replacing
var emoticon = i.replace(/\&/g, '&').replace(/\</g, '<').replace(/\>/g, '>');
if (!self.map.colons[self.emoticons_data[i]]) continue;
self.map.emoticons[emoticon] = self.map.colons[self.emoticons_data[i]];
a.push(self.escape_rx(emoticon));
}
self.rx_emoticons = new RegExp(('(^|\\s)(' + a.join('|') + ')(?=$|[\\s|\\?\\.,!])'), 'g');
};
// Initializes the colon string data
/** @private */
emoji.prototype.init_colons = function () {
var self = this;
if (self.inits.colons) return;
self.inits.colons = 1;
self.rx_colons = new RegExp('\:[a-zA-Z0-9-_+]+\:(\:skin-tone-[2-6]\:)?', 'g');
self.map.colons = {};
for (var i in self.data) {
for (var j = 0; j < self.data[i][3].length; j++) {
self.map.colons[self.data[i][3][j]] = i;
}
}
};
// initializes the unified unicode emoticon data
/** @private */
emoji.prototype.init_unified = function () {
var self = this;
if (self.inits.unified) return;
self.inits.unified = 1;
var a = [];
self.map.unified = {};
for (var i in self.data) {
for (var j = 0; j < self.data[i][0].length; j++) {
a.push(self.data[i][0][j].replace('*', '\\*'));
self.map.unified[self.data[i][0][j]] = i;
}
}
a = a.sort(function (a, b) {
return b.length - a.length;
});
self.rx_unified = new RegExp('(' + a.join('|') + ')(\uD83C[\uDFFB-\uDFFF])?', "g");
};
// initializes the environment, figuring out what representation
// of emoticons is best.
/** @private */
emoji.prototype.init_env = function () {
var self = this;
if (self.inits.env) return;
self.inits.env = 1;
self.replace_mode = 'img';
self.supports_css = false;
if (typeof(navigator) !== 'undefined') {
var ua = navigator.userAgent;
if (window.getComputedStyle) {
try {
var st = window.getComputedStyle(document.body);
if (st['background-size'] || st['backgroundSize']) {
self.supports_css = true;
}
} catch (e) {
// Swallow an exception caused by hidden iFrames on Firefox
// https://github.com/iamcal/js-emoji/issues/73
if (ua.match(/Firefox/i)) {
self.supports_css = true;
}
}
}
if (ua.match(/(iPhone|iPod|iPad|iPhone\s+Simulator)/i)) {
if (ua.match(/OS\s+[12345]/i)) {
self.replace_mode = 'softbank';
return;
}
if (ua.match(/OS\s+[6789]/i)) {
self.replace_mode = 'unified';
return;
}
}
if (ua.match(/Mac OS X 10[._ ](?:[789]|1\d)/i)) {
self.replace_mode = 'unified';
return;
}
if (!self.avoid_ms_emoji) {
if (ua.match(/Windows NT 6.[1-9]/i) || ua.match(/Windows NT 10.[0-9]/i)) {
if (!ua.match(/Chrome/i) && !ua.match(/MSIE 8/i)) {
self.replace_mode = 'unified';
return;
}
}
}
}
// Need a better way to detect android devices that actually
// support emoji.
if (false && ua.match(/Android/i)) {
self.replace_mode = 'google';
return;
}
if (self.supports_css) {
self.replace_mode = 'css';
}
// nothing fancy detected - use images
};
/** @private */
emoji.prototype.escape_rx = function (text) {
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
};
emoji.prototype.sheet_size = 41;
/** @private */
emoji.prototype.data = {
"00a9" : [["\u00A9\uFE0F", "\u00A9"], "\uE24E", "\uDBBA\uDF29", ["copyright"], 0, 0, 11, 0],
"00ae" : [["\u00AE\uFE0F", "\u00AE"], "\uE24F", "\uDBBA\uDF2D", ["registered"], 0, 1, 11, 0],
"203c" : [["\u203C\uFE0F", "\u203C"], "", "\uDBBA\uDF06", ["bangbang"], 0, 2, 15, 0],
"2049" : [["\u2049\uFE0F", "\u2049"], "", "\uDBBA\uDF05", ["interrobang"], 0, 3, 15, 0],
"2122" : [["\u2122\uFE0F", "\u2122"], "\uE537", "\uDBBA\uDF2A", ["tm"], 0, 4, 11, 0],
"2139" : [["\u2139\uFE0F", "\u2139"], "", "\uDBBA\uDF47", ["information_source"], 0, 5, 15, 0],
"2194" : [["\u2194\uFE0F", "\u2194"], "", "\uDBBA\uDEF6", ["left_right_arrow"], 0, 6, 15, 0],
"2195" : [["\u2195\uFE0F", "\u2195"], "", "\uDBBA\uDEF7", ["arrow_up_down"], 0, 7, 15, 0],
"2196" : [["\u2196\uFE0F", "\u2196"], "\uE237", "\uDBBA\uDEF2", ["arrow_upper_left"], 0, 8, 15, 0],
"2197" : [["\u2197\uFE0F", "\u2197"], "\uE236", "\uDBBA\uDEF0", ["arrow_upper_right"], 0, 9, 15, 0],
"2198" : [["\u2198\uFE0F", "\u2198"], "\uE238", "\uDBBA\uDEF1", ["arrow_lower_right"], 0, 10, 15, 0],
"2199" : [["\u2199\uFE0F", "\u2199"], "\uE239", "\uDBBA\uDEF3", ["arrow_lower_left"], 0, 11, 15, 0],
"21a9" : [["\u21A9\uFE0F", "\u21A9"], "", "\uDBBA\uDF83", ["leftwards_arrow_with_hook"], 0, 12, 15, 0],
"21aa" : [["\u21AA\uFE0F", "\u21AA"], "", "\uDBBA\uDF88", ["arrow_right_hook"], 0, 13, 15, 0],
"231a" : [["\u231A\uFE0F", "\u231A"], "", "\uDBB8\uDC1D", ["watch"], 0, 14, 15, 0],
"231b" : [["\u231B\uFE0F", "\u231B"], "", "\uDBB8\uDC1C", ["hourglass"], 0, 15, 15, 0],
"2328" : [["\u2328\uFE0F", "\u2328"], "", "", ["keyboard"], 0, 16, 15, 0],
"23cf" : [["\u23CF"], "", "", ["eject"], 0, 17, 2, 0],
"23e9" : [["\u23E9"], "\uE23C", "\uDBBA\uDEFE", ["fast_forward"], 0, 18, 15, 0],
"23ea" : [["\u23EA"], "\uE23D", "\uDBBA\uDEFF", ["rewind"], 0, 19, 15, 0],
"23eb" : [["\u23EB"], "", "\uDBBA\uDF03", ["arrow_double_up"], 0, 20, 15, 0],
"23ec" : [["\u23EC"], "", "\uDBBA\uDF02", ["arrow_double_down"], 0, 21, 15, 0],
"23ed" : [["\u23ED"], "", "", ["black_right_pointing_double_triangle_with_vertical_bar"], 0, 22, 15, 0],
"23ee" : [["\u23EE"], "", "", ["black_left_pointing_double_triangle_with_vertical_bar"], 0, 23, 15, 0],
"23ef" : [["\u23EF"], "", "", ["black_right_pointing_triangle_with_double_vertical_bar"], 0, 24, 15, 0],
"23f0" : [["\u23F0"], "\uE02D", "\uDBB8\uDC2A", ["alarm_clock"], 0, 25, 15, 0],
"23f1" : [["\u23F1"], "", "", ["stopwatch"], 0, 26, 15, 0],
"23f2" : [["\u23F2"], "", "", ["timer_clock"], 0, 27, 15, 0],
"23f3" : [["\u23F3"], "", "\uDBB8\uDC1B", ["hourglass_flowing_sand"], 0, 28, 15, 0],
"23f8" : [["\u23F8"], "", "", ["double_vertical_bar"], 0, 29, 15, 0],
"23f9" : [["\u23F9"], "", "", ["black_square_for_stop"], 0, 30, 15, 0],
"23fa" : [["\u23FA"], "", "", ["black_circle_for_record"], 0, 31, 15, 0],
"24c2" : [["\u24C2\uFE0F", "\u24C2"], "\uE434", "\uDBB9\uDFE1", ["m"], 0, 32, 15, 0],
"25aa" : [["\u25AA\uFE0F", "\u25AA"], "\uE21A", "\uDBBA\uDF6E", ["black_small_square"], 0, 33, 15, 0],
"25ab" : [["\u25AB\uFE0F", "\u25AB"], "\uE21B", "\uDBBA\uDF6D", ["white_small_square"], 0, 34, 15, 0],
"25b6" : [["\u25B6\uFE0F", "\u25B6"], "\uE23A", "\uDBBA\uDEFC", ["arrow_forward"], 0, 35, 15, 0],
"25c0" : [["\u25C0\uFE0F", "\u25C0"], "\uE23B", "\uDBBA\uDEFD", ["arrow_backward"], 0, 36, 15, 0],
"25fb" : [["\u25FB\uFE0F", "\u25FB"], "\uE21B", "\uDBBA\uDF71", ["white_medium_square"], 0, 37, 15, 0],
"25fc" : [["\u25FC\uFE0F", "\u25FC"], "\uE21A", "\uDBBA\uDF72", ["black_medium_square"], 0, 38, 15, 0],
"25fd" : [["\u25FD\uFE0F", "\u25FD"], "\uE21B", "\uDBBA\uDF6F", ["white_medium_small_square"], 0, 39, 15, 0],
"25fe" : [["\u25FE\uFE0F", "\u25FE"], "\uE21A", "\uDBBA\uDF70", ["black_medium_small_square"], 0, 40, 15, 0],
"2600" : [["\u2600\uFE0F", "\u2600"], "\uE04A", "\uDBB8\uDC00", ["sunny"], 1, 0, 15, 0],
"2601" : [["\u2601\uFE0F", "\u2601"], "\uE049", "\uDBB8\uDC01", ["cloud"], 1, 1, 15, 0],
"2602" : [["\u2602\uFE0F", "\u2602"], "", "", ["umbrella"], 1, 2, 15, 0],
"2603" : [["\u2603\uFE0F", "\u2603"], "", "", ["snowman"], 1, 3, 15, 0],
"2604" : [["\u2604\uFE0F", "\u2604"], "", "", ["comet"], 1, 4, 15, 0],
"260e" : [["\u260E\uFE0F", "\u260E"], "\uE009", "\uDBB9\uDD23", ["phone", "telephone"], 1, 5, 15, 0],
"2611" : [["\u2611\uFE0F", "\u2611"], "", "\uDBBA\uDF8B", ["ballot_box_with_check"], 1, 6, 15, 0],
"2614" : [["\u2614\uFE0F", "\u2614"], "\uE04B", "\uDBB8\uDC02", ["umbrella_with_rain_drops"], 1, 7, 15, 0],
"2615" : [["\u2615\uFE0F", "\u2615"], "\uE045", "\uDBBA\uDD81", ["coffee"], 1, 8, 15, 0],
"2618" : [["\u2618"], "", "", ["shamrock"], 1, 9, 15, 0],
"261d" : [["\u261D\uFE0F", "\u261D"], "\uE00F", "\uDBBA\uDF98", ["point_up"], 1, 10, 15, 0],
"2620" : [["\u2620\uFE0F", "\u2620"], "", "", ["skull_and_crossbones"], 1, 16, 15, 0],
"2622" : [["\u2622\uFE0F", "\u2622"], "", "", ["radioactive_sign"], 1, 17, 15, 0],
"2623" : [["\u2623\uFE0F", "\u2623"], "", "", ["biohazard_sign"], 1, 18, 15, 0],
"2626" : [["\u2626\uFE0F", "\u2626"], "", "", ["orthodox_cross"], 1, 19, 15, 0],
"262a" : [["\u262A\uFE0F", "\u262A"], "", "", ["star_and_crescent"], 1, 20, 15, 0],
"262e" : [["\u262E\uFE0F", "\u262E"], "", "", ["peace_symbol"], 1, 21, 15, 0],
"262f" : [["\u262F\uFE0F", "\u262F"], "", "", ["yin_yang"], 1, 22, 15, 0],
"2638" : [["\u2638\uFE0F", "\u2638"], "", "", ["wheel_of_dharma"], 1, 23, 15, 0],
"2639" : [["\u2639\uFE0F", "\u2639"], "", "", ["white_frowning_face"], 1, 24, 15, 0],
"263a" : [["\u263A\uFE0F", "\u263A"], "\uE414", "\uDBB8\uDF36", ["relaxed"], 1, 25, 15, 0],
"2648" : [["\u2648\uFE0F", "\u2648"], "\uE23F", "\uDBB8\uDC2B", ["aries"], 1, 26, 15, 0],
"2649" : [["\u2649\uFE0F", "\u2649"], "\uE240", "\uDBB8\uDC2C", ["taurus"], 1, 27, 15, 0],
"264a" : [["\u264A\uFE0F", "\u264A"], "\uE241", "\uDBB8\uDC2D", ["gemini"], 1, 28, 15, 0],
"264b" : [["\u264B\uFE0F", "\u264B"], "\uE242", "\uDBB8\uDC2E", ["cancer"], 1, 29, 15, 0],
"264c" : [["\u264C\uFE0F", "\u264C"], "\uE243", "\uDBB8\uDC2F", ["leo"], 1, 30, 15, 0],
"264d" : [["\u264D\uFE0F", "\u264D"], "\uE244", "\uDBB8\uDC30", ["virgo"], 1, 31, 15, 0],
"264e" : [["\u264E\uFE0F", "\u264E"], "\uE245", "\uDBB8\uDC31", ["libra"], 1, 32, 15, 0],
"264f" : [["\u264F\uFE0F", "\u264F"], "\uE246", "\uDBB8\uDC32", ["scorpius"], 1, 33, 15, 0],
"2650" : [["\u2650\uFE0F", "\u2650"], "\uE247", "\uDBB8\uDC33", ["sagittarius"], 1, 34, 15, 0],
"2651" : [["\u2651\uFE0F", "\u2651"], "\uE248", "\uDBB8\uDC34", ["capricorn"], 1, 35, 15, 0],
"2652" : [["\u2652\uFE0F", "\u2652"], "\uE249", "\uDBB8\uDC35", ["aquarius"], 1, 36, 15, 0],
"2653" : [["\u2653\uFE0F", "\u2653"], "\uE24A", "\uDBB8\uDC36", ["pisces"], 1, 37, 15, 0],
"2660" : [["\u2660\uFE0F", "\u2660"], "\uE20E", "\uDBBA\uDF1B", ["spades"], 1, 38, 15, 0],
"2663" : [["\u2663\uFE0F", "\u2663"], "\uE20F", "\uDBBA\uDF1D", ["clubs"], 1, 39, 15, 0],
"2665" : [["\u2665\uFE0F", "\u2665"], "\uE20C", "\uDBBA\uDF1A", ["hearts"], 1, 40, 15, 0],
"2666" : [["\u2666\uFE0F", "\u2666"], "\uE20D", "\uDBBA\uDF1C", ["diamonds"], 2, 0, 15, 0],
"2668" : [["\u2668\uFE0F", "\u2668"], "\uE123", "\uDBB9\uDFFA", ["hotsprings"], 2, 1, 15, 0],
"267b" : [["\u267B\uFE0F", "\u267B"], "", "\uDBBA\uDF2C", ["recycle"], 2, 2, 15, 0],
"267f" : [["\u267F\uFE0F", "\u267F"], "\uE20A", "\uDBBA\uDF20", ["wheelchair"], 2, 3, 15, 0],
"2692" : [["\u2692"], "", "", ["hammer_and_pick"], 2, 4, 15, 0],
"2693" : [["\u2693\uFE0F", "\u2693"], "\uE202", "\uDBB9\uDCC1", ["anchor"], 2, 5, 15, 0],
"2694" : [["\u2694"], "", "", ["crossed_swords"], 2, 6, 15, 0],
"2696" : [["\u2696"], "", "", ["scales"], 2, 7, 15, 0],
"2697" : [["\u2697"], "", "", ["alembic"], 2, 8, 15, 0],
"2699" : [["\u2699"], "", "", ["gear"], 2, 9, 15, 0],
"269b" : [["\u269B"], "", "", ["atom_symbol"], 2, 10, 15, 0],
"269c" : [["\u269C"], "", "", ["fleur_de_lis"], 2, 11, 15, 0],
"26a0" : [["\u26A0\uFE0F", "\u26A0"], "\uE252", "\uDBBA\uDF23", ["warning"], 2, 12, 15, 0],
"26a1" : [["\u26A1\uFE0F", "\u26A1"], "\uE13D", "\uDBB8\uDC04", ["zap"], 2, 13, 15, 0],
"26aa" : [["\u26AA\uFE0F", "\u26AA"], "\uE219", "\uDBBA\uDF65", ["white_circle"], 2, 14, 15, 0],
"26ab" : [["\u26AB\uFE0F", "\u26AB"], "\uE219", "\uDBBA\uDF66", ["black_circle"], 2, 15, 15, 0],
"26b0" : [["\u26B0"], "", "", ["coffin"], 2, 16, 15, 0],
"26b1" : [["\u26B1"], "", "", ["funeral_urn"], 2, 17, 15, 0],
"26bd" : [["\u26BD\uFE0F", "\u26BD"], "\uE018", "\uDBB9\uDFD4", ["soccer"], 2, 18, 15, 0],
"26be" : [["\u26BE\uFE0F", "\u26BE"], "\uE016", "\uDBB9\uDFD1", ["baseball"], 2, 19, 15, 0],
"26c4" : [["\u26C4\uFE0F", "\u26C4"], "\uE048", "\uDBB8\uDC03", ["snowman_without_snow"], 2, 20, 15, 0],
"26c5" : [["\u26C5\uFE0F", "\u26C5"], "\uE04A\uE049", "\uDBB8\uDC0F", ["partly_sunny"], 2, 21, 15, 0],
"26c8" : [["\u26C8"], "", "", ["thunder_cloud_and_rain"], 2, 22, 15, 0],
"26ce" : [["\u26CE"], "\uE24B", "\uDBB8\uDC37", ["ophiuchus"], 2, 23, 15, 0],
"26cf" : [["\u26CF"], "", "", ["pick"], 2, 24, 15, 0],
"26d1" : [["\u26D1"], "", "", ["helmet_with_white_cross"], 2, 25, 15, 0],
"26d3" : [["\u26D3"], "", "", ["chains"], 2, 26, 15, 0],
"26d4" : [["\u26D4\uFE0F", "\u26D4"], "\uE137", "\uDBBA\uDF26", ["no_entry"], 2, 27, 15, 0],
"26e9" : [["\u26E9"], "", "", ["shinto_shrine"], 2, 28, 15, 0],
"26ea" : [["\u26EA\uFE0F", "\u26EA"], "\uE037", "\uDBB9\uDCBB", ["church"], 2, 29, 15, 0],
"26f0" : [["\u26F0"], "", "", ["mountain"], 2, 30, 15, 0],
"26f1" : [["\u26F1"], "", "", ["umbrella_on_ground"], 2, 31, 15, 0],
"26f2" : [["\u26F2\uFE0F", "\u26F2"], "\uE121", "\uDBB9\uDCBC", ["fountain"], 2, 32, 15, 0],
"26f3" : [["\u26F3\uFE0F", "\u26F3"], "\uE014", "\uDBB9\uDFD2", ["golf"], 2, 33, 15, 0],
"26f4" : [["\u26F4"], "", "", ["ferry"], 2, 34, 15, 0],
"26f5" : [["\u26F5\uFE0F", "\u26F5"], "\uE01C", "\uDBB9\uDFEA", ["boat", "sailboat"], 2, 35, 15, 0],
"26f7" : [["\u26F7"], "", "", ["skier"], 2, 36, 15, 0],
"26f8" : [["\u26F8"], "", "", ["ice_skate"], 2, 37, 15, 0],
"26f9" : [["\u26F9"], "", "", ["person_with_ball"], 2, 38, 15, 0],
"26fa" : [["\u26FA\uFE0F", "\u26FA"], "\uE122", "\uDBB9\uDFFB", ["tent"], 3, 3, 15, 0],
"26fd" : [["\u26FD\uFE0F", "\u26FD"], "\uE03A", "\uDBB9\uDFF5", ["fuelpump"], 3, 4, 15, 0],
"2702" : [["\u2702\uFE0F", "\u2702"], "\uE313", "\uDBB9\uDD3E", ["scissors"], 3, 5, 15, 0],
"2705" : [["\u2705"], "", "\uDBBA\uDF4A", ["white_check_mark"], 3, 6, 15, 0],
"2708" : [["\u2708\uFE0F", "\u2708"], "\uE01D", "\uDBB9\uDFE9", ["airplane"], 3, 7, 15, 0],
"2709" : [["\u2709\uFE0F", "\u2709"], "\uE103", "\uDBB9\uDD29", ["email", "envelope"], 3, 8, 15, 0],
"270a" : [["\u270A"], "\uE010", "\uDBBA\uDF93", ["fist"], 3, 9, 15, 0],
"270b" : [["\u270B"], "\uE012", "\uDBBA\uDF95", ["hand", "raised_hand"], 3, 15, 15, 0],
"270c" : [["\u270C\uFE0F", "\u270C"], "\uE011", "\uDBBA\uDF94", ["v"], 3, 21, 15, 0],
"270d" : [["\u270D\uFE0F", "\u270D"], "", "", ["writing_hand"], 3, 27, 15, 0],
"270f" : [["\u270F\uFE0F", "\u270F"], "\uE301", "\uDBB9\uDD39", ["pencil2"], 3, 33, 15, 0],
"2712" : [["\u2712\uFE0F", "\u2712"], "", "\uDBB9\uDD36", ["black_nib"], 3, 34, 15, 0],
"2714" : [["\u2714\uFE0F", "\u2714"], "", "\uDBBA\uDF49", ["heavy_check_mark"], 3, 35, 15, 0],
"2716" : [["\u2716\uFE0F", "\u2716"], "\uE333", "\uDBBA\uDF53", ["heavy_multiplication_x"], 3, 36, 15, 0],
"271d" : [["\u271D\uFE0F", "\u271D"], "", "", ["latin_cross"], 3, 37, 15, 0],
"2721" : [["\u2721\uFE0F", "\u2721"], "", "", ["star_of_david"], 3, 38, 15, 0],
"2728" : [["\u2728"], "\uE32E", "\uDBBA\uDF60", ["sparkles"], 3, 39, 15, 0],
"2733" : [["\u2733\uFE0F", "\u2733"], "\uE206", "\uDBBA\uDF62", ["eight_spoked_asterisk"], 3, 40, 15, 0],
"2734" : [["\u2734\uFE0F", "\u2734"], "\uE205", "\uDBBA\uDF61", ["eight_pointed_black_star"], 4, 0, 15, 0],
"2744" : [["\u2744\uFE0F", "\u2744"], "", "\uDBB8\uDC0E", ["snowflake"], 4, 1, 15, 0],
"2747" : [["\u2747\uFE0F", "\u2747"], "\uE32E", "\uDBBA\uDF77", ["sparkle"], 4, 2, 15, 0],
"274c" : [["\u274C"], "\uE333", "\uDBBA\uDF45", ["x"], 4, 3, 15, 0],
"274e" : [["\u274E"], "\uE333", "\uDBBA\uDF46", ["negative_squared_cross_mark"], 4, 4, 15, 0],
"2753" : [["\u2753"], "\uE020", "\uDBBA\uDF09", ["question"], 4, 5, 15, 0],
"2754" : [["\u2754"], "\uE336", "\uDBBA\uDF0A", ["grey_question"], 4, 6, 15, 0],
"2755" : [["\u2755"], "\uE337", "\uDBBA\uDF0B", ["grey_exclamation"], 4, 7, 15, 0],
"2757" : [["\u2757\uFE0F", "\u2757"], "\uE021", "\uDBBA\uDF04", ["exclamation", "heavy_exclamation_mark"], 4, 8, 15, 0],
"2763" : [["\u2763\uFE0F", "\u2763"], "", "", ["heavy_heart_exclamation_mark_ornament"], 4, 9, 15, 0],
"2764" : [["\u2764\uFE0F", "\u2764"], "\uE022", "\uDBBA\uDF0C", ["heart"], 4, 10, 15, 0, "<3"],
"2795" : [["\u2795"], "", "\uDBBA\uDF51", ["heavy_plus_sign"], 4, 11, 15, 0],
"2796" : [["\u2796"], "", "\uDBBA\uDF52", ["heavy_minus_sign"], 4, 12, 15, 0],
"2797" : [["\u2797"], "", "\uDBBA\uDF54", ["heavy_division_sign"], 4, 13, 15, 0],
"27a1" : [["\u27A1\uFE0F", "\u27A1"], "\uE234", "\uDBBA\uDEFA", ["arrow_right"], 4, 14, 15, 0],
"27b0" : [["\u27B0"], "", "\uDBBA\uDF08", ["curly_loop"], 4, 15, 15, 0],
"27bf" : [["\u27BF"], "\uE211", "\uDBBA\uDC2B", ["loop"], 4, 16, 15, 0],
"2934" : [["\u2934\uFE0F", "\u2934"], "\uE236", "\uDBBA\uDEF4", ["arrow_heading_up"], 4, 17, 15, 0],
"2935" : [["\u2935\uFE0F", "\u2935"], "\uE238", "\uDBBA\uDEF5", ["arrow_heading_down"], 4, 18, 15, 0],
"2b05" : [["\u2B05\uFE0F", "\u2B05"], "\uE235", "\uDBBA\uDEFB", ["arrow_left"], 4, 19, 15, 0],
"2b06" : [["\u2B06\uFE0F", "\u2B06"], "\uE232", "\uDBBA\uDEF8", ["arrow_up"], 4, 20, 15, 0],
"2b07" : [["\u2B07\uFE0F", "\u2B07"], "\uE233", "\uDBBA\uDEF9", ["arrow_down"], 4, 21, 15, 0],
"2b1b" : [["\u2B1B\uFE0F", "\u2B1B"], "\uE21A", "\uDBBA\uDF6C", ["black_large_square"], 4, 22, 15, 0],
"2b1c" : [["\u2B1C\uFE0F", "\u2B1C"], "\uE21B", "\uDBBA\uDF6B", ["white_large_square"], 4, 23, 15, 0],
"2b50" : [["\u2B50\uFE0F", "\u2B50"], "\uE32F", "\uDBBA\uDF68", ["star"], 4, 24, 15, 0],
"2b55" : [["\u2B55\uFE0F", "\u2B55"], "\uE332", "\uDBBA\uDF44", ["o"], 4, 25, 15, 0],
"3030" : [["\u3030\uFE0F", "\u3030"], "", "\uDBBA\uDF07", ["wavy_dash"], 4, 26, 15, 0],
"303d" : [["\u303D\uFE0F", "\u303D"], "\uE12C", "\uDBBA\uDC1B", ["part_alternation_mark"], 4, 27, 15, 0],
"3297" : [["\u3297\uFE0F", "\u3297"], "\uE30D", "\uDBBA\uDF43", ["congratulations"], 4, 28, 15, 0],
"3299" : [["\u3299\uFE0F", "\u3299"], "\uE315", "\uDBBA\uDF2B", ["secret"], 4, 29, 15, 0],
"1f004" : [["\uD83C\uDC04\uFE0F", "\uD83C\uDC04"], "\uE12D", "\uDBBA\uDC0B", ["mahjong"], 4, 30, 15, 0],
"1f0cf" : [["\uD83C\uDCCF"], "", "\uDBBA\uDC12", ["black_joker"], 4, 31, 15, 0],
"1f170" : [["\uD83C\uDD70\uFE0F", "\uD83C\uDD70"], "\uE532", "\uDBB9\uDD0B", ["a"], 4, 32, 15, 0],
"1f171" : [["\uD83C\uDD71\uFE0F", "\uD83C\uDD71"], "\uE533", "\uDBB9\uDD0C", ["b"], 4, 33, 15, 0],
"1f17e" : [["\uD83C\uDD7E\uFE0F", "\uD83C\uDD7E"], "\uE535", "\uDBB9\uDD0E", ["o2"], 4, 34, 15, 0],
"1f17f" : [["\uD83C\uDD7F\uFE0F", "\uD83C\uDD7F"], "\uE14F", "\uDBB9\uDFF6", ["parking"], 4, 35, 15, 0],
"1f18e" : [["\uD83C\uDD8E"], "\uE534", "\uDBB9\uDD0D", ["ab"], 4, 36, 15, 0],
"1f191" : [["\uD83C\uDD91"], "", "\uDBBA\uDF84", ["cl"], 4, 37, 15, 0],
"1f192" : [["\uD83C\uDD92"], "\uE214", "\uDBBA\uDF38", ["cool"], 4, 38, 15, 0],
"1f193" : [["\uD83C\uDD93"], "", "\uDBBA\uDF21", ["free"], 4, 39, 15, 0],
"1f194" : [["\uD83C\uDD94"], "\uE229", "\uDBBA\uDF81", ["id"], 4, 40, 15, 0],
"1f195" : [["\uD83C\uDD95"], "\uE212", "\uDBBA\uDF36", ["new"], 5, 0, 15, 0],
"1f196" : [["\uD83C\uDD96"], "", "\uDBBA\uDF28", ["ng"], 5, 1, 15, 0],
"1f197" : [["\uD83C\uDD97"], "\uE24D", "\uDBBA\uDF27", ["ok"], 5, 2, 15, 0],
"1f198" : [["\uD83C\uDD98"], "", "\uDBBA\uDF4F", ["sos"], 5, 3, 15, 0],
"1f199" : [["\uD83C\uDD99"], "\uE213", "\uDBBA\uDF37", ["up"], 5, 4, 15, 0],
"1f19a" : [["\uD83C\uDD9A"], "\uE12E", "\uDBBA\uDF32", ["vs"], 5, 5, 15, 0],
"1f201" : [["\uD83C\uDE01"], "\uE203", "\uDBBA\uDF24", ["koko"], 5, 6, 15, 0],
"1f202" : [["\uD83C\uDE02\uFE0F", "\uD83C\uDE02"], "\uE228", "\uDBBA\uDF3F", ["sa"], 5, 7, 15, 0],
"1f21a" : [["\uD83C\uDE1A\uFE0F", "\uD83C\uDE1A"], "\uE216", "\uDBBA\uDF3A", ["u7121"], 5, 8, 15, 0],
"1f22f" : [["\uD83C\uDE2F\uFE0F", "\uD83C\uDE2F"], "\uE22C", "\uDBBA\uDF40", ["u6307"], 5, 9, 15, 0],
"1f232" : [["\uD83C\uDE32"], "", "\uDBBA\uDF2E", ["u7981"], 5, 10, 15, 0],
"1f233" : [["\uD83C\uDE33"], "\uE22B", "\uDBBA\uDF2F", ["u7a7a"], 5, 11, 15, 0],
"1f234" : [["\uD83C\uDE34"], "", "\uDBBA\uDF30", ["u5408"], 5, 12, 15, 0],
"1f235" : [["\uD83C\uDE35"], "\uE22A", "\uDBBA\uDF31", ["u6e80"], 5, 13, 15, 0],
"1f236" : [["\uD83C\uDE36"], "\uE215", "\uDBBA\uDF39", ["u6709"], 5, 14, 15, 0],
"1f237" : [["\uD83C\uDE37\uFE0F", "\uD83C\uDE37"], "\uE217", "\uDBBA\uDF3B", ["u6708"], 5, 15, 15, 0],
"1f238" : [["\uD83C\uDE38"], "\uE218", "\uDBBA\uDF3C", ["u7533"], 5, 16, 15, 0],
"1f239" : [["\uD83C\uDE39"], "\uE227", "\uDBBA\uDF3E", ["u5272"], 5, 17, 15, 0],
"1f23a" : [["\uD83C\uDE3A"], "\uE22D", "\uDBBA\uDF41", ["u55b6"], 5, 18, 15, 0],
"1f250" : [["\uD83C\uDE50"], "\uE226", "\uDBBA\uDF3D", ["ideograph_advantage"], 5, 19, 15, 0],
"1f251" : [["\uD83C\uDE51"], "", "\uDBBA\uDF50", ["accept"], 5, 20, 15, 0],
"1f300" : [["\uD83C\uDF00"], "\uE443", "\uDBB8\uDC05", ["cyclone"], 5, 21, 15, 0],
"1f301" : [["\uD83C\uDF01"], "", "\uDBB8\uDC06", ["foggy"], 5, 22, 15, 0],
"1f302" : [["\uD83C\uDF02"], "\uE43C", "\uDBB8\uDC07", ["closed_umbrella"], 5, 23, 15, 0],
"1f303" : [["\uD83C\uDF03"], "\uE44B", "\uDBB8\uDC08", ["night_with_stars"], 5, 24, 15, 0],
"1f304" : [["\uD83C\uDF04"], "\uE04D", "\uDBB8\uDC09", ["sunrise_over_mountains"], 5, 25, 15, 0],
"1f305" : [["\uD83C\uDF05"], "\uE449", "\uDBB8\uDC0A", ["sunrise"], 5, 26, 15, 0],
"1f306" : [["\uD83C\uDF06"], "\uE146", "\uDBB8\uDC0B", ["city_sunset"], 5, 27, 15, 0],
"1f307" : [["\uD83C\uDF07"], "\uE44A", "\uDBB8\uDC0C", ["city_sunrise"], 5, 28, 15, 0],
"1f308" : [["\uD83C\uDF08"], "\uE44C", "\uDBB8\uDC0D", ["rainbow"], 5, 29, 15, 0],
"1f309" : [["\uD83C\uDF09"], "\uE44B", "\uDBB8\uDC10", ["bridge_at_night"], 5, 30, 15, 0],
"1f30a" : [["\uD83C\uDF0A"], "\uE43E", "\uDBB8\uDC38", ["ocean"], 5, 31, 15, 0],
"1f30b" : [["\uD83C\uDF0B"], "", "\uDBB8\uDC3A", ["volcano"], 5, 32, 15, 0],
"1f30c" : [["\uD83C\uDF0C"], "\uE44B", "\uDBB8\uDC3B", ["milky_way"], 5, 33, 15, 0],
"1f30d" : [["\uD83C\uDF0D"], "", "", ["earth_africa"], 5, 34, 15, 0],
"1f30e" : [["\uD83C\uDF0E"], "", "", ["earth_americas"], 5, 35, 15, 0],
"1f30f" : [["\uD83C\uDF0F"], "", "\uDBB8\uDC39", ["earth_asia"], 5, 36, 15, 0],
"1f310" : [["\uD83C\uDF10"], "", "", ["globe_with_meridians"], 5, 37, 15, 0],
"1f311" : [["\uD83C\uDF11"], "", "\uDBB8\uDC11", ["new_moon"], 5, 38, 15, 0],
"1f312" : [["\uD83C\uDF12"], "", "", ["waxing_crescent_moon"], 5, 39, 15, 0],
"1f313" : [["\uD83C\uDF13"], "\uE04C", "\uDBB8\uDC13", ["first_quarter_moon"], 5, 40, 15, 0],
"1f314" : [["\uD83C\uDF14"], "\uE04C", "\uDBB8\uDC12", ["moon", "waxing_gibbous_moon"], 6, 0, 15, 0],
"1f315" : [["\uD83C\uDF15"], "", "\uDBB8\uDC15", ["full_moon"], 6, 1, 15, 0],
"1f316" : [["\uD83C\uDF16"], "", "", ["waning_gibbous_moon"], 6, 2, 15, 0],
"1f317" : [["\uD83C\uDF17"], "", "", ["last_quarter_moon"], 6, 3, 15, 0],
"1f318" : [["\uD83C\uDF18"], "", "", ["waning_crescent_moon"], 6, 4, 15, 0],
"1f319" : [["\uD83C\uDF19"], "\uE04C", "\uDBB8\uDC14", ["crescent_moon"], 6, 5, 15, 0],
"1f31a" : [["\uD83C\uDF1A"], "", "", ["new_moon_with_face"], 6, 6, 15, 0],
"1f31b" : [["\uD83C\uDF1B"], "\uE04C", "\uDBB8\uDC16", ["first_quarter_moon_with_face"], 6, 7, 15, 0],
"1f31c" : [["\uD83C\uDF1C"], "", "", ["last_quarter_moon_with_face"], 6, 8, 15, 0],
"1f31d" : [["\uD83C\uDF1D"], "", "", ["full_moon_with_face"], 6, 9, 15, 0],
"1f31e" : [["\uD83C\uDF1E"], "", "", ["sun_with_face"], 6, 10, 15, 0],
"1f31f" : [["\uD83C\uDF1F"], "\uE335", "\uDBBA\uDF69", ["star2"], 6, 11, 15, 0],
"1f320" : [["\uD83C\uDF20"], "", "\uDBBA\uDF6A", ["stars"], 6, 12, 15, 0],
"1f321" : [["\uD83C\uDF21"], "", "", ["thermometer"], 6, 13, 15, 0],
"1f324" : [["\uD83C\uDF24"], "", "", ["mostly_sunny", "sun_small_cloud"], 6, 14, 15, 0],
"1f325" : [["\uD83C\uDF25"], "", "", ["barely_sunny", "sun_behind_cloud"], 6, 15, 15, 0],
"1f326" : [["\uD83C\uDF26"], "", "", ["partly_sunny_rain", "sun_behind_rain_cloud"], 6, 16, 15, 0],
"1f327" : [["\uD83C\uDF27"], "", "", ["rain_cloud"], 6, 17, 15, 0],
"1f328" : [["\uD83C\uDF28"], "", "", ["snow_cloud"], 6, 18, 15, 0],
"1f329" : [["\uD83C\uDF29"], "", "", ["lightning", "lightning_cloud"], 6, 19, 15, 0],
"1f32a" : [["\uD83C\uDF2A"], "", "", ["tornado", "tornado_cloud"], 6, 20, 15, 0],
"1f32b" : [["\uD83C\uDF2B"], "", "", ["fog"], 6, 21, 15, 0],
"1f32c" : [["\uD83C\uDF2C"], "", "", ["wind_blowing_face"], 6, 22, 15, 0],
"1f32d" : [["\uD83C\uDF2D"], "", "", ["hotdog"], 6, 23, 15, 0],
"1f32e" : [["\uD83C\uDF2E"], "", "", ["taco"], 6, 24, 15, 0],
"1f32f" : [["\uD83C\uDF2F"], "", "", ["burrito"], 6, 25, 15, 0],
"1f330" : [["\uD83C\uDF30"], "", "\uDBB8\uDC4C", ["chestnut"], 6, 26, 15, 0],
"1f331" : [["\uD83C\uDF31"], "\uE110", "\uDBB8\uDC3E", ["seedling"], 6, 27, 15, 0],
"1f332" : [["\uD83C\uDF32"], "", "", ["evergreen_tree"], 6, 28, 15, 0],
"1f333" : [["\uD83C\uDF33"], "", "", ["deciduous_tree"], 6, 29, 15, 0],
"1f334" : [["\uD83C\uDF34"], "\uE307", "\uDBB8\uDC47", ["palm_tree"], 6, 30, 15, 0],
"1f335" : [["\uD83C\uDF35"], "\uE308", "\uDBB8\uDC48", ["cactus"], 6, 31, 15, 0],
"1f336" : [["\uD83C\uDF36"], "", "", ["hot_pepper"], 6, 32, 15, 0],
"1f337" : [["\uD83C\uDF37"], "\uE304", "\uDBB8\uDC3D", ["tulip"], 6, 33, 15, 0],
"1f338" : [["\uD83C\uDF38"], "\uE030", "\uDBB8\uDC40", ["cherry_blossom"], 6, 34, 15, 0],
"1f339" : [["\uD83C\uDF39"], "\uE032", "\uDBB8\uDC41", ["rose"], 6, 35, 15, 0],
"1f33a" : [["\uD83C\uDF3A"], "\uE303", "\uDBB8\uDC45", ["hibiscus"], 6, 36, 15, 0],
"1f33b" : [["\uD83C\uDF3B"], "\uE305", "\uDBB8\uDC46", ["sunflower"], 6, 37, 15, 0],
"1f33c"