diff options
author | Callum Linden <113564339+callumlinden@users.noreply.github.com> | 2023-03-07 11:46:27 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-07 11:46:27 -0800 |
commit | 6b0b751a207737c06544ac4de13174661b1dcb35 (patch) | |
tree | 95f472eabe4407cca653af3a867808f32402551c /indra/newview | |
parent | 98f0656f5c21a9469984cc8c916a1310d2fc2849 (diff) | |
parent | 4072fd84fb201e37827a6a98264fadea18fd30e4 (diff) |
Merge pull request #83 from KittyBarnett/DRTVWR-489-emoji
Drtvwr 489 emoji
Diffstat (limited to 'indra/newview')
31 files changed, 11527 insertions, 120 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 837efee7b1..871db7dfbb 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -18,6 +18,7 @@ include(DragDrop) include(EXPAT) include(FMODSTUDIO) include(Hunspell) +include(ICU4C) include(JPEGEncoderBasic) include(JsonCpp) include(LLAppearance) @@ -448,6 +449,7 @@ set(viewer_SOURCE_FILES llpaneleditsky.cpp llpaneleditwater.cpp llpaneleditwearable.cpp + llpanelemojicomplete.cpp llpanelenvironment.cpp llpanelexperiencelisteditor.cpp llpanelexperiencelog.cpp @@ -1079,6 +1081,7 @@ set(viewer_HEADER_FILES llpaneleditsky.h llpaneleditwater.h llpaneleditwearable.h + llpanelemojicomplete.h llpanelenvironment.h llpanelexperiencelisteditor.h llpanelexperiencelog.h @@ -2043,6 +2046,7 @@ target_link_libraries(${VIEWER_BINARY_NAME} ${NDOF_LIBRARY} ${NVAPI_LIBRARY} ${HUNSPELL_LIBRARY} + ${ICU4C_LIBRARY} ${viewer_LIBRARIES} ${BOOST_PROGRAM_OPTIONS_LIBRARY} ${BOOST_REGEX_LIBRARY} @@ -2077,6 +2081,12 @@ endif (USE_BUGSPLAT) set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "Path to artwork files.") +message("Copying fonts") +file(GLOB FONT_FILE_GLOB_LIST + "${AUTOBUILD_INSTALL_DIR}/fonts/*" +) +file(COPY ${FONT_FILE_GLOB_LIST} DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/fonts") + if (LINUX) set(product SecondLife-${ARCH}-${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}) diff --git a/indra/newview/fonts/DejaVu-license.txt b/indra/newview/fonts/DejaVu-license.txt deleted file mode 100644 index 254e2cc42a..0000000000 --- a/indra/newview/fonts/DejaVu-license.txt +++ /dev/null @@ -1,99 +0,0 @@ -Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. -Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below) - -Bitstream Vera Fonts Copyright ------------------------------- - -Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is -a trademark of Bitstream, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of the fonts accompanying this license ("Fonts") and associated -documentation files (the "Font Software"), to reproduce and distribute the -Font Software, including without limitation the rights to use, copy, merge, -publish, distribute, and/or sell copies of the Font Software, and to permit -persons to whom the Font Software is furnished to do so, subject to the -following conditions: - -The above copyright and trademark notices and this permission notice shall -be included in all copies of one or more of the Font Software typefaces. - -The Font Software may be modified, altered, or added to, and in particular -the designs of glyphs or characters in the Fonts may be modified and -additional glyphs or characters may be added to the Fonts, only if the fonts -are renamed to names not containing either the words "Bitstream" or the word -"Vera". - -This License becomes null and void to the extent applicable to Fonts or Font -Software that has been modified and is distributed under the "Bitstream -Vera" names. - -The Font Software may be sold as part of a larger software package but no -copy of one or more of the Font Software typefaces may be sold by itself. - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, -TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME -FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING -ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF -THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE -FONT SOFTWARE. - -Except as contained in this notice, the names of Gnome, the Gnome -Foundation, and Bitstream Inc., shall not be used in advertising or -otherwise to promote the sale, use or other dealings in this Font Software -without prior written authorization from the Gnome Foundation or Bitstream -Inc., respectively. For further information, contact: fonts at gnome dot -org. - -Arev Fonts Copyright ------------------------------- - -Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the fonts accompanying this license ("Fonts") and -associated documentation files (the "Font Software"), to reproduce -and distribute the modifications to the Bitstream Vera Font Software, -including without limitation the rights to use, copy, merge, publish, -distribute, and/or sell copies of the Font Software, and to permit -persons to whom the Font Software is furnished to do so, subject to -the following conditions: - -The above copyright and trademark notices and this permission notice -shall be included in all copies of one or more of the Font Software -typefaces. - -The Font Software may be modified, altered, or added to, and in -particular the designs of glyphs or characters in the Fonts may be -modified and additional glyphs or characters may be added to the -Fonts, only if the fonts are renamed to names not containing either -the words "Tavmjong Bah" or the word "Arev". - -This License becomes null and void to the extent applicable to Fonts -or Font Software that has been modified and is distributed under the -"Tavmjong Bah Arev" names. - -The Font Software may be sold as part of a larger software package but -no copy of one or more of the Font Software typefaces may be sold by -itself. - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL -TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. - -Except as contained in this notice, the name of Tavmjong Bah shall not -be used in advertising or otherwise to promote the sale, use or other -dealings in this Font Software without prior written authorization -from Tavmjong Bah. For further information, contact: tavmjong @ free -. fr. - -$Id: LICENSE 2133 2007-11-28 02:46:28Z lechimp $ diff --git a/indra/newview/fonts/DejaVuSans-Bold.ttf b/indra/newview/fonts/DejaVuSans-Bold.ttf Binary files differdeleted file mode 100644 index ec1a2ebaf2..0000000000 --- a/indra/newview/fonts/DejaVuSans-Bold.ttf +++ /dev/null diff --git a/indra/newview/fonts/DejaVuSans-BoldOblique.ttf b/indra/newview/fonts/DejaVuSans-BoldOblique.ttf Binary files differdeleted file mode 100644 index 1a5576460d..0000000000 --- a/indra/newview/fonts/DejaVuSans-BoldOblique.ttf +++ /dev/null diff --git a/indra/newview/fonts/DejaVuSans-Oblique.ttf b/indra/newview/fonts/DejaVuSans-Oblique.ttf Binary files differdeleted file mode 100644 index becc549927..0000000000 --- a/indra/newview/fonts/DejaVuSans-Oblique.ttf +++ /dev/null diff --git a/indra/newview/fonts/DejaVuSans.ttf b/indra/newview/fonts/DejaVuSans.ttf Binary files differdeleted file mode 100644 index c1b19d8705..0000000000 --- a/indra/newview/fonts/DejaVuSans.ttf +++ /dev/null diff --git a/indra/newview/fonts/DejaVuSansMono.ttf b/indra/newview/fonts/DejaVuSansMono.ttf Binary files differdeleted file mode 100644 index 6bc854ddae..0000000000 --- a/indra/newview/fonts/DejaVuSansMono.ttf +++ /dev/null diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi Binary files differindex 7922d9df52..0985663041 100755 --- a/indra/newview/installers/windows/lang_zh.nsi +++ b/indra/newview/installers/windows/lang_zh.nsi diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 9a608fba8e..f4fa449ca2 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -1096,6 +1096,8 @@ LLChatHistory::LLChatHistory(const LLChatHistory::Params& p) editor_params.enabled = false; // read only editor_params.show_context_menu = "true"; editor_params.trusted_content = false; + editor_params.text_valign = LLFontGL::VAlign::VCENTER; + editor_params.use_color = true; mEditor = LLUICtrlFactory::create<LLTextEditor>(editor_params, this); mEditor->setIsFriendCallback(LLAvatarActions::isFriend); mEditor->setIsObjectBlockedCallback(boost::bind(&LLMuteList::isMuted, LLMuteList::getInstance(), _1, _2, 0)); diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index c4c88d304c..e6b6b10408 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -78,7 +78,9 @@ static S32 cube_channel = -1; static S32 diffuse_channel = -1; static S32 bump_channel = -1; -#define LL_BUMPLIST_MULTITHREADED 0 // TODO -- figure out why this doesn't work +// Enabled after changing LLViewerTexture::mNeedsCreateTexture to an +// LLAtomicBool; this should work just fine, now. HB +#define LL_BUMPLIST_MULTITHREADED 1 // static diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 3395777aab..2d332f75f5 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -88,7 +88,7 @@ public: mStyle->getShadowType(), end - start, draw_rect.getWidth(), &right_x, - mEditor.getUseEllipses()); + mEditor.getUseEllipses(), mEditor.getUseColor()); return right_x; } /*virtual*/ bool canEdit() const { return false; } diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index e67c79a3a0..9d16faf0b5 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -1601,7 +1601,7 @@ void LLOverlapPanel::draw() LLUI::translate(5,getRect().getHeight()-20); // translate to top-5,left-5 LLView::sDrawPreviewHighlights = FALSE; LLFontGL::getFontSansSerifSmall()->renderUTF8(current_selection_text, 0, 0, 0, text_color, - LLFontGL::LEFT, LLFontGL::BASELINE, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE); + LLFontGL::LEFT, LLFontGL::BASELINE, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, /*use_ellipses*/FALSE, /*use_color*/FALSE); } else { @@ -1619,7 +1619,7 @@ void LLOverlapPanel::draw() std::string current_selection = std::string(current_selection_text + LLView::sPreviewClickedElement->getName() + " (no elements overlap)"); S32 text_width = LLFontGL::getFontSansSerifSmall()->getWidth(current_selection) + 10; LLFontGL::getFontSansSerifSmall()->renderUTF8(current_selection, 0, 0, 0, text_color, - LLFontGL::LEFT, LLFontGL::BASELINE, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE); + LLFontGL::LEFT, LLFontGL::BASELINE, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, /*use_ellipses*/FALSE, /*use_color*/FALSE); // widen panel enough to fit this text LLRect rect = getRect(); setRect(LLRect(rect.mLeft,rect.mTop,rect.getWidth() < text_width ? rect.mLeft + text_width : rect.mRight,rect.mTop)); @@ -1685,7 +1685,7 @@ void LLOverlapPanel::draw() // draw currently-selected element at top of overlappers LLUI::translate(0,-mSpacing); LLFontGL::getFontSansSerifSmall()->renderUTF8(current_selection_text + LLView::sPreviewClickedElement->getName(), 0, 0, 0, text_color, - LLFontGL::LEFT, LLFontGL::BASELINE, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE); + LLFontGL::LEFT, LLFontGL::BASELINE, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, /*use_ellipses*/FALSE, /*use_color*/FALSE); LLUI::translate(0,-mSpacing-LLView::sPreviewClickedElement->getRect().getHeight()); // skip spacing distance + height LLView::sPreviewClickedElement->draw(); @@ -1700,7 +1700,7 @@ void LLOverlapPanel::draw() // draw name LLUI::translate(0,-mSpacing); LLFontGL::getFontSansSerifSmall()->renderUTF8(overlapper_text + viewp->getName(), 0, 0, 0, text_color, - LLFontGL::LEFT, LLFontGL::BASELINE, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE); + LLFontGL::LEFT, LLFontGL::BASELINE, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, /*use_ellipses*/FALSE, /*use_color*/FALSE); // draw element LLUI::translate(0,-mSpacing-viewp->getRect().getHeight()); // skip spacing distance + height diff --git a/indra/newview/llhudrender.cpp b/indra/newview/llhudrender.cpp index dff310ecf9..c1f17c9d33 100644 --- a/indra/newview/llhudrender.cpp +++ b/indra/newview/llhudrender.cpp @@ -138,7 +138,7 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent, LLUI::translate((F32) winX*1.0f/LLFontGL::sScaleX, (F32) winY*1.0f/(LLFontGL::sScaleY), -(((F32) winZ*2.f)-1.f)); F32 right_x; - font.render(wstr, 0, 0, 1, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, wstr.length(), 1000, &right_x); + font.render(wstr, 0, 0, 1, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, wstr.length(), 1000, &right_x, /*use_ellipses*/false, /*use_color*/true); LLUI::popMatrix(); gGL.popMatrix(); diff --git a/indra/newview/llpanelemojicomplete.cpp b/indra/newview/llpanelemojicomplete.cpp new file mode 100644 index 0000000000..8b89e3aa14 --- /dev/null +++ b/indra/newview/llpanelemojicomplete.cpp @@ -0,0 +1,321 @@ +/** +* @file llpanelemojicomplete.h +* @brief Header file for LLPanelEmojiComplete +* +* $LicenseInfo:firstyear=2012&license=lgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2011, Linden Research, Inc. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; +* version 2.1 of the License only. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +* +* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA +* $/LicenseInfo$ +*/ + +#include "llviewerprecompiledheaders.h" + +#include "llemojidictionary.h" +#include "llemojihelper.h" +#include "llpanelemojicomplete.h" +#include "lluictrlfactory.h" + +constexpr U32 MIN_MOUSE_MOVE_DELTA = 4; + +// ============================================================================ +// LLPanelEmojiComplete +// + +static LLDefaultChildRegistry::Register<LLPanelEmojiComplete> r("emoji_complete"); + +LLPanelEmojiComplete::Params::Params() + : autosize("autosize") + , max_emoji("max_emoji") + , padding("padding") + , selected_image("selected_image") +{ +} + +LLPanelEmojiComplete::LLPanelEmojiComplete(const LLPanelEmojiComplete::Params& p) + : LLUICtrl(p) + , mAutoSize(p.autosize) + , mMaxVisible(p.max_emoji) + , mPadding(p.padding) + , mSelectedImage(p.selected_image) +{ + setFont(p.font); +} + +LLPanelEmojiComplete::~LLPanelEmojiComplete() +{ +} + +void LLPanelEmojiComplete::draw() +{ + if (!mEmojis.empty()) + { + const S32 centerY = mRenderRect.getCenterY(); + const size_t firstVisibleIdx = mScrollPos, lastVisibleIdx = llmin(mScrollPos + mVisibleEmojis, mEmojis.size()) - 1; + + if (mCurSelected >= firstVisibleIdx && mCurSelected <= lastVisibleIdx) + { + const S32 emoji_left = mRenderRect.mLeft + (mCurSelected - firstVisibleIdx) * mEmojiWidth; + const S32 emoji_height = mFont->getLineHeight() + mPadding; + mSelectedImage->draw(emoji_left, centerY - emoji_height / 2, mEmojiWidth, emoji_height); + } + + U32 left = mRenderRect.mLeft + mPadding; + for (U32 curIdx = firstVisibleIdx; curIdx <= lastVisibleIdx; curIdx++) + { + mFont->render( + mEmojis, curIdx, + left, centerY, + LLColor4::white, LLFontGL::LEFT, LLFontGL::VCENTER, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW_SOFT, + 1, S32_MAX, nullptr, false, true); + left += mEmojiWidth; + } + } +} + +BOOL LLPanelEmojiComplete::handleHover(S32 x, S32 y, MASK mask) +{ + LLVector2 curHover(x, y); + if ((mLastHover - curHover).lengthSquared() > MIN_MOUSE_MOVE_DELTA) + { + mCurSelected = posToIndex(x, y); + mLastHover = curHover; + } + + return TRUE; +} + +BOOL LLPanelEmojiComplete::handleKey(KEY key, MASK mask, BOOL called_from_parent) +{ + bool handled = false; + if (MASK_NONE == mask) + { + switch (key) + { + case KEY_LEFT: + case KEY_UP: + selectPrevious(); + handled = true; + break; + case KEY_RIGHT: + case KEY_DOWN: + selectNext(); + handled = true; + break; + case KEY_RETURN: + if (!mEmojis.empty()) + { + onCommit(); + handled = true; + } + break; + } + } + + if (handled) + { + return TRUE; + } + return LLUICtrl::handleKey(key, mask, called_from_parent); +} + +BOOL LLPanelEmojiComplete::handleMouseDown(S32 x, S32 y, MASK mask) +{ + mCurSelected = posToIndex(x, y); + mLastHover = LLVector2(x, y); + + return TRUE; +} + +BOOL LLPanelEmojiComplete::handleMouseUp(S32 x, S32 y, MASK mask) +{ + mCurSelected = posToIndex(x, y); + onCommit(); + + return TRUE; +} + +void LLPanelEmojiComplete::onCommit() +{ + if (npos != mCurSelected) + { + LLWString wstr; + wstr.push_back(mEmojis.at(mCurSelected)); + setValue(wstring_to_utf8str(wstr)); + LLUICtrl::onCommit(); + } +} + +void LLPanelEmojiComplete::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + LLUICtrl::reshape(width, height, called_from_parent); + updateConstraints(); +} + +void LLPanelEmojiComplete::setEmojiHint(const std::string& hint) +{ + llwchar curEmoji = (mCurSelected < mEmojis.size()) ? mEmojis.at(mCurSelected) : 0; + + mEmojis = LLEmojiDictionary::instance().findMatchingEmojis(hint); + size_t curEmojiIdx = (curEmoji) ? mEmojis.find(curEmoji) : std::string::npos; + mCurSelected = (std::string::npos != curEmojiIdx) ? curEmojiIdx : 0; + + if (mAutoSize) + { + mVisibleEmojis = std::min(mEmojis.size(), mMaxVisible); + reshape(mVisibleEmojis * mEmojiWidth, getRect().getHeight(), false); + } + else + { + updateConstraints(); + } + + mScrollPos = llmin(mScrollPos, mEmojis.size()); +} + +size_t LLPanelEmojiComplete::posToIndex(S32 x, S32 y) const +{ + if (mRenderRect.pointInRect(x, y)) + { + return mScrollPos + llmin((size_t)x / mEmojiWidth, mEmojis.size() - 1); + } + return npos; +} + +void LLPanelEmojiComplete::select(size_t emoji_idx) +{ + mCurSelected = llclamp<size_t>(emoji_idx, 0, mEmojis.size()); + updateScrollPos(); +} + +void LLPanelEmojiComplete::selectNext() +{ + select(mCurSelected + 1 < mEmojis.size() ? mCurSelected + 1 : 0); +} + +void LLPanelEmojiComplete::selectPrevious() +{ + select(mCurSelected - 1 >= 0 ? mCurSelected - 1 : mEmojis.size() - 1); +} + +void LLPanelEmojiComplete::setFont(const LLFontGL* fontp) +{ + mFont = fontp; + updateConstraints(); +} + +void LLPanelEmojiComplete::updateConstraints() +{ + const S32 ctrlWidth = getLocalRect().getWidth(); + + mEmojiWidth = mFont->getWidthF32(u8"\U0001F431") + mPadding * 2; + mVisibleEmojis = ctrlWidth / mEmojiWidth; + mRenderRect = getLocalRect().stretch((ctrlWidth - mVisibleEmojis * mEmojiWidth) / -2, 0); + + updateScrollPos(); +} + +void LLPanelEmojiComplete::updateScrollPos() +{ + const size_t cntEmoji = mEmojis.size(); + if (0 == cntEmoji || cntEmoji < mVisibleEmojis || 0 == mCurSelected) + { + mScrollPos = 0; + } + else if (cntEmoji - 1 == mCurSelected) + { + mScrollPos = mCurSelected - mVisibleEmojis + 1; + } + else + { + mScrollPos = mCurSelected - ((float)mCurSelected / (cntEmoji - 2) * (mVisibleEmojis - 2)); + } +} + +// ============================================================================ +// LLFloaterEmojiComplete +// + +LLFloaterEmojiComplete::LLFloaterEmojiComplete(const LLSD& sdKey) + : LLFloater(sdKey) +{ + // This floater should hover on top of our dependent (with the dependent having the focus) + setFocusStealsFrontmost(false); + setAutoFocus(false); + setBackgroundVisible(false); + setIsChrome(true); +} + +BOOL LLFloaterEmojiComplete::handleKey(KEY key, MASK mask, BOOL called_from_parent) +{ + bool handled = false; + if (MASK_NONE == mask) + { + switch (key) + { + case KEY_ESCAPE: + LLEmojiHelper::instance().hideHelper(); + handled = true; + break; + } + + } + + if (handled) + return TRUE; + return LLFloater::handleKey(key, mask, called_from_parent); +} + +void LLFloaterEmojiComplete::onOpen(const LLSD& key) +{ + mEmojiCtrl->setEmojiHint(key["hint"].asString()); + if (0 == mEmojiCtrl->getEmojiCount()) + { + LLEmojiHelper::instance().hideHelper(); + } +} + +BOOL LLFloaterEmojiComplete::postBuild() +{ + mEmojiCtrl = findChild<LLPanelEmojiComplete>("emoji_complete_ctrl"); + mEmojiCtrl->setCommitCallback( + std::bind([&](const LLSD& sdValue) + { + setValue(sdValue); + onCommit(); + }, std::placeholders::_2)); + mEmojiCtrlHorz = getRect().getWidth() - mEmojiCtrl->getRect().getWidth(); + + return LLFloater::postBuild(); +} + +void LLFloaterEmojiComplete::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + if (!called_from_parent) + { + LLRect rctFloater = getRect(), rctCtrl = mEmojiCtrl->getRect(); + rctFloater.mRight = rctFloater.mLeft + rctCtrl.getWidth() + mEmojiCtrlHorz; + setRect(rctFloater); + + return; + } + + LLFloater::reshape(width, height, called_from_parent); +} + +// ============================================================================ diff --git a/indra/newview/llpanelemojicomplete.h b/indra/newview/llpanelemojicomplete.h new file mode 100644 index 0000000000..aa0f806525 --- /dev/null +++ b/indra/newview/llpanelemojicomplete.h @@ -0,0 +1,115 @@ +/** +* @file llpanelemojicomplete.h +* @brief Header file for LLPanelEmojiComplete +* +* $LicenseInfo:firstyear=2014&license=viewerlgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2014, Linden Research, Inc. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; +* version 2.1 of the License only. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +* +* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA +* $/LicenseInfo$ +*/ + +#pragma once + +#include "llfloater.h" +#include "lluictrl.h" + +// ============================================================================ +// LLPanelEmojiComplete +// + +class LLPanelEmojiComplete : public LLUICtrl +{ + friend class LLUICtrlFactory; +public: + struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> + { + Optional<bool> autosize; + Optional<S32> max_emoji, + padding; + + Optional<LLUIImage*> selected_image; + + Params(); + }; + +protected: + LLPanelEmojiComplete(const LLPanelEmojiComplete::Params&); +public: + virtual ~LLPanelEmojiComplete(); + + void draw() override; + BOOL handleHover(S32 x, S32 y, MASK mask) override; + BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent) override; + BOOL handleMouseDown(S32 x, S32 y, MASK mask) override; + BOOL handleMouseUp(S32 x, S32 y, MASK mask) override; + void onCommit() override; + void reshape(S32 width, S32 height, BOOL called_from_parent) override; + +public: + size_t getEmojiCount() const { return mEmojis.size(); } + void setEmojiHint(const std::string& hint); +protected: + size_t posToIndex(S32 x, S32 y) const; + void select(size_t emoji_idx); + void selectNext(); + void selectPrevious(); + void setFont(const LLFontGL* fontp); + void updateConstraints(); + void updateScrollPos(); + +protected: + static constexpr auto npos = std::numeric_limits<size_t>::max(); + + bool mAutoSize = false; + const LLFontGL* mFont; + U16 mEmojiWidth = 0; + size_t mMaxVisible = 0; + S32 mPadding = 8; + LLRect mRenderRect; + LLUIImagePtr mSelectedImage; + + LLWString mEmojis; + size_t mVisibleEmojis = 0; + size_t mFirstVisible = 0; + size_t mScrollPos = 0; + size_t mCurSelected = 0; + LLVector2 mLastHover; +}; + +// ============================================================================ +// LLFloaterEmojiComplete +// + +class LLFloaterEmojiComplete : public LLFloater +{ +public: + LLFloaterEmojiComplete(const LLSD& sdKey); + +public: + BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent) override; + void onOpen(const LLSD& key) override; + BOOL postBuild() override; + void reshape(S32 width, S32 height, BOOL called_from_parent) override; + +protected: + LLPanelEmojiComplete* mEmojiCtrl = nullptr; + S32 mEmojiCtrlHorz = 0; +}; + +// ============================================================================ diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index cf9211767e..4431f6527d 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -613,7 +613,7 @@ void LLGLTexMemBar::draw() LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*3, text_color, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, - &x_right, FALSE); + &x_right, /*use_ellipses*/FALSE, /*use_color*/FALSE); F32Kilobits bandwidth(LLAppViewer::getTextureFetch()->getTextureBandwidth()); F32Kilobits max_bandwidth(gSavedSettings.getF32("ThrottleBandwidthKBPS")); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index c0398372b4..1c1aa9ea47 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -158,6 +158,7 @@ #include "llfloaterimnearbychat.h" #include "llpanelblockedlist.h" #include "llpanelprofileclassifieds.h" +#include "llpanelemojicomplete.h" #include "llpreviewanim.h" #include "llpreviewgesture.h" #include "llpreviewnotecard.h" @@ -336,6 +337,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("delete_pref_preset", "floater_delete_pref_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDeletePrefPreset>); LLFloaterReg::add("destinations", "floater_destinations.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDestinations>); + LLFloaterReg::add("emoji_complete", "floater_emoji_complete.xml", &LLFloaterReg::build<LLFloaterEmojiComplete>); LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostProcess>); LLFloaterReg::add("env_fixed_environmentent_water", "floater_fixedenvironment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFixedEnvironmentWater>); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index a0223a5dbb..af3eaea9be 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -9566,6 +9566,10 @@ void initialize_menus() //Develop (clear cache immediately) commit.add("Develop.ClearCache", boost::bind(&handle_cache_clear_immediately) ); + // Develop (Fonts debugging) + commit.add("Develop.Fonts.Dump", boost::bind(&LLFontGL::dumpFonts)); + commit.add("Develop.Fonts.DumpTextures", boost::bind(&LLFontGL::dumpFontTextures)); + // Admin >Object view_listener_t::addMenu(new LLAdminForceTakeCopy(), "Admin.ForceTakeCopy"); view_listener_t::addMenu(new LLAdminHandleObjectOwnerSelf(), "Admin.HandleObjectOwnerSelf"); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index e3ac56d0d3..8a11c5cf8f 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1118,7 +1118,7 @@ void LLViewerFetchedTexture::init(bool firstinit) mLoadedCallbackDesiredDiscardLevel = S8_MAX; mPauseLoadedCallBacks = FALSE; - mNeedsCreateTexture = FALSE; + mNeedsCreateTexture = false; mIsRawImageValid = FALSE; mRawDiscardLevel = INVALID_DISCARD_LEVEL; @@ -1400,12 +1400,12 @@ void LLViewerFetchedTexture::addToCreateTexture() { //just update some variables, not to create a real GL texture. createGLTexture(mRawDiscardLevel, mRawImage, 0, FALSE); - mNeedsCreateTexture = FALSE; + mNeedsCreateTexture = false; destroyRawImage(); } else if(!force_update && getDiscardLevel() > -1 && getDiscardLevel() <= mRawDiscardLevel) { - mNeedsCreateTexture = FALSE; + mNeedsCreateTexture = false; destroyRawImage(); } else @@ -1441,7 +1441,7 @@ void LLViewerFetchedTexture::addToCreateTexture() mRawDiscardLevel += i; if(mRawDiscardLevel >= getDiscardLevel() && getDiscardLevel() > 0) { - mNeedsCreateTexture = FALSE; + mNeedsCreateTexture = false; destroyRawImage(); return; } @@ -1473,7 +1473,7 @@ BOOL LLViewerFetchedTexture::preCreateTexture(S32 usename/*= 0*/) destroyRawImage(); return FALSE; } - mNeedsCreateTexture = FALSE; + mNeedsCreateTexture = false; if (mRawImage.isNull()) { @@ -1609,14 +1609,14 @@ void LLViewerFetchedTexture::postCreateTexture() destroyRawImage(); } - mNeedsCreateTexture = FALSE; + mNeedsCreateTexture = false; } void LLViewerFetchedTexture::scheduleCreateTexture() { if (!mNeedsCreateTexture) { - mNeedsCreateTexture = TRUE; + mNeedsCreateTexture = true; if (preCreateTexture()) { #if LL_IMAGEGL_THREAD_CHECK @@ -1630,7 +1630,7 @@ void LLViewerFetchedTexture::scheduleCreateTexture() memcpy(data_copy, data, size); } #endif - mNeedsCreateTexture = TRUE; + mNeedsCreateTexture = true; auto mainq = LLImageGLThread::sEnabled ? mMainQueue.lock() : nullptr; if (mainq) { diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index b953d7006b..2f5e0d01df 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -27,6 +27,7 @@ #ifndef LL_LLVIEWERTEXTURE_H #define LL_LLVIEWERTEXTURE_H +#include "llatomic.h" #include "llgltexture.h" #include "lltimer.h" #include "llframetimer.h" @@ -528,7 +529,9 @@ protected: LLFrameTimer mStopFetchingTimer; // Time since mDecodePriority == 0.f. BOOL mInImageList; // TRUE if image is in list (in which case don't reset priority!) - BOOL mNeedsCreateTexture; + // This needs to be atomic, since it is written both in the main thread + // and in the GL image worker thread... HB + LLAtomicBool mNeedsCreateTexture; BOOL mForSculpt ; //a flag if the texture is used as sculpt data. BOOL mIsFetched ; //is loaded from remote or from cache, not generated locally. diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index ddc11ac0bd..a6a62ffacf 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1008,7 +1008,7 @@ public: const Line& line = *iter; LLFontGL::getFontMonospace()->renderUTF8(line.text, 0, (F32)line.x, (F32)line.y, mTextColor, LLFontGL::LEFT, LLFontGL::TOP, - LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE); + LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, /*use_ellipses*/FALSE, /*use_color*/FALSE); } } diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 6e994b4e68..67632cdbf7 100755 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -551,7 +551,8 @@ void LLWorldMapView::draw() S32_MAX, //max_chars mMapScale, //max_pixels NULL, - TRUE); //use ellipses + /*use_ellipses*/TRUE, + /*use_color*/FALSE); } } } diff --git a/indra/newview/skins/default/xui/en/emoji_characters.xml b/indra/newview/skins/default/xui/en/emoji_characters.xml new file mode 100644 index 0000000000..55aefe6745 --- /dev/null +++ b/indra/newview/skins/default/xui/en/emoji_characters.xml @@ -0,0 +1,10955 @@ +<?xml version="1.0" ?> +<llsd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="llsd.xsd"> + <array> + <map> + <key>Character</key> + <string>😀</string> + <key>ShortCodes</key> + <array> + <string>:grinning:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>😄</string> + <key>ShortCodes</key> + <array> + <string>:smile:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>😆</string> + <key>ShortCodes</key> + <array> + <string>:laughing:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤣</string> + <key>ShortCodes</key> + <array> + <string>:rofl:</string> + <string>:satisfied:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙂</string> + <key>ShortCodes</key> + <array> + <string>:slightly_smiling_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>😉</string> + <key>ShortCodes</key> + <array> + <string>:wink:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>😇</string> + <key>ShortCodes</key> + <array> + <string>:innocent:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>😃</string> + <key>ShortCodes</key> + <array> + <string>:smiley:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>😁</string> + <key>ShortCodes</key> + <array> + <string>:grin:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>😅</string> + <key>ShortCodes</key> + <array> + <string>:sweat_smile:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>😂</string> + <key>ShortCodes</key> + <array> + <string>:joy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙃</string> + <key>ShortCodes</key> + <array> + <string>:upside_down_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>😊</string> + <key>ShortCodes</key> + <array> + <string>:blush:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Smiling</string> + </array> + </map> + <map> + <key>Character</key> + <string>🥰</string> + <key>ShortCodes</key> + <array> + <string>:smiling_face_with_three_hearts:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Affection</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤩</string> + <key>ShortCodes</key> + <array> + <string>:star_struck:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Affection</string> + </array> + </map> + <map> + <key>Character</key> + <string>😗</string> + <key>ShortCodes</key> + <array> + <string>:kissing:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Affection</string> + </array> + </map> + <map> + <key>Character</key> + <string>😚</string> + <key>ShortCodes</key> + <array> + <string>:kissing_closed_eyes:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Affection</string> + </array> + </map> + <map> + <key>Character</key> + <string>🥲</string> + <key>ShortCodes</key> + <array> + <string>:smiling_face_with_tear:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Affection</string> + </array> + </map> + <map> + <key>Character</key> + <string>😍</string> + <key>ShortCodes</key> + <array> + <string>:heart_eyes:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Affection</string> + </array> + </map> + <map> + <key>Character</key> + <string>😘</string> + <key>ShortCodes</key> + <array> + <string>:kissing_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Affection</string> + </array> + </map> + <map> + <key>Character</key> + <string>☺️</string> + <key>ShortCodes</key> + <array> + <string>:relaxed:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Affection</string> + </array> + </map> + <map> + <key>Character</key> + <string>😙</string> + <key>ShortCodes</key> + <array> + <string>:kissing_smiling_eyes:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Affection</string> + </array> + </map> + <map> + <key>Character</key> + <string>😋</string> + <key>ShortCodes</key> + <array> + <string>:yum:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Tongue</string> + </array> + </map> + <map> + <key>Character</key> + <string>😜</string> + <key>ShortCodes</key> + <array> + <string>:stuck_out_tongue_winking_eye:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Tongue</string> + </array> + </map> + <map> + <key>Character</key> + <string>😝</string> + <key>ShortCodes</key> + <array> + <string>:stuck_out_tongue_closed_eyes:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Tongue</string> + </array> + </map> + <map> + <key>Character</key> + <string>😛</string> + <key>ShortCodes</key> + <array> + <string>:stuck_out_tongue:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Tongue</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤪</string> + <key>ShortCodes</key> + <array> + <string>:zany_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Tongue</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤑</string> + <key>ShortCodes</key> + <array> + <string>:money_mouth_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Tongue</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤗</string> + <key>ShortCodes</key> + <array> + <string>:hugs:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Hand</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤫</string> + <key>ShortCodes</key> + <array> + <string>:shushing_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Hand</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤭</string> + <key>ShortCodes</key> + <array> + <string>:hand_over_mouth:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Hand</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤔</string> + <key>ShortCodes</key> + <array> + <string>:thinking:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Hand</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤐</string> + <key>ShortCodes</key> + <array> + <string>:zipper_mouth_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>😐</string> + <key>ShortCodes</key> + <array> + <string>:neutral_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>😶</string> + <key>ShortCodes</key> + <array> + <string>:no_mouth:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>😏</string> + <key>ShortCodes</key> + <array> + <string>:smirk:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙄</string> + <key>ShortCodes</key> + <array> + <string>:roll_eyes:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>😮💨</string> + <key>ShortCodes</key> + <array> + <string>:face_exhaling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤨</string> + <key>ShortCodes</key> + <array> + <string>:raised_eyebrow:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>😑</string> + <key>ShortCodes</key> + <array> + <string>:expressionless:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>😶🌫️</string> + <key>ShortCodes</key> + <array> + <string>:face_in_clouds:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>😒</string> + <key>ShortCodes</key> + <array> + <string>:unamused:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>😬</string> + <key>ShortCodes</key> + <array> + <string>:grimacing:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤥</string> + <key>ShortCodes</key> + <array> + <string>:lying_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Neutral Skeptical</string> + </array> + </map> + <map> + <key>Character</key> + <string>😌</string> + <key>ShortCodes</key> + <array> + <string>:relieved:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Sleepy</string> + </array> + </map> + <map> + <key>Character</key> + <string>😪</string> + <key>ShortCodes</key> + <array> + <string>:sleepy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Sleepy</string> + </array> + </map> + <map> + <key>Character</key> + <string>😴</string> + <key>ShortCodes</key> + <array> + <string>:sleeping:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Sleepy</string> + </array> + </map> + <map> + <key>Character</key> + <string>😔</string> + <key>ShortCodes</key> + <array> + <string>:pensive:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Sleepy</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤤</string> + <key>ShortCodes</key> + <array> + <string>:drooling_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Sleepy</string> + </array> + </map> + <map> + <key>Character</key> + <string>😷</string> + <key>ShortCodes</key> + <array> + <string>:mask:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤕</string> + <key>ShortCodes</key> + <array> + <string>:face_with_head_bandage:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤮</string> + <key>ShortCodes</key> + <array> + <string>:vomiting_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🥵</string> + <key>ShortCodes</key> + <array> + <string>:hot_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🥴</string> + <key>ShortCodes</key> + <array> + <string>:woozy_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>😵💫</string> + <key>ShortCodes</key> + <array> + <string>:face_with_spiral_eyes:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤒</string> + <key>ShortCodes</key> + <array> + <string>:face_with_thermometer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤢</string> + <key>ShortCodes</key> + <array> + <string>:nauseated_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤧</string> + <key>ShortCodes</key> + <array> + <string>:sneezing_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🥶</string> + <key>ShortCodes</key> + <array> + <string>:cold_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>😵</string> + <key>ShortCodes</key> + <array> + <string>:dizzy_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤯</string> + <key>ShortCodes</key> + <array> + <string>:exploding_head:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Unwell</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤠</string> + <key>ShortCodes</key> + <array> + <string>:cowboy_hat_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Hat</string> + </array> + </map> + <map> + <key>Character</key> + <string>🥸</string> + <key>ShortCodes</key> + <array> + <string>:disguised_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Hat</string> + </array> + </map> + <map> + <key>Character</key> + <string>🥳</string> + <key>ShortCodes</key> + <array> + <string>:partying_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Hat</string> + </array> + </map> + <map> + <key>Character</key> + <string>😎</string> + <key>ShortCodes</key> + <array> + <string>:sunglasses:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Glasses</string> + </array> + </map> + <map> + <key>Character</key> + <string>🧐</string> + <key>ShortCodes</key> + <array> + <string>:monocle_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Glasses</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤓</string> + <key>ShortCodes</key> + <array> + <string>:nerd_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Glasses</string> + </array> + </map> + <map> + <key>Character</key> + <string>😕</string> + <key>ShortCodes</key> + <array> + <string>:confused:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙁</string> + <key>ShortCodes</key> + <array> + <string>:slightly_frowning_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😮</string> + <key>ShortCodes</key> + <array> + <string>:open_mouth:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😲</string> + <key>ShortCodes</key> + <array> + <string>:astonished:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>🥺</string> + <key>ShortCodes</key> + <array> + <string>:pleading_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😧</string> + <key>ShortCodes</key> + <array> + <string>:anguished:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😰</string> + <key>ShortCodes</key> + <array> + <string>:cold_sweat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😢</string> + <key>ShortCodes</key> + <array> + <string>:cry:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😱</string> + <key>ShortCodes</key> + <array> + <string>:scream:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😣</string> + <key>ShortCodes</key> + <array> + <string>:persevere:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😓</string> + <key>ShortCodes</key> + <array> + <string>:sweat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😫</string> + <key>ShortCodes</key> + <array> + <string>:tired_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😟</string> + <key>ShortCodes</key> + <array> + <string>:worried:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>☹️</string> + <key>ShortCodes</key> + <array> + <string>:frowning_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😯</string> + <key>ShortCodes</key> + <array> + <string>:hushed:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😳</string> + <key>ShortCodes</key> + <array> + <string>:flushed:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😦</string> + <key>ShortCodes</key> + <array> + <string>:frowning:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😨</string> + <key>ShortCodes</key> + <array> + <string>:fearful:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😥</string> + <key>ShortCodes</key> + <array> + <string>:disappointed_relieved:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😭</string> + <key>ShortCodes</key> + <array> + <string>:sob:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😖</string> + <key>ShortCodes</key> + <array> + <string>:confounded:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😞</string> + <key>ShortCodes</key> + <array> + <string>:disappointed:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😩</string> + <key>ShortCodes</key> + <array> + <string>:weary:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>🥱</string> + <key>ShortCodes</key> + <array> + <string>:yawning_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Concerned</string> + </array> + </map> + <map> + <key>Character</key> + <string>😤</string> + <key>ShortCodes</key> + <array> + <string>:triumph:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Negative</string> + </array> + </map> + <map> + <key>Character</key> + <string>😠</string> + <key>ShortCodes</key> + <array> + <string>:angry:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Negative</string> + </array> + </map> + <map> + <key>Character</key> + <string>😈</string> + <key>ShortCodes</key> + <array> + <string>:smiling_imp:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Negative</string> + </array> + </map> + <map> + <key>Character</key> + <string>💀</string> + <key>ShortCodes</key> + <array> + <string>:skull:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Negative</string> + </array> + </map> + <map> + <key>Character</key> + <string>😡</string> + <key>ShortCodes</key> + <array> + <string>:pout:</string> + <string>:rage:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Negative</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤬</string> + <key>ShortCodes</key> + <array> + <string>:cursing_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Negative</string> + </array> + </map> + <map> + <key>Character</key> + <string>👿</string> + <key>ShortCodes</key> + <array> + <string>:imp:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Negative</string> + </array> + </map> + <map> + <key>Character</key> + <string>☠️</string> + <key>ShortCodes</key> + <array> + <string>:skull_and_crossbones:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Negative</string> + </array> + </map> + <map> + <key>Character</key> + <string>💩</string> + <key>ShortCodes</key> + <array> + <string>:hankey:</string> + <string>:poop:</string> + <string>:shit:</string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Costume</string> + </array> + </map> + <map> + <key>Character</key> + <string>👹</string> + <key>ShortCodes</key> + <array> + <string>:japanese_ogre:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Costume</string> + </array> + </map> + <map> + <key>Character</key> + <string>👻</string> + <key>ShortCodes</key> + <array> + <string>:ghost:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Costume</string> + </array> + </map> + <map> + <key>Character</key> + <string>👾</string> + <key>ShortCodes</key> + <array> + <string>:space_invader:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Costume</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤡</string> + <key>ShortCodes</key> + <array> + <string>:clown_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Costume</string> + </array> + </map> + <map> + <key>Character</key> + <string>👺</string> + <key>ShortCodes</key> + <array> + <string>:japanese_goblin:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Costume</string> + </array> + </map> + <map> + <key>Character</key> + <string>👽</string> + <key>ShortCodes</key> + <array> + <string>:alien:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Costume</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤖</string> + <key>ShortCodes</key> + <array> + <string>:robot:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Face Costume</string> + </array> + </map> + <map> + <key>Character</key> + <string>😺</string> + <key>ShortCodes</key> + <array> + <string>:smiley_cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Cat Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>😹</string> + <key>ShortCodes</key> + <array> + <string>:joy_cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Cat Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>😼</string> + <key>ShortCodes</key> + <array> + <string>:smirk_cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Cat Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙀</string> + <key>ShortCodes</key> + <array> + <string>:scream_cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Cat Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>😾</string> + <key>ShortCodes</key> + <array> + <string>:pouting_cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Cat Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>😸</string> + <key>ShortCodes</key> + <array> + <string>:smile_cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Cat Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>😻</string> + <key>ShortCodes</key> + <array> + <string>:heart_eyes_cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Cat Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>😽</string> + <key>ShortCodes</key> + <array> + <string>:kissing_cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Cat Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>😿</string> + <key>ShortCodes</key> + <array> + <string>:crying_cat_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Cat Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙈</string> + <key>ShortCodes</key> + <array> + <string>:see_no_evil:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Monkey Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙊</string> + <key>ShortCodes</key> + <array> + <string>:speak_no_evil:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Monkey Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙉</string> + <key>ShortCodes</key> + <array> + <string>:hear_no_evil:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Smiley</string> + <string>Monkey Face</string> + </array> + </map> + <map> + <key>Character</key> + <string>💋</string> + <key>ShortCodes</key> + <array> + <string>:kiss:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💘</string> + <key>ShortCodes</key> + <array> + <string>:cupid:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💖</string> + <key>ShortCodes</key> + <array> + <string>:sparkling_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💓</string> + <key>ShortCodes</key> + <array> + <string>:heartbeat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💕</string> + <key>ShortCodes</key> + <array> + <string>:two_hearts:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>❣️</string> + <key>ShortCodes</key> + <array> + <string>:heavy_heart_exclamation:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>❤️🔥</string> + <key>ShortCodes</key> + <array> + <string>:heart_on_fire:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>❤️</string> + <key>ShortCodes</key> + <array> + <string>:heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💛</string> + <key>ShortCodes</key> + <array> + <string>:yellow_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💙</string> + <key>ShortCodes</key> + <array> + <string>:blue_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤎</string> + <key>ShortCodes</key> + <array> + <string>:brown_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤍</string> + <key>ShortCodes</key> + <array> + <string>:white_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💢</string> + <key>ShortCodes</key> + <array> + <string>:anger:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💫</string> + <key>ShortCodes</key> + <array> + <string>:dizzy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💨</string> + <key>ShortCodes</key> + <array> + <string>:dash:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💣</string> + <key>ShortCodes</key> + <array> + <string>:bomb:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👁️🗨️</string> + <key>ShortCodes</key> + <array> + <string>:eye_speech_bubble:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🗯️</string> + <key>ShortCodes</key> + <array> + <string>:right_anger_bubble:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💤</string> + <key>ShortCodes</key> + <array> + <string>:zzz:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💌</string> + <key>ShortCodes</key> + <array> + <string>:love_letter:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💝</string> + <key>ShortCodes</key> + <array> + <string>:gift_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💗</string> + <key>ShortCodes</key> + <array> + <string>:heartpulse:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💞</string> + <key>ShortCodes</key> + <array> + <string>:revolving_hearts:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💟</string> + <key>ShortCodes</key> + <array> + <string>:heart_decoration:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💔</string> + <key>ShortCodes</key> + <array> + <string>:broken_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>❤️🩹</string> + <key>ShortCodes</key> + <array> + <string>:mending_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧡</string> + <key>ShortCodes</key> + <array> + <string>:orange_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💚</string> + <key>ShortCodes</key> + <array> + <string>:green_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💜</string> + <key>ShortCodes</key> + <array> + <string>:purple_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🖤</string> + <key>ShortCodes</key> + <array> + <string>:black_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💯</string> + <key>ShortCodes</key> + <array> + <string>:100:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💥</string> + <key>ShortCodes</key> + <array> + <string>:boom:</string> + <string>:collision:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💦</string> + <key>ShortCodes</key> + <array> + <string>:sweat_drops:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🕳️</string> + <key>ShortCodes</key> + <array> + <string>:hole:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💬</string> + <key>ShortCodes</key> + <array> + <string>:speech_balloon:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🗨️</string> + <key>ShortCodes</key> + <array> + <string>:left_speech_bubble:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💭</string> + <key>ShortCodes</key> + <array> + <string>:thought_balloon:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Emotion</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👋</string> + <key>ShortCodes</key> + <array> + <string>:wave:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Open</string> + </array> + </map> + <map> + <key>Character</key> + <string>🖐️</string> + <key>ShortCodes</key> + <array> + <string>:raised_hand_with_fingers_splayed:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Open</string> + </array> + </map> + <map> + <key>Character</key> + <string>🖖</string> + <key>ShortCodes</key> + <array> + <string>:vulcan_salute:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Open</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤚</string> + <key>ShortCodes</key> + <array> + <string>:raised_back_of_hand:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Open</string> + </array> + </map> + <map> + <key>Character</key> + <string>✋</string> + <key>ShortCodes</key> + <array> + <string>:hand:</string> + <string>:raised_hand:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Open</string> + </array> + </map> + <map> + <key>Character</key> + <string>👌</string> + <key>ShortCodes</key> + <array> + <string>:ok_hand:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Partial</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤏</string> + <key>ShortCodes</key> + <array> + <string>:pinching_hand:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Partial</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤞</string> + <key>ShortCodes</key> + <array> + <string>:crossed_fingers:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Partial</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤘</string> + <key>ShortCodes</key> + <array> + <string>:metal:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Partial</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤌</string> + <key>ShortCodes</key> + <array> + <string>:pinched_fingers:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Partial</string> + </array> + </map> + <map> + <key>Character</key> + <string>✌️</string> + <key>ShortCodes</key> + <array> + <string>:v:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Partial</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤟</string> + <key>ShortCodes</key> + <array> + <string>:love_you_gesture:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Partial</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤙</string> + <key>ShortCodes</key> + <array> + <string>:call_me_hand:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Partial</string> + </array> + </map> + <map> + <key>Character</key> + <string>👈</string> + <key>ShortCodes</key> + <array> + <string>:point_left:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Single Finger</string> + </array> + </map> + <map> + <key>Character</key> + <string>👆</string> + <key>ShortCodes</key> + <array> + <string>:point_up_2:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Single Finger</string> + </array> + </map> + <map> + <key>Character</key> + <string>👇</string> + <key>ShortCodes</key> + <array> + <string>:point_down:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Single Finger</string> + </array> + </map> + <map> + <key>Character</key> + <string>👉</string> + <key>ShortCodes</key> + <array> + <string>:point_right:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Single Finger</string> + </array> + </map> + <map> + <key>Character</key> + <string>🖕</string> + <key>ShortCodes</key> + <array> + <string>:fu:</string> + <string>:middle_finger:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Single Finger</string> + </array> + </map> + <map> + <key>Character</key> + <string>☝️</string> + <key>ShortCodes</key> + <array> + <string>:point_up:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Single Finger</string> + </array> + </map> + <map> + <key>Character</key> + <string>👍</string> + <key>ShortCodes</key> + <array> + <string>:+1:</string> + <string>:thumbsup:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Closed</string> + </array> + </map> + <map> + <key>Character</key> + <string>✊</string> + <key>ShortCodes</key> + <array> + <string>:fist:</string> + <string>:fist_raised:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Closed</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤛</string> + <key>ShortCodes</key> + <array> + <string>:fist_left:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Closed</string> + </array> + </map> + <map> + <key>Character</key> + <string>👎</string> + <key>ShortCodes</key> + <array> + <string>:-1:</string> + <string>:thumbsdown:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Closed</string> + </array> + </map> + <map> + <key>Character</key> + <string>👊</string> + <key>ShortCodes</key> + <array> + <string>:facepunch:</string> + <string>:fist_oncoming:</string> + <string>:punch:</string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Closed</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤜</string> + <key>ShortCodes</key> + <array> + <string>:fist_right:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Fingers Closed</string> + </array> + </map> + <map> + <key>Character</key> + <string>👏</string> + <key>ShortCodes</key> + <array> + <string>:clap:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hands</string> + </array> + </map> + <map> + <key>Character</key> + <string>👐</string> + <key>ShortCodes</key> + <array> + <string>:open_hands:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hands</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤝</string> + <key>ShortCodes</key> + <array> + <string>:handshake:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hands</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙌</string> + <key>ShortCodes</key> + <array> + <string>:raised_hands:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hands</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤲</string> + <key>ShortCodes</key> + <array> + <string>:palms_up_together:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hands</string> + </array> + </map> + <map> + <key>Character</key> + <string>🙏</string> + <key>ShortCodes</key> + <array> + <string>:pray:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hands</string> + </array> + </map> + <map> + <key>Character</key> + <string>✍️</string> + <key>ShortCodes</key> + <array> + <string>:writing_hand:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Prop</string> + </array> + </map> + <map> + <key>Character</key> + <string>🤳</string> + <key>ShortCodes</key> + <array> + <string>:selfie:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Prop</string> + </array> + </map> + <map> + <key>Character</key> + <string>💅</string> + <key>ShortCodes</key> + <array> + <string>:nail_care:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Hand Prop</string> + </array> + </map> + <map> + <key>Character</key> + <string>💪</string> + <key>ShortCodes</key> + <array> + <string>:muscle:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🦿</string> + <key>ShortCodes</key> + <array> + <string>:mechanical_leg:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🦶</string> + <key>ShortCodes</key> + <array> + <string>:foot:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🦻</string> + <key>ShortCodes</key> + <array> + <string>:ear_with_hearing_aid:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🧠</string> + <key>ShortCodes</key> + <array> + <string>:brain:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🫁</string> + <key>ShortCodes</key> + <array> + <string>:lungs:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🦴</string> + <key>ShortCodes</key> + <array> + <string>:bone:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>👁️</string> + <key>ShortCodes</key> + <array> + <string>:eye:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>👄</string> + <key>ShortCodes</key> + <array> + <string>:lips:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🦾</string> + <key>ShortCodes</key> + <array> + <string>:mechanical_arm:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🦵</string> + <key>ShortCodes</key> + <array> + <string>:leg:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>👂</string> + <key>ShortCodes</key> + <array> + <string>:ear:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>👃</string> + <key>ShortCodes</key> + <array> + <string>:nose:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🫀</string> + <key>ShortCodes</key> + <array> + <string>:anatomical_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>🦷</string> + <key>ShortCodes</key> + <array> + <string>:tooth:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>👀</string> + <key>ShortCodes</key> + <array> + <string>:eyes:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>👅</string> + <key>ShortCodes</key> + <array> + <string>:tongue:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Body</string> + <string>Body Parts</string> + </array> + </map> + <map> + <key>Character</key> + <string>👶</string> + <key>ShortCodes</key> + <array> + <string>:baby:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👦</string> + <key>ShortCodes</key> + <array> + <string>:boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑</string> + <key>ShortCodes</key> + <array> + <string>:adult:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨</string> + <key>ShortCodes</key> + <array> + <string>:man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧔♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_beard:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🦰</string> + <key>ShortCodes</key> + <array> + <string>:red_haired_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🦳</string> + <key>ShortCodes</key> + <array> + <string>:white_haired_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩</string> + <key>ShortCodes</key> + <array> + <string>:woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🦰</string> + <key>ShortCodes</key> + <array> + <string>:person_red_hair:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🦱</string> + <key>ShortCodes</key> + <array> + <string>:person_curly_hair:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🦳</string> + <key>ShortCodes</key> + <array> + <string>:person_white_hair:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🦲</string> + <key>ShortCodes</key> + <array> + <string>:person_bald:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👱♂️</string> + <key>ShortCodes</key> + <array> + <string>:blond_haired_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👴</string> + <key>ShortCodes</key> + <array> + <string>:older_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧒</string> + <key>ShortCodes</key> + <array> + <string>:child:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👧</string> + <key>ShortCodes</key> + <array> + <string>:girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👱</string> + <key>ShortCodes</key> + <array> + <string>:blond_haired_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧔</string> + <key>ShortCodes</key> + <array> + <string>:bearded_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧔♀️</string> + <key>ShortCodes</key> + <array> + <string>:woman_beard:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🦱</string> + <key>ShortCodes</key> + <array> + <string>:curly_haired_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🦲</string> + <key>ShortCodes</key> + <array> + <string>:bald_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🦰</string> + <key>ShortCodes</key> + <array> + <string>:red_haired_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🦱</string> + <key>ShortCodes</key> + <array> + <string>:curly_haired_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🦳</string> + <key>ShortCodes</key> + <array> + <string>:white_haired_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🦲</string> + <key>ShortCodes</key> + <array> + <string>:bald_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👱♀️</string> + <key>ShortCodes</key> + <array> + <string>:blond_haired_woman:</string> + <string>:blonde_woman:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧓</string> + <key>ShortCodes</key> + <array> + <string>:older_adult:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👵</string> + <key>ShortCodes</key> + <array> + <string>:older_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙍</string> + <key>ShortCodes</key> + <array> + <string>:frowning_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙍♀️</string> + <key>ShortCodes</key> + <array> + <string>:frowning_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙎♂️</string> + <key>ShortCodes</key> + <array> + <string>:pouting_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙅</string> + <key>ShortCodes</key> + <array> + <string>:no_good:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙅♀️</string> + <key>ShortCodes</key> + <array> + <string>:ng_woman:</string> + <string>:no_good_woman:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙆♂️</string> + <key>ShortCodes</key> + <array> + <string>:ok_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💁</string> + <key>ShortCodes</key> + <array> + <string>:information_desk_person:</string> + <string>:tipping_hand_person:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💁♀️</string> + <key>ShortCodes</key> + <array> + <string>:sassy_woman:</string> + <string>:tipping_hand_woman:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙋♂️</string> + <key>ShortCodes</key> + <array> + <string>:raising_hand_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧏</string> + <key>ShortCodes</key> + <array> + <string>:deaf_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧏♀️</string> + <key>ShortCodes</key> + <array> + <string>:deaf_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙇♂️</string> + <key>ShortCodes</key> + <array> + <string>:bowing_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤦</string> + <key>ShortCodes</key> + <array> + <string>:facepalm:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤦♀️</string> + <key>ShortCodes</key> + <array> + <string>:woman_facepalming:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤷♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_shrugging:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙍♂️</string> + <key>ShortCodes</key> + <array> + <string>:frowning_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙎</string> + <key>ShortCodes</key> + <array> + <string>:pouting_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙎♀️</string> + <key>ShortCodes</key> + <array> + <string>:pouting_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙅♂️</string> + <key>ShortCodes</key> + <array> + <string>:ng_man:</string> + <string>:no_good_man:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙆</string> + <key>ShortCodes</key> + <array> + <string>:ok_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙆♀️</string> + <key>ShortCodes</key> + <array> + <string>:ok_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💁♂️</string> + <key>ShortCodes</key> + <array> + <string>:sassy_man:</string> + <string>:tipping_hand_man:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙋</string> + <key>ShortCodes</key> + <array> + <string>:raising_hand:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙋♀️</string> + <key>ShortCodes</key> + <array> + <string>:raising_hand_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧏♂️</string> + <key>ShortCodes</key> + <array> + <string>:deaf_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙇</string> + <key>ShortCodes</key> + <array> + <string>:bow:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🙇♀️</string> + <key>ShortCodes</key> + <array> + <string>:bowing_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤦♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_facepalming:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤷</string> + <key>ShortCodes</key> + <array> + <string>:shrug:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤷♀️</string> + <key>ShortCodes</key> + <array> + <string>:woman_shrugging:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Gesture</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑⚕️</string> + <key>ShortCodes</key> + <array> + <string>:health_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩⚕️</string> + <key>ShortCodes</key> + <array> + <string>:woman_health_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🎓</string> + <key>ShortCodes</key> + <array> + <string>:man_student:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🏫</string> + <key>ShortCodes</key> + <array> + <string>:teacher:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🏫</string> + <key>ShortCodes</key> + <array> + <string>:woman_teacher:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨⚖️</string> + <key>ShortCodes</key> + <array> + <string>:man_judge:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🌾</string> + <key>ShortCodes</key> + <array> + <string>:farmer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🌾</string> + <key>ShortCodes</key> + <array> + <string>:woman_farmer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🍳</string> + <key>ShortCodes</key> + <array> + <string>:man_cook:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🔧</string> + <key>ShortCodes</key> + <array> + <string>:mechanic:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🔧</string> + <key>ShortCodes</key> + <array> + <string>:woman_mechanic:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🏭</string> + <key>ShortCodes</key> + <array> + <string>:man_factory_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑💼</string> + <key>ShortCodes</key> + <array> + <string>:office_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩💼</string> + <key>ShortCodes</key> + <array> + <string>:woman_office_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🔬</string> + <key>ShortCodes</key> + <array> + <string>:man_scientist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑💻</string> + <key>ShortCodes</key> + <array> + <string>:technologist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩💻</string> + <key>ShortCodes</key> + <array> + <string>:woman_technologist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🎤</string> + <key>ShortCodes</key> + <array> + <string>:man_singer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🎨</string> + <key>ShortCodes</key> + <array> + <string>:artist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🎨</string> + <key>ShortCodes</key> + <array> + <string>:woman_artist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨✈️</string> + <key>ShortCodes</key> + <array> + <string>:man_pilot:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🚀</string> + <key>ShortCodes</key> + <array> + <string>:astronaut:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🚀</string> + <key>ShortCodes</key> + <array> + <string>:woman_astronaut:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🚒</string> + <key>ShortCodes</key> + <array> + <string>:man_firefighter:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👮</string> + <key>ShortCodes</key> + <array> + <string>:cop:</string> + <string>:police_officer:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👮♀️</string> + <key>ShortCodes</key> + <array> + <string>:policewoman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🕵️♂️</string> + <key>ShortCodes</key> + <array> + <string>:male_detective:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💂</string> + <key>ShortCodes</key> + <array> + <string>:guard:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💂♀️</string> + <key>ShortCodes</key> + <array> + <string>:guardswoman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👷</string> + <key>ShortCodes</key> + <array> + <string>:construction_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👷♀️</string> + <key>ShortCodes</key> + <array> + <string>:construction_worker_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👸</string> + <key>ShortCodes</key> + <array> + <string>:princess:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👳♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_with_turban:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👲</string> + <key>ShortCodes</key> + <array> + <string>:man_with_gua_pi_mao:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤵</string> + <key>ShortCodes</key> + <array> + <string>:person_in_tuxedo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤵♀️</string> + <key>ShortCodes</key> + <array> + <string>:woman_in_tuxedo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👰♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_with_veil:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤰</string> + <key>ShortCodes</key> + <array> + <string>:pregnant_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🍼</string> + <key>ShortCodes</key> + <array> + <string>:woman_feeding_baby:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🍼</string> + <key>ShortCodes</key> + <array> + <string>:person_feeding_baby:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨⚕️</string> + <key>ShortCodes</key> + <array> + <string>:man_health_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🎓</string> + <key>ShortCodes</key> + <array> + <string>:student:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🎓</string> + <key>ShortCodes</key> + <array> + <string>:woman_student:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🏫</string> + <key>ShortCodes</key> + <array> + <string>:man_teacher:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑⚖️</string> + <key>ShortCodes</key> + <array> + <string>:judge:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩⚖️</string> + <key>ShortCodes</key> + <array> + <string>:woman_judge:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🌾</string> + <key>ShortCodes</key> + <array> + <string>:man_farmer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🍳</string> + <key>ShortCodes</key> + <array> + <string>:cook:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🍳</string> + <key>ShortCodes</key> + <array> + <string>:woman_cook:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🔧</string> + <key>ShortCodes</key> + <array> + <string>:man_mechanic:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🏭</string> + <key>ShortCodes</key> + <array> + <string>:factory_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🏭</string> + <key>ShortCodes</key> + <array> + <string>:woman_factory_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨💼</string> + <key>ShortCodes</key> + <array> + <string>:man_office_worker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🔬</string> + <key>ShortCodes</key> + <array> + <string>:scientist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🔬</string> + <key>ShortCodes</key> + <array> + <string>:woman_scientist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨💻</string> + <key>ShortCodes</key> + <array> + <string>:man_technologist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🎤</string> + <key>ShortCodes</key> + <array> + <string>:singer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🎤</string> + <key>ShortCodes</key> + <array> + <string>:woman_singer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🎨</string> + <key>ShortCodes</key> + <array> + <string>:man_artist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑✈️</string> + <key>ShortCodes</key> + <array> + <string>:pilot:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩✈️</string> + <key>ShortCodes</key> + <array> + <string>:woman_pilot:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🚀</string> + <key>ShortCodes</key> + <array> + <string>:man_astronaut:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🚒</string> + <key>ShortCodes</key> + <array> + <string>:firefighter:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🚒</string> + <key>ShortCodes</key> + <array> + <string>:woman_firefighter:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👮♂️</string> + <key>ShortCodes</key> + <array> + <string>:policeman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🕵️</string> + <key>ShortCodes</key> + <array> + <string>:detective:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🕵️♀️</string> + <key>ShortCodes</key> + <array> + <string>:female_detective:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💂♂️</string> + <key>ShortCodes</key> + <array> + <string>:guardsman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥷</string> + <key>ShortCodes</key> + <array> + <string>:ninja:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👷♂️</string> + <key>ShortCodes</key> + <array> + <string>:construction_worker_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤴</string> + <key>ShortCodes</key> + <array> + <string>:prince:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👳</string> + <key>ShortCodes</key> + <array> + <string>:person_with_turban:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👳♀️</string> + <key>ShortCodes</key> + <array> + <string>:woman_with_turban:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧕</string> + <key>ShortCodes</key> + <array> + <string>:woman_with_headscarf:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤵♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_in_tuxedo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👰</string> + <key>ShortCodes</key> + <array> + <string>:person_with_veil:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👰♀️</string> + <key>ShortCodes</key> + <array> + <string>:bride_with_veil:</string> + <string>:woman_with_veil:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤱</string> + <key>ShortCodes</key> + <array> + <string>:breast_feeding:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🍼</string> + <key>ShortCodes</key> + <array> + <string>:man_feeding_baby:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Role</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👼</string> + <key>ShortCodes</key> + <array> + <string>:angel:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤶</string> + <key>ShortCodes</key> + <array> + <string>:mrs_claus:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦸</string> + <key>ShortCodes</key> + <array> + <string>:superhero:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦸♀️</string> + <key>ShortCodes</key> + <array> + <string>:superhero_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦹♂️</string> + <key>ShortCodes</key> + <array> + <string>:supervillain_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧙</string> + <key>ShortCodes</key> + <array> + <string>:mage:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧙♀️</string> + <key>ShortCodes</key> + <array> + <string>:mage_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧚♂️</string> + <key>ShortCodes</key> + <array> + <string>:fairy_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧛</string> + <key>ShortCodes</key> + <array> + <string>:vampire:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧛♀️</string> + <key>ShortCodes</key> + <array> + <string>:vampire_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧜♂️</string> + <key>ShortCodes</key> + <array> + <string>:merman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧝</string> + <key>ShortCodes</key> + <array> + <string>:elf:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧝♀️</string> + <key>ShortCodes</key> + <array> + <string>:elf_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧞♂️</string> + <key>ShortCodes</key> + <array> + <string>:genie_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧟</string> + <key>ShortCodes</key> + <array> + <string>:zombie:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧟♀️</string> + <key>ShortCodes</key> + <array> + <string>:zombie_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🎅</string> + <key>ShortCodes</key> + <array> + <string>:santa:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🎄</string> + <key>ShortCodes</key> + <array> + <string>:mx_claus:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦸♂️</string> + <key>ShortCodes</key> + <array> + <string>:superhero_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦹</string> + <key>ShortCodes</key> + <array> + <string>:supervillain:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦹♀️</string> + <key>ShortCodes</key> + <array> + <string>:supervillain_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧙♂️</string> + <key>ShortCodes</key> + <array> + <string>:mage_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧚</string> + <key>ShortCodes</key> + <array> + <string>:fairy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧚♀️</string> + <key>ShortCodes</key> + <array> + <string>:fairy_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧛♂️</string> + <key>ShortCodes</key> + <array> + <string>:vampire_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧜</string> + <key>ShortCodes</key> + <array> + <string>:merperson:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧜♀️</string> + <key>ShortCodes</key> + <array> + <string>:mermaid:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧝♂️</string> + <key>ShortCodes</key> + <array> + <string>:elf_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧞</string> + <key>ShortCodes</key> + <array> + <string>:genie:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧞♀️</string> + <key>ShortCodes</key> + <array> + <string>:genie_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧟♂️</string> + <key>ShortCodes</key> + <array> + <string>:zombie_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Fantasy</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💆</string> + <key>ShortCodes</key> + <array> + <string>:massage:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💆♀️</string> + <key>ShortCodes</key> + <array> + <string>:massage_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💇♂️</string> + <key>ShortCodes</key> + <array> + <string>:haircut_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚶</string> + <key>ShortCodes</key> + <array> + <string>:walking:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚶♀️</string> + <key>ShortCodes</key> + <array> + <string>:walking_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧍♂️</string> + <key>ShortCodes</key> + <array> + <string>:standing_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧎</string> + <key>ShortCodes</key> + <array> + <string>:kneeling_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧎♀️</string> + <key>ShortCodes</key> + <array> + <string>:kneeling_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🦯</string> + <key>ShortCodes</key> + <array> + <string>:man_with_probing_cane:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🦼</string> + <key>ShortCodes</key> + <array> + <string>:person_in_motorized_wheelchair:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🦼</string> + <key>ShortCodes</key> + <array> + <string>:woman_in_motorized_wheelchair:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🦽</string> + <key>ShortCodes</key> + <array> + <string>:man_in_manual_wheelchair:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏃</string> + <key>ShortCodes</key> + <array> + <string>:runner:</string> + <string>:running:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏃♀️</string> + <key>ShortCodes</key> + <array> + <string>:running_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🕺</string> + <key>ShortCodes</key> + <array> + <string>:man_dancing:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👯</string> + <key>ShortCodes</key> + <array> + <string>:dancers:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👯♀️</string> + <key>ShortCodes</key> + <array> + <string>:dancing_women:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧖♂️</string> + <key>ShortCodes</key> + <array> + <string>:sauna_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧗</string> + <key>ShortCodes</key> + <array> + <string>:climbing:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧗♀️</string> + <key>ShortCodes</key> + <array> + <string>:climbing_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💆♂️</string> + <key>ShortCodes</key> + <array> + <string>:massage_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💇</string> + <key>ShortCodes</key> + <array> + <string>:haircut:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💇♀️</string> + <key>ShortCodes</key> + <array> + <string>:haircut_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚶♂️</string> + <key>ShortCodes</key> + <array> + <string>:walking_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧍</string> + <key>ShortCodes</key> + <array> + <string>:standing_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧍♀️</string> + <key>ShortCodes</key> + <array> + <string>:standing_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧎♂️</string> + <key>ShortCodes</key> + <array> + <string>:kneeling_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🦯</string> + <key>ShortCodes</key> + <array> + <string>:person_with_probing_cane:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🦯</string> + <key>ShortCodes</key> + <array> + <string>:woman_with_probing_cane:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👨🦼</string> + <key>ShortCodes</key> + <array> + <string>:man_in_motorized_wheelchair:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🦽</string> + <key>ShortCodes</key> + <array> + <string>:person_in_manual_wheelchair:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👩🦽</string> + <key>ShortCodes</key> + <array> + <string>:woman_in_manual_wheelchair:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏃♂️</string> + <key>ShortCodes</key> + <array> + <string>:running_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💃</string> + <key>ShortCodes</key> + <array> + <string>:dancer:</string> + <string>:woman_dancing:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🕴️</string> + <key>ShortCodes</key> + <array> + <string>:business_suit_levitating:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👯♂️</string> + <key>ShortCodes</key> + <array> + <string>:dancing_men:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧖</string> + <key>ShortCodes</key> + <array> + <string>:sauna_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧖♀️</string> + <key>ShortCodes</key> + <array> + <string>:sauna_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧗♂️</string> + <key>ShortCodes</key> + <array> + <string>:climbing_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Activity</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤺</string> + <key>ShortCodes</key> + <array> + <string>:person_fencing:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>⛷️</string> + <key>ShortCodes</key> + <array> + <string>:skier:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏌️</string> + <key>ShortCodes</key> + <array> + <string>:golfing:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏌️♀️</string> + <key>ShortCodes</key> + <array> + <string>:golfing_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏄♂️</string> + <key>ShortCodes</key> + <array> + <string>:surfing_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚣</string> + <key>ShortCodes</key> + <array> + <string>:rowboat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚣♀️</string> + <key>ShortCodes</key> + <array> + <string>:rowing_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏊♂️</string> + <key>ShortCodes</key> + <array> + <string>:swimming_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>⛹️</string> + <key>ShortCodes</key> + <array> + <string>:bouncing_ball_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>⛹️♀️</string> + <key>ShortCodes</key> + <array> + <string>:basketball_woman:</string> + <string>:bouncing_ball_woman:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏋️♂️</string> + <key>ShortCodes</key> + <array> + <string>:weight_lifting_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚴</string> + <key>ShortCodes</key> + <array> + <string>:bicyclist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚴♀️</string> + <key>ShortCodes</key> + <array> + <string>:biking_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚵♂️</string> + <key>ShortCodes</key> + <array> + <string>:mountain_biking_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤸</string> + <key>ShortCodes</key> + <array> + <string>:cartwheeling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤸♀️</string> + <key>ShortCodes</key> + <array> + <string>:woman_cartwheeling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤼♂️</string> + <key>ShortCodes</key> + <array> + <string>:men_wrestling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤽</string> + <key>ShortCodes</key> + <array> + <string>:water_polo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤽♀️</string> + <key>ShortCodes</key> + <array> + <string>:woman_playing_water_polo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤾♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_playing_handball:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤹</string> + <key>ShortCodes</key> + <array> + <string>:juggling_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤹♀️</string> + <key>ShortCodes</key> + <array> + <string>:woman_juggling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏇</string> + <key>ShortCodes</key> + <array> + <string>:horse_racing:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏂</string> + <key>ShortCodes</key> + <array> + <string>:snowboarder:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏌️♂️</string> + <key>ShortCodes</key> + <array> + <string>:golfing_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏄</string> + <key>ShortCodes</key> + <array> + <string>:surfer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏄♀️</string> + <key>ShortCodes</key> + <array> + <string>:surfing_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚣♂️</string> + <key>ShortCodes</key> + <array> + <string>:rowing_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏊</string> + <key>ShortCodes</key> + <array> + <string>:swimmer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏊♀️</string> + <key>ShortCodes</key> + <array> + <string>:swimming_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>⛹️♂️</string> + <key>ShortCodes</key> + <array> + <string>:basketball_man:</string> + <string>:bouncing_ball_man:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏋️</string> + <key>ShortCodes</key> + <array> + <string>:weight_lifting:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏋️♀️</string> + <key>ShortCodes</key> + <array> + <string>:weight_lifting_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚴♂️</string> + <key>ShortCodes</key> + <array> + <string>:biking_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚵</string> + <key>ShortCodes</key> + <array> + <string>:mountain_bicyclist:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🚵♀️</string> + <key>ShortCodes</key> + <array> + <string>:mountain_biking_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤸♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_cartwheeling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤼</string> + <key>ShortCodes</key> + <array> + <string>:wrestling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤼♀️</string> + <key>ShortCodes</key> + <array> + <string>:women_wrestling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤽♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_playing_water_polo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤾</string> + <key>ShortCodes</key> + <array> + <string>:handball_person:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤾♀️</string> + <key>ShortCodes</key> + <array> + <string>:woman_playing_handball:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🤹♂️</string> + <key>ShortCodes</key> + <array> + <string>:man_juggling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Sport</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧘</string> + <key>ShortCodes</key> + <array> + <string>:lotus_position:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Resting</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧘♀️</string> + <key>ShortCodes</key> + <array> + <string>:lotus_position_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Resting</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🛌</string> + <key>ShortCodes</key> + <array> + <string>:sleeping_bed:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Resting</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧘♂️</string> + <key>ShortCodes</key> + <array> + <string>:lotus_position_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Resting</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🛀</string> + <key>ShortCodes</key> + <array> + <string>:bath:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Resting</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧑🤝🧑</string> + <key>ShortCodes</key> + <array> + <string>:people_holding_hands:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👫</string> + <key>ShortCodes</key> + <array> + <string>:couple:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>💏</string> + <key>ShortCodes</key> + <array> + <string>:couplekiss:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨❤️💋👨</string> + <key>ShortCodes</key> + <array> + <string>:couplekiss_man_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>💑</string> + <key>ShortCodes</key> + <array> + <string>:couple_with_heart:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨❤️👨</string> + <key>ShortCodes</key> + <array> + <string>:couple_with_heart_man_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👪</string> + <key>ShortCodes</key> + <array> + <string>:family:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👩👧</string> + <key>ShortCodes</key> + <array> + <string>:family_man_woman_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👩👦👦</string> + <key>ShortCodes</key> + <array> + <string>:family_man_woman_boy_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👨👦</string> + <key>ShortCodes</key> + <array> + <string>:family_man_man_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👨👧👦</string> + <key>ShortCodes</key> + <array> + <string>:family_man_man_girl_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👨👧👧</string> + <key>ShortCodes</key> + <array> + <string>:family_man_man_girl_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👩👧</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_woman_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👩👦👦</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_woman_boy_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👦</string> + <key>ShortCodes</key> + <array> + <string>:family_man_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👧</string> + <key>ShortCodes</key> + <array> + <string>:family_man_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👧👧</string> + <key>ShortCodes</key> + <array> + <string>:family_man_girl_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👦👦</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_boy_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👧👦</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_girl_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👭</string> + <key>ShortCodes</key> + <array> + <string>:two_women_holding_hands:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👬</string> + <key>ShortCodes</key> + <array> + <string>:two_men_holding_hands:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩❤️💋👨</string> + <key>ShortCodes</key> + <array> + <string>:couplekiss_man_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩❤️💋👩</string> + <key>ShortCodes</key> + <array> + <string>:couplekiss_woman_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩❤️👨</string> + <key>ShortCodes</key> + <array> + <string>:couple_with_heart_woman_man:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩❤️👩</string> + <key>ShortCodes</key> + <array> + <string>:couple_with_heart_woman_woman:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👩👦</string> + <key>ShortCodes</key> + <array> + <string>:family_man_woman_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👩👧👦</string> + <key>ShortCodes</key> + <array> + <string>:family_man_woman_girl_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👩👧👧</string> + <key>ShortCodes</key> + <array> + <string>:family_man_woman_girl_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👨👧</string> + <key>ShortCodes</key> + <array> + <string>:family_man_man_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👨👦👦</string> + <key>ShortCodes</key> + <array> + <string>:family_man_man_boy_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👩👦</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_woman_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👩👧👦</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_woman_girl_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👩👧👧</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_woman_girl_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👦👦</string> + <key>ShortCodes</key> + <array> + <string>:family_man_boy_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👨👧👦</string> + <key>ShortCodes</key> + <array> + <string>:family_man_girl_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👦</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_boy:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👧</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>👩👧👧</string> + <key>ShortCodes</key> + <array> + <string>:family_woman_girl_girl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person</string> + <string>Family</string> + </array> + </map> + <map> + <key>Character</key> + <string>🗣️</string> + <key>ShortCodes</key> + <array> + <string>:speaking_head:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Symbol</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👥</string> + <key>ShortCodes</key> + <array> + <string>:busts_in_silhouette:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Symbol</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👣</string> + <key>ShortCodes</key> + <array> + <string>:footprints:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Symbol</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>👤</string> + <key>ShortCodes</key> + <array> + <string>:bust_in_silhouette:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Symbol</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🫂</string> + <key>ShortCodes</key> + <array> + <string>:people_hugging:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Person Symbol</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐵</string> + <key>ShortCodes</key> + <array> + <string>:monkey_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦍</string> + <key>ShortCodes</key> + <array> + <string>:gorilla:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐶</string> + <key>ShortCodes</key> + <array> + <string>:dog:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦮</string> + <key>ShortCodes</key> + <array> + <string>:guide_dog:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐩</string> + <key>ShortCodes</key> + <array> + <string>:poodle:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦊</string> + <key>ShortCodes</key> + <array> + <string>:fox_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐱</string> + <key>ShortCodes</key> + <array> + <string>:cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐈⬛</string> + <key>ShortCodes</key> + <array> + <string>:black_cat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐯</string> + <key>ShortCodes</key> + <array> + <string>:tiger:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐆</string> + <key>ShortCodes</key> + <array> + <string>:leopard:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐎</string> + <key>ShortCodes</key> + <array> + <string>:racehorse:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦓</string> + <key>ShortCodes</key> + <array> + <string>:zebra:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦬</string> + <key>ShortCodes</key> + <array> + <string>:bison:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐂</string> + <key>ShortCodes</key> + <array> + <string>:ox:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐄</string> + <key>ShortCodes</key> + <array> + <string>:cow2:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐖</string> + <key>ShortCodes</key> + <array> + <string>:pig2:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐽</string> + <key>ShortCodes</key> + <array> + <string>:pig_nose:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐑</string> + <key>ShortCodes</key> + <array> + <string>:sheep:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐪</string> + <key>ShortCodes</key> + <array> + <string>:dromedary_camel:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦙</string> + <key>ShortCodes</key> + <array> + <string>:llama:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐘</string> + <key>ShortCodes</key> + <array> + <string>:elephant:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦏</string> + <key>ShortCodes</key> + <array> + <string>:rhinoceros:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐭</string> + <key>ShortCodes</key> + <array> + <string>:mouse:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐀</string> + <key>ShortCodes</key> + <array> + <string>:rat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐰</string> + <key>ShortCodes</key> + <array> + <string>:rabbit:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐿️</string> + <key>ShortCodes</key> + <array> + <string>:chipmunk:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦔</string> + <key>ShortCodes</key> + <array> + <string>:hedgehog:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐻</string> + <key>ShortCodes</key> + <array> + <string>:bear:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐨</string> + <key>ShortCodes</key> + <array> + <string>:koala:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦥</string> + <key>ShortCodes</key> + <array> + <string>:sloth:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦨</string> + <key>ShortCodes</key> + <array> + <string>:skunk:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦡</string> + <key>ShortCodes</key> + <array> + <string>:badger:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐒</string> + <key>ShortCodes</key> + <array> + <string>:monkey:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦧</string> + <key>ShortCodes</key> + <array> + <string>:orangutan:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐕</string> + <key>ShortCodes</key> + <array> + <string>:dog2:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐕🦺</string> + <key>ShortCodes</key> + <array> + <string>:service_dog:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐺</string> + <key>ShortCodes</key> + <array> + <string>:wolf:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦝</string> + <key>ShortCodes</key> + <array> + <string>:raccoon:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐈</string> + <key>ShortCodes</key> + <array> + <string>:cat2:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦁</string> + <key>ShortCodes</key> + <array> + <string>:lion:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐅</string> + <key>ShortCodes</key> + <array> + <string>:tiger2:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐴</string> + <key>ShortCodes</key> + <array> + <string>:horse:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦄</string> + <key>ShortCodes</key> + <array> + <string>:unicorn:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦌</string> + <key>ShortCodes</key> + <array> + <string>:deer:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐮</string> + <key>ShortCodes</key> + <array> + <string>:cow:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐃</string> + <key>ShortCodes</key> + <array> + <string>:water_buffalo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐷</string> + <key>ShortCodes</key> + <array> + <string>:pig:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐗</string> + <key>ShortCodes</key> + <array> + <string>:boar:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐏</string> + <key>ShortCodes</key> + <array> + <string>:ram:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐐</string> + <key>ShortCodes</key> + <array> + <string>:goat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐫</string> + <key>ShortCodes</key> + <array> + <string>:camel:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦒</string> + <key>ShortCodes</key> + <array> + <string>:giraffe:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦣</string> + <key>ShortCodes</key> + <array> + <string>:mammoth:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦛</string> + <key>ShortCodes</key> + <array> + <string>:hippopotamus:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐁</string> + <key>ShortCodes</key> + <array> + <string>:mouse2:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐹</string> + <key>ShortCodes</key> + <array> + <string>:hamster:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐇</string> + <key>ShortCodes</key> + <array> + <string>:rabbit2:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦫</string> + <key>ShortCodes</key> + <array> + <string>:beaver:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦇</string> + <key>ShortCodes</key> + <array> + <string>:bat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐻❄️</string> + <key>ShortCodes</key> + <array> + <string>:polar_bear:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐼</string> + <key>ShortCodes</key> + <array> + <string>:panda_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦦</string> + <key>ShortCodes</key> + <array> + <string>:otter:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦘</string> + <key>ShortCodes</key> + <array> + <string>:kangaroo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐾</string> + <key>ShortCodes</key> + <array> + <string>:feet:</string> + <string>:paw_prints:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Mammal</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦃</string> + <key>ShortCodes</key> + <array> + <string>:turkey:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐓</string> + <key>ShortCodes</key> + <array> + <string>:rooster:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐤</string> + <key>ShortCodes</key> + <array> + <string>:baby_chick:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐦</string> + <key>ShortCodes</key> + <array> + <string>:bird:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🕊️</string> + <key>ShortCodes</key> + <array> + <string>:dove:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦆</string> + <key>ShortCodes</key> + <array> + <string>:duck:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦉</string> + <key>ShortCodes</key> + <array> + <string>:owl:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🪶</string> + <key>ShortCodes</key> + <array> + <string>:feather:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦚</string> + <key>ShortCodes</key> + <array> + <string>:peacock:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐔</string> + <key>ShortCodes</key> + <array> + <string>:chicken:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐣</string> + <key>ShortCodes</key> + <array> + <string>:hatching_chick:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐥</string> + <key>ShortCodes</key> + <array> + <string>:hatched_chick:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐧</string> + <key>ShortCodes</key> + <array> + <string>:penguin:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦅</string> + <key>ShortCodes</key> + <array> + <string>:eagle:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦢</string> + <key>ShortCodes</key> + <array> + <string>:swan:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦤</string> + <key>ShortCodes</key> + <array> + <string>:dodo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦩</string> + <key>ShortCodes</key> + <array> + <string>:flamingo:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦜</string> + <key>ShortCodes</key> + <array> + <string>:parrot:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bird</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐸</string> + <key>ShortCodes</key> + <array> + <string>:frog:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Amphibian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐊</string> + <key>ShortCodes</key> + <array> + <string>:crocodile:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Reptile</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦎</string> + <key>ShortCodes</key> + <array> + <string>:lizard:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Reptile</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐲</string> + <key>ShortCodes</key> + <array> + <string>:dragon_face:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Reptile</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦕</string> + <key>ShortCodes</key> + <array> + <string>:sauropod:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Reptile</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐢</string> + <key>ShortCodes</key> + <array> + <string>:turtle:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Reptile</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐍</string> + <key>ShortCodes</key> + <array> + <string>:snake:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Reptile</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐉</string> + <key>ShortCodes</key> + <array> + <string>:dragon:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Reptile</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦖</string> + <key>ShortCodes</key> + <array> + <string>:t-rex:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Reptile</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐳</string> + <key>ShortCodes</key> + <array> + <string>:whale:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐬</string> + <key>ShortCodes</key> + <array> + <string>:dolphin:</string> + <string>:flipper:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐟</string> + <key>ShortCodes</key> + <array> + <string>:fish:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐡</string> + <key>ShortCodes</key> + <array> + <string>:blowfish:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐙</string> + <key>ShortCodes</key> + <array> + <string>:octopus:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐋</string> + <key>ShortCodes</key> + <array> + <string>:whale2:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦭</string> + <key>ShortCodes</key> + <array> + <string>:seal:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐠</string> + <key>ShortCodes</key> + <array> + <string>:tropical_fish:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦈</string> + <key>ShortCodes</key> + <array> + <string>:shark:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐚</string> + <key>ShortCodes</key> + <array> + <string>:shell:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Marine</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐌</string> + <key>ShortCodes</key> + <array> + <string>:snail:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐛</string> + <key>ShortCodes</key> + <array> + <string>:bug:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐝</string> + <key>ShortCodes</key> + <array> + <string>:bee:</string> + <string>:honeybee:</string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐞</string> + <key>ShortCodes</key> + <array> + <string>:lady_beetle:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🪳</string> + <key>ShortCodes</key> + <array> + <string>:cockroach:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🕸️</string> + <key>ShortCodes</key> + <array> + <string>:spider_web:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦟</string> + <key>ShortCodes</key> + <array> + <string>:mosquito:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🪱</string> + <key>ShortCodes</key> + <array> + <string>:worm:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦋</string> + <key>ShortCodes</key> + <array> + <string>:butterfly:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🐜</string> + <key>ShortCodes</key> + <array> + <string>:ant:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🪲</string> + <key>ShortCodes</key> + <array> + <string>:beetle:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦗</string> + <key>ShortCodes</key> + <array> + <string>:cricket:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🕷️</string> + <key>ShortCodes</key> + <array> + <string>:spider:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦂</string> + <key>ShortCodes</key> + <array> + <string>:scorpion:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🪰</string> + <key>ShortCodes</key> + <array> + <string>:fly:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🦠</string> + <key>ShortCodes</key> + <array> + <string>:microbe:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Animal Bug</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💐</string> + <key>ShortCodes</key> + <array> + <string>:bouquet:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>💮</string> + <key>ShortCodes</key> + <array> + <string>:white_flower:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌹</string> + <key>ShortCodes</key> + <array> + <string>:rose:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌺</string> + <key>ShortCodes</key> + <array> + <string>:hibiscus:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌼</string> + <key>ShortCodes</key> + <array> + <string>:blossom:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌸</string> + <key>ShortCodes</key> + <array> + <string>:cherry_blossom:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🏵️</string> + <key>ShortCodes</key> + <array> + <string>:rosette:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥀</string> + <key>ShortCodes</key> + <array> + <string>:wilted_flower:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌻</string> + <key>ShortCodes</key> + <array> + <string>:sunflower:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌷</string> + <key>ShortCodes</key> + <array> + <string>:tulip:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Flower</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌱</string> + <key>ShortCodes</key> + <array> + <string>:seedling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌲</string> + <key>ShortCodes</key> + <array> + <string>:evergreen_tree:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌴</string> + <key>ShortCodes</key> + <array> + <string>:palm_tree:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌾</string> + <key>ShortCodes</key> + <array> + <string>:ear_of_rice:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>☘️</string> + <key>ShortCodes</key> + <array> + <string>:shamrock:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍁</string> + <key>ShortCodes</key> + <array> + <string>:maple_leaf:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍃</string> + <key>ShortCodes</key> + <array> + <string>:leaves:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🪴</string> + <key>ShortCodes</key> + <array> + <string>:potted_plant:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌳</string> + <key>ShortCodes</key> + <array> + <string>:deciduous_tree:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌵</string> + <key>ShortCodes</key> + <array> + <string>:cactus:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌿</string> + <key>ShortCodes</key> + <array> + <string>:herb:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍀</string> + <key>ShortCodes</key> + <array> + <string>:four_leaf_clover:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍂</string> + <key>ShortCodes</key> + <array> + <string>:fallen_leaf:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Plant Other</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍇</string> + <key>ShortCodes</key> + <array> + <string>:grapes:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍉</string> + <key>ShortCodes</key> + <array> + <string>:watermelon:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍋</string> + <key>ShortCodes</key> + <array> + <string>:lemon:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍍</string> + <key>ShortCodes</key> + <array> + <string>:pineapple:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍎</string> + <key>ShortCodes</key> + <array> + <string>:apple:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍐</string> + <key>ShortCodes</key> + <array> + <string>:pear:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍒</string> + <key>ShortCodes</key> + <array> + <string>:cherries:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🫐</string> + <key>ShortCodes</key> + <array> + <string>:blueberries:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍅</string> + <key>ShortCodes</key> + <array> + <string>:tomato:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥥</string> + <key>ShortCodes</key> + <array> + <string>:coconut:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍈</string> + <key>ShortCodes</key> + <array> + <string>:melon:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍊</string> + <key>ShortCodes</key> + <array> + <string>:mandarin:</string> + <string>:orange:</string> + <string>:tangerine:</string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍌</string> + <key>ShortCodes</key> + <array> + <string>:banana:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥭</string> + <key>ShortCodes</key> + <array> + <string>:mango:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍏</string> + <key>ShortCodes</key> + <array> + <string>:green_apple:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍑</string> + <key>ShortCodes</key> + <array> + <string>:peach:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍓</string> + <key>ShortCodes</key> + <array> + <string>:strawberry:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥝</string> + <key>ShortCodes</key> + <array> + <string>:kiwi_fruit:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🫒</string> + <key>ShortCodes</key> + <array> + <string>:olive:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Fruit</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥑</string> + <key>ShortCodes</key> + <array> + <string>:avocado:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥔</string> + <key>ShortCodes</key> + <array> + <string>:potato:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌽</string> + <key>ShortCodes</key> + <array> + <string>:corn:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🫑</string> + <key>ShortCodes</key> + <array> + <string>:bell_pepper:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥬</string> + <key>ShortCodes</key> + <array> + <string>:leafy_green:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧄</string> + <key>ShortCodes</key> + <array> + <string>:garlic:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍄</string> + <key>ShortCodes</key> + <array> + <string>:mushroom:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌰</string> + <key>ShortCodes</key> + <array> + <string>:chestnut:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍆</string> + <key>ShortCodes</key> + <array> + <string>:eggplant:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥕</string> + <key>ShortCodes</key> + <array> + <string>:carrot:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌶️</string> + <key>ShortCodes</key> + <array> + <string>:hot_pepper:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥒</string> + <key>ShortCodes</key> + <array> + <string>:cucumber:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥦</string> + <key>ShortCodes</key> + <array> + <string>:broccoli:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧅</string> + <key>ShortCodes</key> + <array> + <string>:onion:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥜</string> + <key>ShortCodes</key> + <array> + <string>:peanuts:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Vegetable</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍞</string> + <key>ShortCodes</key> + <array> + <string>:bread:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥖</string> + <key>ShortCodes</key> + <array> + <string>:baguette_bread:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥨</string> + <key>ShortCodes</key> + <array> + <string>:pretzel:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥞</string> + <key>ShortCodes</key> + <array> + <string>:pancakes:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧀</string> + <key>ShortCodes</key> + <array> + <string>:cheese:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍗</string> + <key>ShortCodes</key> + <array> + <string>:poultry_leg:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥓</string> + <key>ShortCodes</key> + <array> + <string>:bacon:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍟</string> + <key>ShortCodes</key> + <array> + <string>:fries:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌭</string> + <key>ShortCodes</key> + <array> + <string>:hotdog:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌮</string> + <key>ShortCodes</key> + <array> + <string>:taco:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🫔</string> + <key>ShortCodes</key> + <array> + <string>:tamale:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧆</string> + <key>ShortCodes</key> + <array> + <string>:falafel:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍳</string> + <key>ShortCodes</key> + <array> + <string>:fried_egg:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍲</string> + <key>ShortCodes</key> + <array> + <string>:stew:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥣</string> + <key>ShortCodes</key> + <array> + <string>:bowl_with_spoon:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍿</string> + <key>ShortCodes</key> + <array> + <string>:popcorn:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧂</string> + <key>ShortCodes</key> + <array> + <string>:salt:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥐</string> + <key>ShortCodes</key> + <array> + <string>:croissant:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🫓</string> + <key>ShortCodes</key> + <array> + <string>:flatbread:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥯</string> + <key>ShortCodes</key> + <array> + <string>:bagel:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧇</string> + <key>ShortCodes</key> + <array> + <string>:waffle:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍖</string> + <key>ShortCodes</key> + <array> + <string>:meat_on_bone:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥩</string> + <key>ShortCodes</key> + <array> + <string>:cut_of_meat:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍔</string> + <key>ShortCodes</key> + <array> + <string>:hamburger:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍕</string> + <key>ShortCodes</key> + <array> + <string>:pizza:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥪</string> + <key>ShortCodes</key> + <array> + <string>:sandwich:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🌯</string> + <key>ShortCodes</key> + <array> + <string>:burrito:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥙</string> + <key>ShortCodes</key> + <array> + <string>:stuffed_flatbread:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥚</string> + <key>ShortCodes</key> + <array> + <string>:egg:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥘</string> + <key>ShortCodes</key> + <array> + <string>:shallow_pan_of_food:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🫕</string> + <key>ShortCodes</key> + <array> + <string>:fondue:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥗</string> + <key>ShortCodes</key> + <array> + <string>:green_salad:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🧈</string> + <key>ShortCodes</key> + <array> + <string>:butter:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥫</string> + <key>ShortCodes</key> + <array> + <string>:canned_food:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Prepared</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍱</string> + <key>ShortCodes</key> + <array> + <string>:bento:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍙</string> + <key>ShortCodes</key> + <array> + <string>:rice_ball:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍛</string> + <key>ShortCodes</key> + <array> + <string>:curry:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍝</string> + <key>ShortCodes</key> + <array> + <string>:spaghetti:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍢</string> + <key>ShortCodes</key> + <array> + <string>:oden:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍤</string> + <key>ShortCodes</key> + <array> + <string>:fried_shrimp:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥮</string> + <key>ShortCodes</key> + <array> + <string>:moon_cake:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥟</string> + <key>ShortCodes</key> + <array> + <string>:dumpling:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥡</string> + <key>ShortCodes</key> + <array> + <string>:takeout_box:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍘</string> + <key>ShortCodes</key> + <array> + <string>:rice_cracker:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍚</string> + <key>ShortCodes</key> + <array> + <string>:rice:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍜</string> + <key>ShortCodes</key> + <array> + <string>:ramen:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍠</string> + <key>ShortCodes</key> + <array> + <string>:sweet_potato:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍣</string> + <key>ShortCodes</key> + <array> + <string>:sushi:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍥</string> + <key>ShortCodes</key> + <array> + <string>:fish_cake:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🍡</string> + <key>ShortCodes</key> + <array> + <string>:dango:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + <map> + <key>Character</key> + <string>🥠</string> + <key>ShortCodes</key> + <array> + <string>:fortune_cookie:</string> + <string></string> + <string></string> + </array> + <key>Categories</key> + <array> + <string>Food Asian</string> + <string></string> + </array> + </map> + </array> +</llsd> diff --git a/indra/newview/skins/default/xui/en/floater_emoji_complete.xml b/indra/newview/skins/default/xui/en/floater_emoji_complete.xml new file mode 100644 index 0000000000..e9ea8f4de7 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_emoji_complete.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_close="false" + can_dock="false" + can_drag_on_left="false" + can_minimize="false" + can_resize="false" + can_tear_off="false" + header_height="0" + layout="topleft" + legacy_header_height="0" + height="40" + single_instance="true" + width="240" + > + <emoji_complete + autosize="true" + height="30" + follows="top|left" + layout="topleft" + left="5" + max_emoji="7" + name="emoji_complete_ctrl" + top="5" + width="230" + > + </emoji_complete> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml index dcbdfa8794..ac5467c036 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml @@ -73,6 +73,8 @@ spellcheck="true" tab_group="1" top="46" + use_color="true" + show_emoji_helper="true" width="392" word_wrap="true"> Loading... diff --git a/indra/newview/skins/default/xui/en/fonts.xml b/indra/newview/skins/default/xui/en/fonts.xml index d88c267a95..40045625fd 100644 --- a/indra/newview/skins/default/xui/en/fonts.xml +++ b/indra/newview/skins/default/xui/en/fonts.xml @@ -3,6 +3,7 @@ <font name="default" comment="default font files (global fallbacks)"> <file>DejaVuSans.ttf</file> + <file functor="is_emoji">TwemojiSVG.ttf</file> <os name="Windows"> <file>meiryo.TTC</file> <file>MSGOTHIC.TTC</file> @@ -69,6 +70,11 @@ <file>DejaVuSans-BoldOblique.ttf</file> </font> + <font name="Emoji" + comment="Name of emoji font"> + <file>TwemojiSVG.ttf</file> + </font> + <font name="Monospace" comment="Name of monospace font"> <file>DejaVuSansMono.ttf</file> diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index 96fac1c6e8..40399b33ef 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -161,6 +161,32 @@ <menu_item_separator /> <menu create_jump_keys="true" + label="Fonts" + name="Fonts" + tear_off="true"> + <menu_item_call + label="Show Font Test" + name="Show Font Test"> + <menu_item_call.on_click + function="Floater.Show" + parameter="font_test" /> + </menu_item_call> + <menu_item_separator /> + <menu_item_call + label="Dump Fonts" + name="Dump Fonts"> + <menu_item_call.on_click + function="Develop.Fonts.Dump" /> + </menu_item_call> + <menu_item_call + label="Dump Font Textures" + name="Dump Font Textures"> + <menu_item_call.on_click + function="Develop.Fonts.DumpTextures" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" label="UI Tests" name="UI Tests" tear_off="true"> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 58584345a9..66b70512a6 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -3484,6 +3484,18 @@ function="World.EnvPreset" parameter="https://cryptic-ridge-1632.herokuapp.com/"/> </menu_item_call> <menu_item_call + label="Dump Fonts" + name="Dump Fonts"> + <menu_item_call.on_click + function="Develop.Fonts.Dump" /> + </menu_item_call> + <menu_item_call + label="Dump Font Textures" + name="Dump Font Textures"> + <menu_item_call.on_click + function="Develop.Fonts.DumpTextures" /> + </menu_item_call> + <menu_item_call label="Dump SelectMgr" name="Dump SelectMgr"> <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml index f9facb593a..c550f634e5 100644 --- a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml @@ -1,4 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chat_editor name="chat_editor" - show_context_menu="true"/> + show_context_menu="true" + show_emoji_helper="true" + use_color="true" + /> diff --git a/indra/newview/skins/default/xui/en/widgets/emoji_complete.xml b/indra/newview/skins/default/xui/en/widgets/emoji_complete.xml new file mode 100644 index 0000000000..370f1d174e --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/emoji_complete.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<emoji_complete + autosize="false" + font="EmojiHuge" + hover_image="ListItem_Over" + max_emoji="7" + padding="8" + selected_image="ListItem_Select" + > +</emoji_complete> diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 6d68fd5453..a2142d4c85 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -141,7 +141,7 @@ class ViewerManifest(LLManifest): self.path("*.tga") # Include our fonts - with self.prefix(src_dst="fonts"): + with self.prefix(src="../packages/fonts",src_dst="fonts"): self.path("*.ttf") self.path("*.txt") @@ -517,6 +517,10 @@ class WindowsManifest(ViewerManifest): self.path("OpenAL32.dll") self.path("alut.dll") + # For ICU4C + self.path("icudt48.dll") + self.path("icuuc48.dll") + # For textures self.path("openjp2.dll") |