[Libreoffice-commits] core.git: extras/source icon-themes/galaxy include/sfx2 officecfg/registry sc/sdi sc/source sc/uiconfig sd/sdi sd/source sd/uiconfig sfx2/emojiconfig sfx2/Library_sfx.mk sfx2/Module_sfx2.mk sfx2/Package_emoji.mk sfx2/sdi sfx2/source sfx2/uiconfig sfx2/UIConfig_sfx.mk sw/sdi sw/source sw/uiconfig

Akshay Deep akshaydeepiitr at gmail.com
Thu Jul 28 20:55:20 UTC 2016


 extras/source/glade/libreoffice-catalog.xml.in                       |    3 
 icon-themes/galaxy/cmd/lc_emojicontrol.png                           |binary
 icon-themes/galaxy/cmd/sc_emojicontrol.png                           |binary
 include/sfx2/emojicontrol.hxx                                        |   49 
 include/sfx2/emojipopup.hxx                                          |   41 
 include/sfx2/emojiview.hxx                                           |   84 
 include/sfx2/emojiviewitem.hxx                                       |   38 
 include/sfx2/sfxsids.hrc                                             |    1 
 officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu |    8 
 officecfg/registry/schema/org/openoffice/Office/Common.xcs           |    7 
 sc/sdi/cellsh.sdi                                                    |    1 
 sc/sdi/drtxtob.sdi                                                   |    1 
 sc/sdi/editsh.sdi                                                    |    1 
 sc/source/ui/app/scdll.cxx                                           |    3 
 sc/uiconfig/scalc/toolbar/standardbar.xml                            |    1 
 sd/sdi/_drvwsh.sdi                                                   |    5 
 sd/sdi/outlnvsh.sdi                                                  |    5 
 sd/source/ui/app/sddll.cxx                                           |    3 
 sd/uiconfig/simpress/toolbar/standardbar.xml                         |    1 
 sfx2/Library_sfx.mk                                                  |    6 
 sfx2/Module_sfx2.mk                                                  |    1 
 sfx2/Package_emoji.mk                                                |   16 
 sfx2/UIConfig_sfx.mk                                                 |    1 
 sfx2/emojiconfig/emoji.json                                          |26482 ++++++++++
 sfx2/sdi/sfx.sdi                                                     |   18 
 sfx2/source/control/emojicontrol.cxx                                 |  174 
 sfx2/source/control/emojipopup.cxx                                   |   47 
 sfx2/source/control/emojiview.cxx                                    |  202 
 sfx2/source/control/emojiviewitem.cxx                                |   95 
 sfx2/uiconfig/ui/emojicontrol.ui                                     |  168 
 sw/sdi/_annotsh.sdi                                                  |    5 
 sw/sdi/_textsh.sdi                                                   |    5 
 sw/sdi/drwtxtsh.sdi                                                  |    5 
 sw/source/uibase/app/swmodule.cxx                                    |    3 
 sw/source/uibase/shells/textsh1.cxx                                  |    1 
 sw/source/uibase/uiview/view.cxx                                     |    2 
 sw/uiconfig/swriter/toolbar/standardbar.xml                          |    1 
 37 files changed, 27483 insertions(+), 1 deletion(-)

New commits:
commit 72e6f08c692c0625db5ce377fb478a99660adb0d
Author: Akshay Deep <akshaydeepiitr at gmail.com>
Date:   Mon Jun 27 16:15:23 2016 +0530

    GSoC Emoji Control
    
    Tab Window
    Add emoji.json to installation directory
    Read the JSON data from code
    Filter emojis according to categories
    Insert Emoji at cursor position
    Toolbar control
    
    Change-Id: Ia5a577ce41398132872914ebfa499e4d4077d57e
    Reviewed-on: https://gerrit.libreoffice.org/26700
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Akshay Deep <akshaydeepiitr at gmail.com>
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index bf49a28..244e0db 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -770,6 +770,9 @@
     <glade-widget-class title="Recent Documents View" name="sfxlo-RecentDocsView"
                         generic-name="Icon View" parent="GtkIconView"
                         icon-name="widget-gtk-iconview"/>
+    <glade-widget-class title="Emoji View" name="sfxlo-EmojiView"
+                        generic-name="Template Icon View" parent="GtkIconView"
+                        icon-name="widget-gtk-iconview"/>
     <glade-widget-class title="Template Thumbnail View" name="sfxlo-TemplateDefaultView"
                         generic-name="Template Icon View" parent="GtkIconView"
                         icon-name="widget-gtk-iconview"/>
diff --git a/icon-themes/galaxy/cmd/lc_emojicontrol.png b/icon-themes/galaxy/cmd/lc_emojicontrol.png
new file mode 100644
index 0000000..bfcfd2d
Binary files /dev/null and b/icon-themes/galaxy/cmd/lc_emojicontrol.png differ
diff --git a/icon-themes/galaxy/cmd/sc_emojicontrol.png b/icon-themes/galaxy/cmd/sc_emojicontrol.png
new file mode 100644
index 0000000..bfcfd2d
Binary files /dev/null and b/icon-themes/galaxy/cmd/sc_emojicontrol.png differ
diff --git a/include/sfx2/emojicontrol.hxx b/include/sfx2/emojicontrol.hxx
new file mode 100644
index 0000000..48c2aa5
--- /dev/null
+++ b/include/sfx2/emojicontrol.hxx
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_SFX2_INC_EMOJICONTROL_HXX
+#define INCLUDED_SFX2_INC_EMOJICONTROL_HXX
+
+#include <sal/config.h>
+#include <sfx2/dllapi.h>
+#include <vcl/button.hxx>
+#include <vcl/tabctrl.hxx>
+#include <vcl/tabpage.hxx>
+#include <sfx2/tbxctrl.hxx>
+#include <com/sun/star/frame/XFrame.hpp>
+
+class EmojiView;
+class ThumbnailViewItem;
+enum class FILTER_CATEGORY;
+
+class SFX2_DLLPUBLIC SfxEmojiControl : public SfxPopupWindow
+{
+public:
+    explicit SfxEmojiControl(sal_uInt16 nId, const css::uno::Reference< css::frame::XFrame >& rFrame);
+
+    virtual ~SfxEmojiControl();
+
+    virtual void dispose() override;
+
+private:
+    void ConvertLabelToUnicode(sal_uInt16 nPageId);
+
+    /// Return filter according to the currently selected tab page.
+    FILTER_CATEGORY getCurrentFilter();
+
+    DECL_LINK_TYPED(ActivatePageHdl, TabControl*, void);
+    DECL_LINK_TYPED(InsertHdl, ThumbnailViewItem*, void);
+
+    VclPtr<TabControl>   mpTabControl;
+    VclPtr<EmojiView>    mpEmojiView;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/sfx2/emojipopup.hxx b/include/sfx2/emojipopup.hxx
new file mode 100644
index 0000000..a6ebc70
--- /dev/null
+++ b/include/sfx2/emojipopup.hxx
@@ -0,0 +1,41 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_SFX2_INC_EMOJIPOPUP_HXX
+#define INCLUDED_SFX2_INC_EMOJIPOPUP_HXX
+
+#include <sfx2/tbxctrl.hxx>
+#include <sfx2/dllapi.h>
+
+#include <functional>
+
+class SFX2_DLLPUBLIC EmojiPopup : public SfxToolBoxControl
+{
+public:
+    SFX_DECL_TOOLBOX_CONTROL();
+
+    EmojiPopup(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx);
+    virtual ~EmojiPopup();
+
+    virtual VclPtr<SfxPopupWindow> CreatePopupWindow() override;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/sfx2/emojiview.hxx b/include/sfx2/emojiview.hxx
new file mode 100644
index 0000000..0eac5ad
--- /dev/null
+++ b/include/sfx2/emojiview.hxx
@@ -0,0 +1,84 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_SFX2_SOURCE_INC_EMOJIVIEW_HXX
+#define INCLUDED_SFX2_SOURCE_INC_EMOJIVIEW_HXX
+
+#include <sfx2/thumbnailview.hxx>
+
+//unicode item defines
+#define ITEM_MAX_WIDTH 20
+#define ITEM_MAX_HEIGHT 20
+#define ITEM_PADDING 5
+#define ITEM_MAX_TEXT_LENGTH 10
+
+class EmojiViewItem;
+
+enum class FILTER_CATEGORY
+{
+    PEOPLE,
+    NATURE,
+    FOOD,
+    ACTIVITY,
+    TRAVEL,
+    OBJECTS,
+    SYMBOLS,
+    FLAGS,
+    UNICODE9
+};
+
+// Display unicode emojis depending on the category
+class ViewFilter_Category
+{
+public:
+
+    ViewFilter_Category (FILTER_CATEGORY rCategory)
+        : mCategory(rCategory)
+    {}
+
+    virtual ~ViewFilter_Category () {}
+
+    bool operator () (const ThumbnailViewItem *pItem);
+
+    static bool isFilteredCategory(FILTER_CATEGORY filter, const OUString &rCategory);
+
+protected:
+
+    FILTER_CATEGORY mCategory;
+};
+
+
+class EmojiView : public ThumbnailView
+{
+public:
+    EmojiView ( vcl::Window* pParent, WinBits nWinStyle = WB_TABSTOP | WB_VSCROLL);
+
+    virtual ~EmojiView ();
+
+    // Fill view with emoji unicodes
+    void Populate ();
+
+    void setInsertEmojiHdl (const Link<ThumbnailViewItem*, void> &rLink);
+
+    void AppendItem(const OUString &rTitle, const OUString &rCategory );
+
+protected:
+    virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
+
+    virtual void KeyInput( const KeyEvent& rKEvt ) override;
+
+protected:
+    std::string msJSONData;
+
+    Link<ThumbnailViewItem*, void> maInsertEmojiHdl;
+};
+
+#endif // INCLUDED_SFX2_SOURCE_INC_EMOJIVIEW_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/sfx2/emojiviewitem.hxx b/include/sfx2/emojiviewitem.hxx
new file mode 100644
index 0000000..6e38f17
--- /dev/null
+++ b/include/sfx2/emojiviewitem.hxx
@@ -0,0 +1,38 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_SFX2_SOURCE_INC_EMOJIVIEWITEM_HXX
+#define INCLUDED_SFX2_SOURCE_INC_EMOJIVIEWITEM_HXX
+
+#include <sfx2/thumbnailviewitem.hxx>
+
+class EmojiViewItem : public ThumbnailViewItem
+{
+public:
+    EmojiViewItem (ThumbnailView &rView, sal_uInt16 nId);
+
+    virtual ~EmojiViewItem ();
+
+    void setCategory (const OUString &rCategory) { msCategory = rCategory; }
+
+    const OUString& getCategory () const { return msCategory; }
+
+    virtual void Paint (drawinglayer::processor2d::BaseProcessor2D *pProcessor,
+                        const ThumbnailItemAttributes *pAttrs) override;
+
+    virtual void calculateItemsPosition (const long nThumbnailHeight, const long nDisplayHeight,
+                                         const long nPadding, sal_uInt32 nMaxTextLength,
+                                         const ThumbnailItemAttributes *pAttrs) override;
+private:
+    OUString msCategory;
+};
+
+#endif // INCLUDED_SFX2_SOURCE_INC_EMOJIVIEWITEM_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/sfx2/sfxsids.hrc b/include/sfx2/sfxsids.hrc
index cb461ee..0946248 100644
--- a/include/sfx2/sfxsids.hrc
+++ b/include/sfx2/sfxsids.hrc
@@ -85,6 +85,7 @@
 #define SID_EXTENDEDHELP                    (SID_SFX_START + 402)
 #define SID_HELPBALLOONS                    (SID_SFX_START + 403)
 #define SID_HELPTIPS                        (SID_SFX_START + 404)
+#define SID_EMOJI_CONTROL                   (SID_SFX_START + 405)
 #define SID_HELPMENU                        (SID_SFX_START + 410)
 #define SID_SEND_FEEDBACK                   (SID_SFX_START + 421)
 #define SID_SHOW_LICENSE                    (SID_SFX_START + 1683)
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index 5bab960..c872d55 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -3779,6 +3779,14 @@
           <value>1</value>
         </prop>
       </node>
+      <node oor:name=".uno:EmojiControl" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Emojis</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
       <node oor:name=".uno:TransformRotationX" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
           <value xml:lang="en-US">Rotation Pivot Point X</value>
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index 63d89f9..2d9ea8c 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -5506,6 +5506,13 @@
           be open at the same time. NIL will be interpreted as infinite!</desc>
         </info>
       </prop>
+      <prop oor:name="EmojiFont" oor:type="xs:string" oor:nillable="false">
+        <!-- UIHints: Emoji Control -->
+        <info>
+          <desc>Special font for rendering of emojis</desc>
+        </info>
+        <value>Noto Emoji</value>
+      </prop>
       <prop oor:name="PluginsEnabled" oor:type="xs:boolean" oor:nillable="false">
         <!-- OldPath: ? -->
         <!-- OldLocation: soffice.ini -->
diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi
index cf94574..2cb1a67 100644
--- a/sc/sdi/cellsh.sdi
+++ b/sc/sdi/cellsh.sdi
@@ -188,6 +188,7 @@ interface CellSelection
     FID_INPUTLINE_BLOCK     [ ExecMethod = Execute; StateMethod = GetState; ]
     FID_INPUTLINE_MATRIX    [ ExecMethod = Execute; StateMethod = GetState; ]
     SID_CHARMAP [ ExecMethod = ExecuteEdit; StateMethod = GetCellState; ]
+    SID_EMOJI_CONTROL [ ExecMethod = ExecuteEdit; StateMethod = GetCellState; ]
 
     SID_INSERT_POSTIT   [ ExecMethod = ExecuteEdit; StateMethod = GetCellState; ]
     SID_EDIT_POSTIT   [ ExecMethod = ExecuteEdit; StateMethod = GetCellState; ]
diff --git a/sc/sdi/drtxtob.sdi b/sc/sdi/drtxtob.sdi
index 928ffd6..d989a59 100644
--- a/sc/sdi/drtxtob.sdi
+++ b/sc/sdi/drtxtob.sdi
@@ -55,6 +55,7 @@ interface TableDrawText
     SID_CLIPBOARD_FORMAT_ITEMS [ ExecMethod = Execute; StateMethod = GetClipState; Export = FALSE; ]
     SID_SELECTALL       [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
     SID_CHARMAP         [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+    SID_EMOJI_CONTROL   [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
     SID_THES            [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
     SID_THESAURUS       [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
      // Attribute: --------------------------------------------------
diff --git a/sc/sdi/editsh.sdi b/sc/sdi/editsh.sdi
index 7b0bbff..8167973 100644
--- a/sc/sdi/editsh.sdi
+++ b/sc/sdi/editsh.sdi
@@ -35,6 +35,7 @@ interface TableText
     SID_CLIPBOARD_FORMAT_ITEMS [ ExecMethod = Execute; StateMethod = GetClipState; Export = FALSE; ]
     SID_SELECTALL       [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
     SID_CHARMAP         [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+    SID_EMOJI_CONTROL   [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
     FID_INSERT_NAME     [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
     SID_THES            [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
 
diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx
index 2e3ba3a..355552d 100644
--- a/sc/source/ui/app/scdll.cxx
+++ b/sc/source/ui/app/scdll.cxx
@@ -85,6 +85,7 @@
 #include <svx/formatpaintbrushctrl.hxx>
 #include "tbzoomsliderctrl.hxx"
 #include <svx/zoomsliderctrl.hxx>
+#include <sfx2/emojipopup.hxx>
 
 #include <svx/xmlsecctrl.hxx>
 // Child windows
@@ -194,6 +195,8 @@ void ScDLL::Init()
     SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_LEFT_TO_RIGHT, pMod);
     SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
 
+    EmojiPopup::RegisterControl(SID_EMOJI_CONTROL, pMod );
+
     // Media Controller
     ::avmedia::MediaToolBoxControl::RegisterControl( SID_AVMEDIA_TOOLBOX, pMod );
 
diff --git a/sc/uiconfig/scalc/toolbar/standardbar.xml b/sc/uiconfig/scalc/toolbar/standardbar.xml
index bbd8f42..9416e6d 100644
--- a/sc/uiconfig/scalc/toolbar/standardbar.xml
+++ b/sc/uiconfig/scalc/toolbar/standardbar.xml
@@ -63,6 +63,7 @@
  <toolbar:toolbaritem xlink:href=".uno:GoalSeekDialog" toolbar:visible="false"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:InsertGraphic"/>
+ <toolbar:toolbaritem xlink:href=".uno:EmojiControl" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:Gallery" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertObjectChart"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertObjectStarMath" toolbar:visible="false"/>
diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi
index 7214f3f..a0e19e8 100644
--- a/sd/sdi/_drvwsh.sdi
+++ b/sd/sdi/_drvwsh.sdi
@@ -298,6 +298,11 @@ interface DrawView
         ExecMethod = FuTemporary ;
         StateMethod = GetMenuState ;
     ]
+    SID_EMOJI_CONTROL // ole : no, status : ?
+    [
+        ExecMethod = FuTemporary ;
+        StateMethod = GetMenuState ;
+    ]
     FN_INSERT_SOFT_HYPHEN // status(final|play)
     [
         ExecMethod = FuTemporary ;
diff --git a/sd/sdi/outlnvsh.sdi b/sd/sdi/outlnvsh.sdi
index fdbbfd7..8888081 100644
--- a/sd/sdi/outlnvsh.sdi
+++ b/sd/sdi/outlnvsh.sdi
@@ -136,6 +136,11 @@ interface OutlineView
         ExecMethod = FuTemporaryModify ;
         StateMethod = GetMenuState ;
     ]
+    SID_EMOJI_CONTROL // ole : no, status : ?
+    [
+        ExecMethod = FuTemporaryModify ;
+        StateMethod = GetMenuState ;
+    ]
     FN_INSERT_SOFT_HYPHEN // status(final|play)
     [
         ExecMethod = FuTemporaryModify ;
diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx
index 6a27583..c63d2b6 100644
--- a/sd/source/ui/app/sddll.cxx
+++ b/sd/source/ui/app/sddll.cxx
@@ -91,6 +91,7 @@
 #include <sfx2/docfilt.hxx>
 #include <sfx2/docfile.hxx>
 #include <sfx2/fcontnr.hxx>
+#include <sfx2/emojipopup.hxx>
 #include <sfx2/sidebar/SidebarChildWindow.hxx>
 #include <vcl/FilterConfigItem.hxx>
 #include <comphelper/processfactory.hxx>
@@ -238,6 +239,8 @@ void SdDLL::RegisterControllers(SdModule* pMod)
     SvxColorToolBoxControl::RegisterControl(SID_FRAME_LINECOLOR, pMod );
     SvxFrameToolBoxControl::RegisterControl(SID_ATTR_BORDER, pMod );
     SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod );
+
+    EmojiPopup::RegisterControl(SID_EMOJI_CONTROL, pMod );
 }
 
 void SdDLL::Init()
diff --git a/sd/uiconfig/simpress/toolbar/standardbar.xml b/sd/uiconfig/simpress/toolbar/standardbar.xml
index eb5a0f3..f1f5de9 100644
--- a/sd/uiconfig/simpress/toolbar/standardbar.xml
+++ b/sd/uiconfig/simpress/toolbar/standardbar.xml
@@ -59,6 +59,7 @@
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:InsertTable"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertGraphic"/>
+ <toolbar:toolbaritem xlink:href=".uno:EmojiControl" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertAVMedia"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertObjectChart"/>
  <toolbar:toolbarseparator/>
diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk
index 5ee2773..e26d5ee 100644
--- a/sfx2/Library_sfx.mk
+++ b/sfx2/Library_sfx.mk
@@ -79,6 +79,8 @@ $(eval $(call gb_Library_use_libraries,sfx,\
 $(eval $(call gb_Library_use_externals,sfx,\
     boost_headers \
     libxml2 \
+    orcus \
+    orcus-parser\
 ))
 
 $(eval $(call gb_Library_add_exception_objects,sfx,\
@@ -158,6 +160,10 @@ $(eval $(call gb_Library_add_exception_objects,sfx,\
     sfx2/source/control/thumbnailviewitem \
     sfx2/source/control/thumbnailviewacc \
     sfx2/source/control/thumbnailview \
+    sfx2/source/control/emojiviewitem \
+    sfx2/source/control/emojiview \
+    sfx2/source/control/emojicontrol \
+    sfx2/source/control/emojipopup \
     sfx2/source/control/unoctitm \
     sfx2/source/dialog/alienwarn \
     sfx2/source/dialog/backingcomp \
diff --git a/sfx2/Module_sfx2.mk b/sfx2/Module_sfx2.mk
index e13282f..6566a0a 100644
--- a/sfx2/Module_sfx2.mk
+++ b/sfx2/Module_sfx2.mk
@@ -23,6 +23,7 @@ $(eval $(call gb_Module_add_targets,sfx2,\
     CustomTarget_classification \
     Library_sfx \
     Package_classification \
+    Package_emoji \
 ))
 
 $(eval $(call gb_Module_add_l10n_targets,sfx2,\
diff --git a/sfx2/Package_emoji.mk b/sfx2/Package_emoji.mk
new file mode 100644
index 0000000..457f0ff
--- /dev/null
+++ b/sfx2/Package_emoji.mk
@@ -0,0 +1,16 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Package_Package,sfx2_emojiconfig,$(SRCDIR)/sfx2))
+
+$(eval $(call gb_Package_add_files,sfx2_emojiconfig,$(LIBO_SHARE_FOLDER)/emojiconfig,\
+	emojiconfig/emoji.json \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sfx2/UIConfig_sfx.mk b/sfx2/UIConfig_sfx.mk
index 8482eca..c55e3c6 100644
--- a/sfx2/UIConfig_sfx.mk
+++ b/sfx2/UIConfig_sfx.mk
@@ -21,6 +21,7 @@ $(eval $(call gb_UIConfig_add_uifiles,sfx,\
 	sfx2/uiconfig/ui/documentinfopage \
 	sfx2/uiconfig/ui/documentpropertiesdialog \
 	sfx2/uiconfig/ui/editdurationdialog \
+	sfx2/uiconfig/ui/emojicontrol \
 	sfx2/uiconfig/ui/errorfindemaildialog \
 	sfx2/uiconfig/ui/floatingrecord \
 	sfx2/uiconfig/ui/helpbookmarkpage \
diff --git a/sfx2/emojiconfig/emoji.json b/sfx2/emojiconfig/emoji.json
new file mode 100644
index 0000000..4716dc9
--- /dev/null
+++ b/sfx2/emojiconfig/emoji.json
@@ -0,0 +1,26482 @@
+{
+    "100": {
+        "unicode": "1f4af",
+        "unicode_alternates": "",
+        "name": "hundred points symbol",
+        "shortname": ":100:",
+        "category": "symbols",
+        "emoji_order": "856",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "symbol",
+            "wow",
+            "wow",
+            "win",
+            "win",
+            "perfect",
+            "perfect",
+            "parties",
+            "parties"
+        ]
+    },
+    "1234": {
+        "unicode": "1f522",
+        "unicode_alternates": "",
+        "name": "input symbol for numbers",
+        "shortname": ":1234:",
+        "category": "symbols",
+        "emoji_order": "913",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "symbol"
+        ]
+    },
+    "grinning": {
+        "unicode": "1f600",
+        "unicode_alternates": "",
+        "name": "grinning face",
+        "shortname": ":grinning:",
+        "category": "people",
+        "emoji_order": "1",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "grimacing": {
+        "unicode": "1f62c",
+        "unicode_alternates": "",
+        "name": "grimacing face",
+        "shortname": ":grimacing:",
+        "category": "people",
+        "emoji_order": "2",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "silly",
+            "smiley",
+            "emotion",
+            "emotion",
+            "selfie",
+            "selfie"
+        ]
+    },
+    "grin": {
+        "unicode": "1f601",
+        "unicode_alternates": "",
+        "name": "grinning face with smiling eyes",
+        "shortname": ":grin:",
+        "category": "people",
+        "emoji_order": "3",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "silly",
+            "smiley",
+            "emotion",
+            "emotion",
+            "good",
+            "good",
+            "selfie",
+            "selfie"
+        ]
+    },
+    "joy": {
+        "unicode": "1f602",
+        "unicode_alternates": "",
+        "name": "face with tears of joy",
+        "shortname": ":joy:",
+        "category": "people",
+        "emoji_order": "4",
+        "aliases": [],
+        "aliases_ascii": [
+            ":')",
+            ":'-)"
+        ],
+        "keywords": [
+            "happy",
+            "silly",
+            "smiley",
+            "cry",
+            "laugh",
+            "laugh",
+            "emotion",
+            "emotion",
+            "sarcastic",
+            "sarcastic"
+        ]
+    },
+    "smiley": {
+        "unicode": "1f603",
+        "unicode_alternates": "",
+        "name": "smiling face with open mouth",
+        "shortname": ":smiley:",
+        "category": "people",
+        "emoji_order": "5",
+        "aliases": [],
+        "aliases_ascii": [
+            ":D",
+            ":-D",
+            "=D"
+        ],
+        "keywords": [
+            "happy",
+            "smiley",
+            "emotion",
+            "emotion",
+            "good",
+            "good"
+        ]
+    },
+    "smile": {
+        "unicode": "1f604",
+        "unicode_alternates": "",
+        "name": "smiling face with open mouth and smiling eyes",
+        "shortname": ":smile:",
+        "category": "people",
+        "emoji_order": "6",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "sweat_smile": {
+        "unicode": "1f605",
+        "unicode_alternates": "",
+        "name": "smiling face with open mouth and cold sweat",
+        "shortname": ":sweat_smile:",
+        "category": "people",
+        "emoji_order": "7",
+        "aliases": [],
+        "aliases_ascii": [
+            "':)",
+            "':-)",
+            "'=)",
+            "':D",
+            "':-D",
+            "'=D"
+        ],
+        "keywords": [
+            "smiley",
+            "workout",
+            "sweat",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "laughing": {
+        "unicode": "1f606",
+        "unicode_alternates": "",
+        "name": "smiling face with open mouth and tightly-closed eyes",
+        "shortname": ":laughing:",
+        "category": "people",
+        "emoji_order": "8",
+        "aliases": [
+            ":satisfied:"
+        ],
+        "aliases_ascii": [
+            ">:)",
+            ">;)",
+            ">:-)",
+            ">=)"
+        ],
+        "keywords": [
+            "happy",
+            "smiley",
+            "laugh",
+            "laugh",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "innocent": {
+        "unicode": "1f607",
+        "unicode_alternates": "",
+        "name": "smiling face with halo",
+        "shortname": ":innocent:",
+        "category": "people",
+        "emoji_order": "9",
+        "aliases": [],
+        "aliases_ascii": [
+            "O:-)",
+            "0:-3",
+            "0:3",
+            "0:-)",
+            "0:)",
+            "0;^)",
+            "O:)",
+            "O;-)",
+            "O=)",
+            "0;-)",
+            "O:-3",
+            "O:3"
+        ],
+        "keywords": [
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "wink": {
+        "unicode": "1f609",
+        "unicode_alternates": "",
+        "name": "winking face",
+        "shortname": ":wink:",
+        "category": "people",
+        "emoji_order": "10",
+        "aliases": [],
+        "aliases_ascii": [
+            ";)",
+            ";-)",
+            "*-)",
+            "*)",
+            ";-]",
+            ";]",
+            ";D",
+            ";^)"
+        ],
+        "keywords": [
+            "silly",
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "blush": {
+        "unicode": "1f60a",
+        "unicode_alternates": "",
+        "name": "smiling face with smiling eyes",
+        "shortname": ":blush:",
+        "category": "people",
+        "emoji_order": "11",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "smiley",
+            "emotion",
+            "emotion",
+            "good",
+            "good",
+            "beautiful",
+            "beautiful"
+        ]
+    },
+    "slight_smile": {
+        "unicode": "1f642",
+        "unicode_alternates": "",
+        "name": "slightly smiling face",
+        "shortname": ":slight_smile:",
+        "category": "people",
+        "emoji_order": "12",
+        "aliases": [
+            ":slightly_smiling_face:"
+        ],
+        "aliases_ascii": [
+            ":)",
+            ":-)",
+            "=]",
+            "=)",
+            ":]"
+        ],
+        "keywords": [
+            "happy",
+            "smiley"
+        ]
+    },
+    "upside_down": {
+        "unicode": "1f643",
+        "unicode_alternates": "",
+        "name": "upside-down face",
+        "shortname": ":upside_down:",
+        "category": "people",
+        "emoji_order": "13",
+        "aliases": [
+            ":upside_down_face:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "silly",
+            "smiley",
+            "sarcastic",
+            "sarcastic"
+        ]
+    },
+    "relaxed": {
+        "unicode": "263a",
+        "unicode_alternates": "263a-fe0f",
+        "name": "white smiling face",
+        "shortname": ":relaxed:",
+        "category": "people",
+        "emoji_order": "14",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "smiley"
+        ]
+    },
+    "yum": {
+        "unicode": "1f60b",
+        "unicode_alternates": "",
+        "name": "face savouring delicious food",
+        "shortname": ":yum:",
+        "category": "people",
+        "emoji_order": "15",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "silly",
+            "smiley",
+            "emotion",
+            "emotion",
+            "sarcastic",
+            "sarcastic",
+            "good",
+            "good"
+        ]
+    },
+    "relieved": {
+        "unicode": "1f60c",
+        "unicode_alternates": "",
+        "name": "relieved face",
+        "shortname": ":relieved:",
+        "category": "people",
+        "emoji_order": "16",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "heart_eyes": {
+        "unicode": "1f60d",
+        "unicode_alternates": "",
+        "name": "smiling face with heart-shaped eyes",
+        "shortname": ":heart_eyes:",
+        "category": "people",
+        "emoji_order": "17",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "smiley",
+            "love",
+            "sex",
+            "heart eyes",
+            "emotion",
+            "emotion",
+            "beautiful",
+            "beautiful"
+        ]
+    },
+    "kissing_heart": {
+        "unicode": "1f618",
+        "unicode_alternates": "",
+        "name": "face throwing a kiss",
+        "shortname": ":kissing_heart:",
+        "category": "people",
+        "emoji_order": "18",
+        "aliases": [],
+        "aliases_ascii": [
+            ":*",
+            ":-*",
+            "=*",
+            ":^*"
+        ],
+        "keywords": [
+            "smiley",
+            "love",
+            "sexy"
+        ]
+    },
+    "kissing": {
+        "unicode": "1f617",
+        "unicode_alternates": "",
+        "name": "kissing face",
+        "shortname": ":kissing:",
+        "category": "people",
+        "emoji_order": "19",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "sexy"
+        ]
+    },
+    "kissing_smiling_eyes": {
+        "unicode": "1f619",
+        "unicode_alternates": "",
+        "name": "kissing face with smiling eyes",
+        "shortname": ":kissing_smiling_eyes:",
+        "category": "people",
+        "emoji_order": "20",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "sexy"
+        ]
+    },
+    "kissing_closed_eyes": {
+        "unicode": "1f61a",
+        "unicode_alternates": "",
+        "name": "kissing face with closed eyes",
+        "shortname": ":kissing_closed_eyes:",
+        "category": "people",
+        "emoji_order": "21",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "sexy"
+        ]
+    },
+    "stuck_out_tongue_winking_eye": {
+        "unicode": "1f61c",
+        "unicode_alternates": "",
+        "name": "face with stuck-out tongue and winking eye",
+        "shortname": ":stuck_out_tongue_winking_eye:",
+        "category": "people",
+        "emoji_order": "22",
+        "aliases": [],
+        "aliases_ascii": [
+            ">:P",
+            "X-P",
+            "x-p"
+        ],
+        "keywords": [
+            "happy",
+            "smiley",
+            "emotion",
+            "emotion",
+            "parties",
+            "parties"
+        ]
+    },
+    "stuck_out_tongue_closed_eyes": {
+        "unicode": "1f61d",
+        "unicode_alternates": "",
+        "name": "face with stuck-out tongue and tightly-closed eyes",
+        "shortname": ":stuck_out_tongue_closed_eyes:",
+        "category": "people",
+        "emoji_order": "23",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "stuck_out_tongue": {
+        "unicode": "1f61b",
+        "unicode_alternates": "",
+        "name": "face with stuck-out tongue",
+        "shortname": ":stuck_out_tongue:",
+        "category": "people",
+        "emoji_order": "24",
+        "aliases": [],
+        "aliases_ascii": [
+            ":P",
+            ":-P",
+            "=P",
+            ":-p",
+            ":p",
+            "=p",
+            ":-Þ",
+            ":Þ",
+            ":þ",
+            ":-þ",
+            ":-b",
+            ":b",
+            "d:"
+        ],
+        "keywords": [
+            "smiley",
+            "sex",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "money_mouth": {
+        "unicode": "1f911",
+        "unicode_alternates": "",
+        "name": "money-mouth face",
+        "shortname": ":money_mouth:",
+        "category": "people",
+        "emoji_order": "25",
+        "aliases": [
+            ":money_mouth_face:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "win",
+            "win",
+            "money",
+            "money",
+            "emotion",
+            "emotion",
+            "boys night",
+            "boys night"
+        ]
+    },
+    "nerd": {
+        "unicode": "1f913",
+        "unicode_alternates": "",
+        "name": "nerd face",
+        "shortname": ":nerd:",
+        "category": "people",
+        "emoji_order": "26",
+        "aliases": [
+            ":nerd_face:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "glasses"
+        ]
+    },
+    "sunglasses": {
+        "unicode": "1f60e",
+        "unicode_alternates": "",
+        "name": "smiling face with sunglasses",
+        "shortname": ":sunglasses:",
+        "category": "people",
+        "emoji_order": "27",
+        "aliases": [],
+        "aliases_ascii": [
+            "B-)",
+            "B)",
+            "8)",
+            "8-)",
+            "B-D",
+            "8-D"
+        ],
+        "keywords": [
+            "silly",
+            "smiley",
+            "emojione",
+            "glasses",
+            "boys night",
+            "boys night"
+        ]
+    },
+    "hugging": {
+        "unicode": "1f917",
+        "unicode_alternates": "",
+        "name": "hugging face",
+        "shortname": ":hugging:",
+        "category": "people",
+        "emoji_order": "28",
+        "aliases": [
+            ":hugging_face:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "hug",
+            "thank you"
+        ]
+    },
+    "smirk": {
+        "unicode": "1f60f",
+        "unicode_alternates": "",
+        "name": "smirking face",
+        "shortname": ":smirk:",
+        "category": "people",
+        "emoji_order": "29",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "silly",
+            "smiley",
+            "sexy",
+            "sarcastic",
+            "sarcastic"
+        ]
+    },
+    "no_mouth": {
+        "unicode": "1f636",
+        "unicode_alternates": "",
+        "name": "face without mouth",
+        "shortname": ":no_mouth:",
+        "category": "people",
+        "emoji_order": "30",
+        "aliases": [],
+        "aliases_ascii": [
+            ":-X",
+            ":X",
+            ":-#",
+            ":#",
+            "=X",
+            "=x",
+            ":x",
+            ":-x",
+            "=#"
+        ],
+        "keywords": [
+            "mad",
+            "smiley",
+            "neutral",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "neutral_face": {
+        "unicode": "1f610",
+        "unicode_alternates": "",
+        "name": "neutral face",
+        "shortname": ":neutral_face:",
+        "category": "people",
+        "emoji_order": "31",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "mad",
+            "smiley",
+            "shrug",
+            "neutral",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "expressionless": {
+        "unicode": "1f611",
+        "unicode_alternates": "",
+        "name": "expressionless face",
+        "shortname": ":expressionless:",
+        "category": "people",
+        "emoji_order": "32",
+        "aliases": [],
+        "aliases_ascii": [
+            "-_-",
+            "-__-",
+            "-___-"
+        ],
+        "keywords": [
+            "mad",
+            "smiley",
+            "neutral",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "unamused": {
+        "unicode": "1f612",
+        "unicode_alternates": "",
+        "name": "unamused face",
+        "shortname": ":unamused:",
+        "category": "people",
+        "emoji_order": "33",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "mad",
+            "smiley",
+            "tired",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "rolling_eyes": {
+        "unicode": "1f644",
+        "unicode_alternates": "",
+        "name": "face with rolling eyes",
+        "shortname": ":rolling_eyes:",
+        "category": "people",
+        "emoji_order": "34",
+        "aliases": [
+            ":face_with_rolling_eyes:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "mad",
+            "smiley",
+            "rolling eyes",
+            "emotion",
+            "emotion",
+            "sarcastic",
+            "sarcastic"
+        ]
+    },
+    "thinking": {
+        "unicode": "1f914",
+        "unicode_alternates": "",
+        "name": "thinking face",
+        "shortname": ":thinking:",
+        "category": "people",
+        "emoji_order": "35",
+        "aliases": [
+            ":thinking_face:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "thinking",
+            "boys night",
+            "boys night"
+        ]
+    },
+    "flushed": {
+        "unicode": "1f633",
+        "unicode_alternates": "",
+        "name": "flushed face",
+        "shortname": ":flushed:",
+        "category": "people",
+        "emoji_order": "36",
+        "aliases": [],
+        "aliases_ascii": [
+            ":$",
+            "=$"
+        ],
+        "keywords": [
+            "smiley",
+            "emotion",
+            "emotion",
+            "omg",
+            "omg"
+        ]
+    },
+    "disappointed": {
+        "unicode": "1f61e",
+        "unicode_alternates": "",
+        "name": "disappointed face",
+        "shortname": ":disappointed:",
+        "category": "people",
+        "emoji_order": "37",
+        "aliases": [],
+        "aliases_ascii": [
+            ">:[",
+            ":-(",
+            ":(",
+            ":-[",
+            ":[",
+            "=("
+        ],
+        "keywords": [
+            "sad",
+            "smiley",
+            "tired",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "worried": {
+        "unicode": "1f61f",
+        "unicode_alternates": "",
+        "name": "worried face",
+        "shortname": ":worried:",
+        "category": "people",
+        "emoji_order": "38",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "angry": {
+        "unicode": "1f620",
+        "unicode_alternates": "",
+        "name": "angry face",
+        "shortname": ":angry:",
+        "category": "people",
+        "emoji_order": "39",
+        "aliases": [],
+        "aliases_ascii": [
+            ">:(",
+            ">:-(",
+            ":@"
+        ],
+        "keywords": [
+            "mad",
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "rage": {
+        "unicode": "1f621",
+        "unicode_alternates": "",
+        "name": "pouting face",
+        "shortname": ":rage:",
+        "category": "people",
+        "emoji_order": "40",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "mad",
+            "smiley",
+            "angry",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "pensive": {
+        "unicode": "1f614",
+        "unicode_alternates": "",
+        "name": "pensive face",
+        "shortname": ":pensive:",
+        "category": "people",
+        "emoji_order": "41",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "emotion",
+            "emotion",
+            "rip",
+            "rip"
+        ]
+    },
+    "confused": {
+        "unicode": "1f615",
+        "unicode_alternates": "",
+        "name": "confused face",
+        "shortname": ":confused:",
+        "category": "people",
+        "emoji_order": "42",
+        "aliases": [],
+        "aliases_ascii": [
+            ">:\\",
+            ">: /",
+            ": -/",
+            ": -.",
+            ": /",
+            ": \\",
+            "=/",
+            "=\\",
+            ": L",
+            "=L"
+        ],
+        "keywords": [
+            "smiley",
+            "surprised",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "slight_frown": {
+        "unicode": "1f641",
+        "unicode_alternates": "",
+        "name": "slightlyfrowningface",
+        "shortname": ": slight_frown: ",
+        "category": "people",
+        "emoji_order": "43",
+        "aliases": [
+            ": slightly_frowning_face: "
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "frowning2": {
+        "unicode": "2639",
+        "unicode_alternates": "2639-fe0f",
+        "name": "whitefrowningface",
+        "shortname": ": frowning2: ",
+        "category": "people",
+        "emoji_order": "44",
+        "aliases": [
+            ": white_frowning_face: "
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "persevere": {
+        "unicode": "1f623",
+        "unicode_alternates": "",
+        "name": "perseveringface",
+        "shortname": ": persevere: ",
+        "category": "people",
+        "emoji_order": "45",
+        "aliases": [],
+        "aliases_ascii": [
+            ">.<"
+        ],
+        "keywords": [
+            "sad",
+            "smiley",
+            "angry",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "confounded": {
+        "unicode": "1f616",
+        "unicode_alternates": "",
+        "name": "confoundedface",
+        "shortname": ": confounded: ",
+        "category": "people",
+        "emoji_order": "46",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "angry",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "tired_face": {
+        "unicode": "1f62b",
+        "unicode_alternates": "",
+        "name": "tiredface",
+        "shortname": ": tired_face: ",
+        "category": "people",
+        "emoji_order": "47",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "tired",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "weary": {
+        "unicode": "1f629",
+        "unicode_alternates": "",
+        "name": "wearyface",
+        "shortname": ": weary: ",
+        "category": "people",
+        "emoji_order": "48",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "tired",
+            "stressed",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "triumph": {
+        "unicode": "1f624",
+        "unicode_alternates": "",
+        "name": "facewithlookoftriumph",
+        "shortname": ": triumph: ",
+        "category": "people",
+        "emoji_order": "49",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "mad",
+            "smiley",
+            "angry",
+            "emotion",
+            "emotion",
+            "steam",
+            "steam"
+        ]
+    },
+    "open_mouth": {
+        "unicode": "1f62e",
+        "unicode_alternates": "",
+        "name": "facewithopenmouth",
+        "shortname": ": open_mouth: ",
+        "category": "people",
+        "emoji_order": "50",
+        "aliases": [],
+        "aliases_ascii": [
+            ": -O",
+            ": O",
+            ": -o",
+            ": o",
+            "O_O",
+            ">: O"
+        ],
+        "keywords": [
+            "smiley",
+            "surprised",
+            "wow",
+            "wow",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "scream": {
+        "unicode": "1f631",
+        "unicode_alternates": "",
+        "name": "facescreaminginfear",
+        "shortname": ": scream: ",
+        "category": "people",
+        "emoji_order": "51",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "surprised",
+            "wow",
+            "wow",
+            "emotion",
+            "emotion",
+            "omg",
+            "omg"
+        ]
+    },
+    "fearful": {
+        "unicode": "1f628",
+        "unicode_alternates": "",
+        "name": "fearfulface",
+        "shortname": ": fearful: ",
+        "category": "people",
+        "emoji_order": "52",
+        "aliases": [],
+        "aliases_ascii": [
+            "D: "
+        ],
+        "keywords": [
+            "smiley",
+            "surprised",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "cold_sweat": {
+        "unicode": "1f630",
+        "unicode_alternates": "",
+        "name": "facewithopenmouthandcoldsweat",
+        "shortname": ": cold_sweat: ",
+        "category": "people",
+        "emoji_order": "53",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "sweat",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "hushed": {
+        "unicode": "1f62f",
+        "unicode_alternates": "",
+        "name": "hushedface",
+        "shortname": ": hushed: ",
+        "category": "people",
+        "emoji_order": "54",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "surprised",
+            "wow",
+            "wow"
+        ]
+    },
+    "frowning": {
+        "unicode": "1f626",
+        "unicode_alternates": "",
+        "name": "frowningfacewithopenmouth",
+        "shortname": ": frowning: ",
+        "category": "people",
+        "emoji_order": "55",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "surprised",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "anguished": {
+        "unicode": "1f627",
+        "unicode_alternates": "",
+        "name": "anguishedface",
+        "shortname": ": anguished: ",
+        "category": "people",
+        "emoji_order": "56",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "surprised",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "cry": {
+        "unicode": "1f622",
+        "unicode_alternates": "",
+        "name": "cryingface",
+        "shortname": ": cry: ",
+        "category": "people",
+        "emoji_order": "57",
+        "aliases": [],
+        "aliases_ascii": [
+            ": '(",
+            ":'-(",
+            ";(",
+            ";-("
+        ],
+        "keywords": [
+            "sad",
+            "smiley",
+            "cry",
+            "emotion",
+            "emotion",
+            "rip",
+            "rip",
+            "heartbreak",
+            "heartbreak"
+        ]
+    },
+    "disappointed_relieved": {
+        "unicode": "1f625",
+        "unicode_alternates": "",
+        "name": "disappointedbutrelievedface",
+        "shortname": ": disappointed_relieved: ",
+        "category": "people",
+        "emoji_order": "58",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "stressed",
+            "sweat",
+            "cry",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "sleepy": {
+        "unicode": "1f62a",
+        "unicode_alternates": "",
+        "name": "sleepyface",
+        "shortname": ": sleepy: ",
+        "category": "people",
+        "emoji_order": "59",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "sick",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "sweat": {
+        "unicode": "1f613",
+        "unicode_alternates": "",
+        "name": "facewithcoldsweat",
+        "shortname": ": sweat: ",
+        "category": "people",
+        "emoji_order": "60",
+        "aliases": [],
+        "aliases_ascii": [
+            "':(",
+            "': -(",
+            "'=("
+        ],
+        "keywords": [
+            "sad",
+            "smiley",
+            "stressed",
+            "sweat",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "sob": {
+        "unicode": "1f62d",
+        "unicode_alternates": "",
+        "name": "loudly crying face",
+        "shortname": ":sob:",
+        "category": "people",
+        "emoji_order": "61",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "sad",
+            "smiley",
+            "cry",
+            "emotion",
+            "emotion",
+            "heartbreak",
+            "heartbreak"
+        ]
+    },
+    "dizzy_face": {
+        "unicode": "1f635",
+        "unicode_alternates": "",
+        "name": "dizzy face",
+        "shortname": ":dizzy_face:",
+        "category": "people",
+        "emoji_order": "62",
+        "aliases": [],
+        "aliases_ascii": [
+            "#-)",
+            "#)",
+            "%-)",
+            "%)",
+            "X)",
+            "X-)"
+        ],
+        "keywords": [
+            "smiley",
+            "surprised",
+            "dead",
+            "wow",
+            "wow",
+            "emotion",
+            "emotion",
+            "omg",
+            "omg"
+        ]
+    },
+    "astonished": {
+        "unicode": "1f632",
+        "unicode_alternates": "",
+        "name": "astonished face",
+        "shortname": ":astonished:",
+        "category": "people",
+        "emoji_order": "63",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "surprised",
+            "wow",
+            "wow",
+            "emotion",
+            "emotion",
+            "omg",
+            "omg"
+        ]
+    },
+    "zipper_mouth": {
+        "unicode": "1f910",
+        "unicode_alternates": "",
+        "name": "zipper-mouth face",
+        "shortname": ":zipper_mouth:",
+        "category": "people",
+        "emoji_order": "64",
+        "aliases": [
+            ":zipper_mouth_face:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "mad",
+            "smiley"
+        ]
+    },
+    "mask": {
+        "unicode": "1f637",
+        "unicode_alternates": "",
+        "name": "face with medical mask",
+        "shortname": ":mask:",
+        "category": "people",
+        "emoji_order": "65",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "dead",
+            "health",
+            "sick"
+        ]
+    },
+    "thermometer_face": {
+        "unicode": "1f912",
+        "unicode_alternates": "",
+        "name": "face with thermometer",
+        "shortname": ":thermometer_face:",
+        "category": "people",
+        "emoji_order": "66",
+        "aliases": [
+            ":face_with_thermometer:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "health",
+            "sick",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "head_bandage": {
+        "unicode": "1f915",
+        "unicode_alternates": "",
+        "name": "face with head-bandage",
+        "shortname": ":head_bandage:",
+        "category": "people",
+        "emoji_order": "67",
+        "aliases": [
+            ":face_with_head_bandage:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "health",
+            "sick",
+            "emotion",
+            "emotion"
+        ]
+    },
+    "sleeping": {
+        "unicode": "1f634",
+        "unicode_alternates": "",
+        "name": "sleeping face",
+        "shortname": ":sleeping:",
+        "category": "people",
+        "emoji_order": "68",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "tired",
+            "emotion",
+            "emotion",
+            "goodnight",
+            "goodnight"
+        ]
+    },
+    "zzz": {
+        "unicode": "1f4a4",
+        "unicode_alternates": "",
+        "name": "sleeping symbol",
+        "shortname": ":zzz:",
+        "category": "people",
+        "emoji_order": "69",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "tired",
+            "goodnight",
+            "goodnight"
+        ]
+    },
+    "poop": {
+        "unicode": "1f4a9",
+        "unicode_alternates": "",
+        "name": "pile of poo",
+        "shortname": ":poop:",
+        "category": "people",
+        "emoji_order": "70",
+        "aliases": [
+            ":shit:",
+            ":hankey:",
+            ":poo:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "bathroom",
+            "shit",
+            "sol",
+            "sol",
+            "diarrhea",
+            "diarrhea"
+        ]
+    },
+    "smiling_imp": {
+        "unicode": "1f608",
+        "unicode_alternates": "",
+        "name": "smiling face with horns",
+        "shortname": ":smiling_imp:",
+        "category": "people",
+        "emoji_order": "71",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "silly",
+            "smiley",
+            "angry",
+            "monster",
+            "devil",
+            "devil",
+            "boys night",
+            "boys night"
+        ]
+    },
+    "imp": {
+        "unicode": "1f47f",
+        "unicode_alternates": "",
+        "name": "imp",
+        "shortname": ":imp:",
+        "category": "people",
+        "emoji_order": "72",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "smiley",
+            "monster",
+            "devil",
+            "devil",
+            "wth",
+            "wth"
+        ]
+    },
+    "japanese_ogre": {
+        "unicode": "1f479",
+        "unicode_alternates": "",
+        "name": "japanese ogre",
+        "shortname": ":japanese_ogre:",
+        "category": "people",
+        "emoji_order": "73",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "monster"
+        ]
+    },
+    "japanese_goblin": {
+        "unicode": "1f47a",
+        "unicode_alternates": "",
+        "name": "japanese goblin",
+        "shortname": ":japanese_goblin:",
+        "category": "people",
+        "emoji_order": "74",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "angry",
+            "monster"
+        ]
+    },
+    "skull": {
+        "unicode": "1f480",
+        "unicode_alternates": "",
+        "name": "skull",
+        "shortname": ":skull:",
+        "category": "people",
+        "emoji_order": "75",
+        "aliases": [
+            ":skeleton:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "dead",
+            "halloween",
+            "skull"
+        ]
+    },
+    "ghost": {
+        "unicode": "1f47b",
+        "unicode_alternates": "",
+        "name": "ghost",
+        "shortname": ":ghost:",
+        "category": "people",
+        "emoji_order": "76",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "holidays",
+            "halloween",
+            "monster"
+        ]
+    },
+    "alien": {
+        "unicode": "1f47d",
+        "unicode_alternates": "",
+        "name": "extraterrestrial alien",
+        "shortname": ":alien:",
+        "category": "people",
+        "emoji_order": "77",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "space",
+            "monster",
+            "alien",
+            "scientology",
+            "scientology"
+        ]
+    },
+    "robot": {
+        "unicode": "1f916",
+        "unicode_alternates": "",
+        "name": "robot face",
+        "shortname": ":robot:",
+        "category": "people",
+        "emoji_order": "78",
+        "aliases": [
+            ":robot_face:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "monster",
+            "robot"
+        ]
+    },
+    "smiley_cat": {
+        "unicode": "1f63a",
+        "unicode_alternates": "",
+        "name": "smiling cat face with open mouth",
+        "shortname": ":smiley_cat:",
+        "category": "people",
+        "emoji_order": "79",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "cat",
+            "cat",
+            "animal",
+            "animal"
+        ]
+    },
+    "smile_cat": {
+        "unicode": "1f638",
+        "unicode_alternates": "",
+        "name": "grinning cat face with smiling eyes",
+        "shortname": ":smile_cat:",
+        "category": "people",
+        "emoji_order": "80",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "cat",
+            "cat",
+            "animal",
+            "animal"
+        ]
+    },
+    "joy_cat": {
+        "unicode": "1f639",
+        "unicode_alternates": "",
+        "name": "cat face with tears of joy",
+        "shortname": ":joy_cat:",
+        "category": "people",
+        "emoji_order": "81",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "happy",
+            "silly",
+            "cry",
+            "laugh",
+            "laugh",
+            "cat",
+            "cat",
+            "animal",
+            "animal",
+            "sarcastic",
+            "sarcastic"
+        ]
+    },
+    "heart_eyes_cat": {
+        "unicode": "1f63b",
+        "unicode_alternates": "",
+        "name": "smiling cat face with heart-shaped eyes",
+        "shortname": ":heart_eyes_cat:",
+        "category": "people",
+        "emoji_order": "82",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "heart eyes",
+            "cat",
+            "cat",
+            "animal",
+            "animal",
+            "beautiful",
+            "beautiful"
+        ]
+    },
+    "smirk_cat": {
+        "unicode": "1f63c",
+        "unicode_alternates": "",
+        "name": "cat face with wry smile",
+        "shortname": ":smirk_cat:",
+        "category": "people",
+        "emoji_order": "83",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "cat",
+            "cat",
+            "animal",
+            "animal"
+        ]
+    },
+    "kissing_cat": {
+        "unicode": "1f63d",
+        "unicode_alternates": "",
+        "name": "kissing cat face with closed eyes",
+        "shortname": ":kissing_cat:",
+        "category": "people",
+        "emoji_order": "84",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "cat",
+            "cat",
+            "animal",
+            "animal"
+        ]
+    },
+    "scream_cat": {
+        "unicode": "1f640",
+        "unicode_alternates": "",
+        "name": "weary cat face",
+        "shortname": ":scream_cat:",
+        "category": "people",
+        "emoji_order": "85",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "cat",
+            "cat",
+            "animal",
+            "animal"
+        ]
+    },
+    "crying_cat_face": {
+        "unicode": "1f63f",
+        "unicode_alternates": "",
+        "name": "crying cat face",
+        "shortname": ":crying_cat_face:",
+        "category": "people",
+        "emoji_order": "86",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "cry",
+            "cat",
+            "cat",
+            "animal",
+            "animal"
+        ]
+    },
+    "pouting_cat": {
+        "unicode": "1f63e",
+        "unicode_alternates": "",
+        "name": "pouting cat face",
+        "shortname": ":pouting_cat:",
+        "category": "people",
+        "emoji_order": "87",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "cat",
+            "cat",
+            "animal",
+            "animal"
+        ]
+    },
+    "raised_hands": {
+        "unicode": "1f64c",
+        "unicode_alternates": "",
+        "name": "person raising both hands in celebration",
+        "shortname": ":raised_hands:",
+        "category": "people",
+        "emoji_order": "88",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "diversity",
+            "diversity",
+            "perfect",
+            "perfect",
+            "good",
+            "good",
+            "parties",
+            "parties"
+        ]
+    },
+    "clap": {
+        "unicode": "1f44f",
+        "unicode_alternates": "",
+        "name": "clapping hands sign",
+        "shortname": ":clap:",
+        "category": "people",
+        "emoji_order": "89",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "win",
+            "win",
+            "diversity",
+            "diversity",
+            "good",
+            "good",
+            "beautiful",
+            "beautiful"
+        ]
+    },
+    "wave": {
+        "unicode": "1f44b",
+        "unicode_alternates": "",
+        "name": "waving hand sign",
+        "shortname": ":wave:",
+        "category": "people",
+        "emoji_order": "90",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "thumbsup": {
+        "unicode": "1f44d",
+        "unicode_alternates": "",
+        "name": "thumbs up sign",
+        "shortname": ":thumbsup:",
+        "category": "people",
+        "emoji_order": "91",
+        "aliases": [
+            ":+1:",
+            ":thumbup:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "luck",
+            "thank you",
+            "diversity",
+            "diversity",
+            "perfect",
+            "perfect",
+            "good",
+            "good",
+            "beautiful",
+            "beautiful"
+        ]
+    },
+    "thumbsdown": {
+        "unicode": "1f44e",
+        "unicode_alternates": "",
+        "name": "thumbs down sign",
+        "shortname": ":thumbsdown:",
+        "category": "people",
+        "emoji_order": "92",
+        "aliases": [
+            ":-1:",
+            ":thumbdown:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "punch": {
+        "unicode": "1f44a",
+        "unicode_alternates": "",
+        "name": "fisted hand sign",
+        "shortname": ":punch:",
+        "category": "people",
+        "emoji_order": "93",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "fist bump",
+            "diversity",
+            "diversity",
+            "boys night",
+            "boys night"
+        ]
+    },
+    "fist": {
+        "unicode": "270a",
+        "unicode_alternates": "",
+        "name": "raised fist",
+        "shortname": ":fist:",
+        "category": "people",
+        "emoji_order": "94",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "fist bump",
+            "diversity",
+            "diversity",
+            "condolence",
+            "condolence"
+        ]
+    },
+    "v": {
+        "unicode": "270c",
+        "unicode_alternates": "270c-fe0f",
+        "name": "victory hand",
+        "shortname": ":v:",
+        "category": "people",
+        "emoji_order": "95",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "thank you",
+            "peace",
+            "peace",
+            "diversity",
+            "diversity",
+            "girls night",
+            "girls night"
+        ]
+    },
+    "ok_hand": {
+        "unicode": "1f44c",
+        "unicode_alternates": "",
+        "name": "ok hand sign",
+        "shortname": ":ok_hand:",
+        "category": "people",
+        "emoji_order": "96",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "diversity",
+            "diversity",
+            "perfect",
+            "perfect",
+            "good",
+            "good",
+            "beautiful",
+            "beautiful"
+        ]
+    },
+    "raised_hand": {
+        "unicode": "270b",
+        "unicode_alternates": "",
+        "name": "raised hand",
+        "shortname": ":raised_hand:",
+        "category": "people",
+        "emoji_order": "97",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "diversity",
+            "diversity",
+            "girls night",
+            "girls night"
+        ]
+    },
+    "open_hands": {
+        "unicode": "1f450",
+        "unicode_alternates": "",
+        "name": "open hands sign",
+        "shortname": ":open_hands:",
+        "category": "people",
+        "emoji_order": "98",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "diversity",
+            "diversity",
+            "condolence",
+            "condolence"
+        ]
+    },
+    "muscle": {
+        "unicode": "1f4aa",
+        "unicode_alternates": "",
+        "name": "flexed biceps",
+        "shortname": ":muscle:",
+        "category": "people",
+        "emoji_order": "99",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "workout",
+            "flex",
+            "win",
+            "win",
+            "diversity",
+            "diversity",
+            "feminist",
+            "feminist",
+            "boys night",
+            "boys night"
+        ]
+    },
+    "pray": {
+        "unicode": "1f64f",
+        "unicode_alternates": "",
+        "name": "person with folded hands",
+        "shortname": ":pray:",
+        "category": "people",
+        "emoji_order": "100",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "luck",
+            "thank you",
+            "pray",
+            "pray",
+            "diversity",
+            "diversity",
+            "scientology",
+            "scientology"
+        ]
+    },
+    "point_up": {
+        "unicode": "261d",
+        "unicode_alternates": "261d-fe0f",
+        "name": "white up pointing index",
+        "shortname": ":point_up:",
+        "category": "people",
+        "emoji_order": "101",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "emojione",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "point_up_2": {
+        "unicode": "1f446",
+        "unicode_alternates": "",
+        "name": "white up pointing backhand index",
+        "shortname": ":point_up_2:",
+        "category": "people",
+        "emoji_order": "102",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "point_down": {
+        "unicode": "1f447",
+        "unicode_alternates": "",
+        "name": "white down pointing backhand index",
+        "shortname": ":point_down:",
+        "category": "people",
+        "emoji_order": "103",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "point_left": {
+        "unicode": "1f448",
+        "unicode_alternates": "",
+        "name": "white left pointing backhand index",
+        "shortname": ":point_left:",
+        "category": "people",
+        "emoji_order": "104",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "point_right": {
+        "unicode": "1f449",
+        "unicode_alternates": "",
+        "name": "white right pointing backhand index",
+        "shortname": ":point_right:",
+        "category": "people",
+        "emoji_order": "105",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "middle_finger": {
+        "unicode": "1f595",
+        "unicode_alternates": "",
+        "name": "reversed hand with middle finger extended",
+        "shortname": ":middle_finger:",
+        "category": "people",
+        "emoji_order": "106",
+        "aliases": [
+            ":reversed_hand_with_middle_finger_extended:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "middle finger",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "hand_splayed": {
+        "unicode": "1f590",
+        "unicode_alternates": "1f590-fe0f",
+        "name": "raised hand with fingers splayed",
+        "shortname": ":hand_splayed:",
+        "category": "people",
+        "emoji_order": "107",
+        "aliases": [
+            ":raised_hand_with_fingers_splayed:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "metal": {
+        "unicode": "1f918",
+        "unicode_alternates": "",
+        "name": "sign of the horns",
+        "shortname": ":metal:",
+        "category": "people",
+        "emoji_order": "108",
+        "aliases": [
+            ":sign_of_the_horns:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "diversity",
+            "diversity",
+            "boys night",
+            "boys night",
+            "parties",
+            "parties"
+        ]
+    },
+    "vulcan": {
+        "unicode": "1f596",
+        "unicode_alternates": "",
+        "name": "raised hand with part between middle and ring fingers",
+        "shortname": ":vulcan:",
+        "category": "people",
+        "emoji_order": "109",
+        "aliases": [
+            ":raised_hand_with_part_between_middle_and_ring_fingers:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "hi",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "writing_hand": {
+        "unicode": "270d",
+        "unicode_alternates": "270d-fe0f",
+        "name": "writing hand",
+        "shortname": ":writing_hand:",
+        "category": "people",
+        "emoji_order": "110",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "hands",
+            "write",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "nail_care": {
+        "unicode": "1f485",
+        "unicode_alternates": "",
+        "name": "nail polish",
+        "shortname": ":nail_care:",
+        "category": "people",
+        "emoji_order": "111",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "women",
+            "body",
+            "hands",
+            "nailpolish",
+            "diversity",
+            "diversity",
+            "girls night",
+            "girls night"
+        ]
+    },
+    "lips": {
+        "unicode": "1f444",
+        "unicode_alternates": "",
+        "name": "mouth",
+        "shortname": ":lips:",
+        "category": "people",
+        "emoji_order": "112",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "women",
+            "body",
+            "sexy",
+            "lip"
+        ]
+    },
+    "tongue": {
+        "unicode": "1f445",
+        "unicode_alternates": "",
+        "name": "tongue",
+        "shortname": ":tongue:",
+        "category": "people",
+        "emoji_order": "113",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "sexy",
+            "lip"
+        ]
+    },
+    "ear": {
+        "unicode": "1f442",
+        "unicode_alternates": "",
+        "name": "ear",
+        "shortname": ":ear:",
+        "category": "people",
+        "emoji_order": "114",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "nose": {
+        "unicode": "1f443",
+        "unicode_alternates": "",
+        "name": "nose",
+        "shortname": ":nose:",
+        "category": "people",
+        "emoji_order": "115",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "eye": {
+        "unicode": "1f441",
+        "unicode_alternates": "1f441-fe0f",
+        "name": "eye",
+        "shortname": ":eye:",
+        "category": "people",
+        "emoji_order": "116",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "eyes"
+        ]
+    },
+    "eyes": {
+        "unicode": "1f440",
+        "unicode_alternates": "",
+        "name": "eyes",
+        "shortname": ":eyes:",
+        "category": "people",
+        "emoji_order": "117",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "body",
+            "eyes"
+        ]
+    },
+    "bust_in_silhouette": {
+        "unicode": "1f464",
+        "unicode_alternates": "",
+        "name": "bust in silhouette",
+        "shortname": ":bust_in_silhouette:",
+        "category": "people",
+        "emoji_order": "118",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people"
+        ]
+    },
+    "busts_in_silhouette": {
+        "unicode": "1f465",
+        "unicode_alternates": "",
+        "name": "busts in silhouette",
+        "shortname": ":busts_in_silhouette:",
+        "category": "people",
+        "emoji_order": "119",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people"
+        ]
+    },
+    "speaking_head": {
+        "unicode": "1f5e3",
+        "unicode_alternates": "1f5e3-fe0f",
+        "name": "speaking head in silhouette",
+        "shortname": ":speaking_head:",
+        "category": "people",
+        "emoji_order": "120",
+        "aliases": [
+            ":speaking_head_in_silhouette:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "talk"
+        ]
+    },
+    "baby": {
+        "unicode": "1f476",
+        "unicode_alternates": "",
+        "name": "baby",
+        "shortname": ":baby:",
+        "category": "people",
+        "emoji_order": "121",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "baby",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "boy": {
+        "unicode": "1f466",
+        "unicode_alternates": "",
+        "name": "boy",
+        "shortname": ":boy:",
+        "category": "people",
+        "emoji_order": "122",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "baby",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "girl": {
+        "unicode": "1f467",
+        "unicode_alternates": "",
+        "name": "girl",
+        "shortname": ":girl:",
+        "category": "people",
+        "emoji_order": "123",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "baby",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "man": {
+        "unicode": "1f468",
+        "unicode_alternates": "",
+        "name": "man",
+        "shortname": ":man:",
+        "category": "people",
+        "emoji_order": "124",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "men",
+            "sex",
+            "diversity",
+            "diversity",
+            "selfie",
+            "selfie",
+            "boys night",
+            "boys night"
+        ]
+    },
+    "woman": {
+        "unicode": "1f469",
+        "unicode_alternates": "",
+        "name": "woman",
+        "shortname": ":woman:",
+        "category": "people",
+        "emoji_order": "125",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "sex",
+            "diversity",
+            "diversity",
+            "feminist",
+            "feminist",
+            "selfie",
+            "selfie",
+            "girls night",
+            "girls night"
+        ]
+    },
+    "person_with_blond_hair": {
+        "unicode": "1f471",
+        "unicode_alternates": "",
+        "name": "person with blond hair",
+        "shortname": ":person_with_blond_hair:",
+        "category": "people",
+        "emoji_order": "126",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "men",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "older_man": {
+        "unicode": "1f474",
+        "unicode_alternates": "",
+        "name": "older man",
+        "shortname": ":older_man:",
+        "category": "people",
+        "emoji_order": "127",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "men",
+            "old people",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "older_woman": {
+        "unicode": "1f475",
+        "unicode_alternates": "",
+        "name": "older woman",
+        "shortname": ":older_woman:",
+        "category": "people",
+        "emoji_order": "128",
+        "aliases": [
+            ":grandma:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "old people",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "man_with_gua_pi_mao": {
+        "unicode": "1f472",
+        "unicode_alternates": "",
+        "name": "man with gua pi mao",
+        "shortname": ":man_with_gua_pi_mao:",
+        "category": "people",
+        "emoji_order": "129",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "hat",
+            "men",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "man_with_turban": {
+        "unicode": "1f473",
+        "unicode_alternates": "",
+        "name": "man with turban",
+        "shortname": ":man_with_turban:",
+        "category": "people",
+        "emoji_order": "130",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "hat",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "cop": {
+        "unicode": "1f46e",
+        "unicode_alternates": "",
+        "name": "police officer",
+        "shortname": ":cop:",
+        "category": "people",
+        "emoji_order": "131",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "hat",
+            "men",
+            "diversity",
+            "diversity",
+            "job",
+            "job",
+            "police",
+            "police",
+            "911",
+            "911"
+        ]
+    },
+    "construction_worker": {
+        "unicode": "1f477",
+        "unicode_alternates": "",
+        "name": "construction worker",
+        "shortname": ":construction_worker:",
+        "category": "people",
+        "emoji_order": "132",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "hat",
+            "men",
+            "diversity",
+            "diversity",
+            "job",
+            "job"
+        ]
+    },
+    "guardsman": {
+        "unicode": "1f482",
+        "unicode_alternates": "",
+        "name": "guardsman",
+        "shortname": ":guardsman:",
+        "category": "people",
+        "emoji_order": "133",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "hat",
+            "men",
+            "diversity",
+            "diversity",
+            "job",
+            "job"
+        ]
+    },
+    "spy": {
+        "unicode": "1f575",
+        "unicode_alternates": "1f575-fe0f",
+        "name": "sleuth or spy",
+        "shortname": ":spy:",
+        "category": "people",
+        "emoji_order": "134",
+        "aliases": [
+            ":sleuth_or_spy:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "hat",
+            "men",
+            "glasses",
+            "diversity",
+            "diversity",
+            "job",
+            "job"
+        ]
+    },
+    "santa": {
+        "unicode": "1f385",
+        "unicode_alternates": "",
+        "name": "father christmas",
+        "shortname": ":santa:",
+        "category": "people",
+        "emoji_order": "135",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "hat",
+            "winter",
+            "holidays",
+            "christmas",
+            "diversity",
+            "diversity",
+            "santa",
+            "santa"
+        ]
+    },
+    "angel": {
+        "unicode": "1f47c",
+        "unicode_alternates": "",
+        "name": "baby angel",
+        "shortname": ":angel:",
+        "category": "people",
+        "emoji_order": "136",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "diversity",
+            "diversity",
+            "omg",
+            "omg"
+        ]
+    },
+    "princess": {
+        "unicode": "1f478",
+        "unicode_alternates": "",
+        "name": "princess",
+        "shortname": ":princess:",
+        "category": "people",
+        "emoji_order": "137",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "diversity",
+            "diversity",
+            "beautiful",
+            "beautiful",
+            "girls night",
+            "girls night"
+        ]
+    },
+    "bride_with_veil": {
+        "unicode": "1f470",
+        "unicode_alternates": "",
+        "name": "bride with veil",
+        "shortname": ":bride_with_veil:",
+        "category": "people",
+        "emoji_order": "138",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "wedding",
+            "women",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "walking": {
+        "unicode": "1f6b6",
+        "unicode_alternates": "",
+        "name": "pedestrian",
+        "shortname": ":walking:",
+        "category": "people",
+        "emoji_order": "139",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "men",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "runner": {
+        "unicode": "1f3c3",
+        "unicode_alternates": "",
+        "name": "runner",
+        "shortname": ":runner:",
+        "category": "people",
+        "emoji_order": "140",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "men",
+            "diversity",
+            "diversity",
+            "boys night",
+            "boys night",
+            "run",
+            "run"
+        ]
+    },
+    "dancer": {
+        "unicode": "1f483",
+        "unicode_alternates": "",
+        "name": "dancer",
+        "shortname": ":dancer:",
+        "category": "people",
+        "emoji_order": "141",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "sexy",
+            "diversity",
+            "diversity",
+            "girls night",
+            "girls night",
+            "dance",
+            "dance"
+        ]
+    },
+    "dancers": {
+        "unicode": "1f46f",
+        "unicode_alternates": "",
+        "name": "woman with bunny ears",
+        "shortname": ":dancers:",
+        "category": "people",
+        "emoji_order": "142",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "sexy",
+            "girls night",
+            "girls night",
+            "boys night",
+            "boys night",
+            "parties",
+            "parties",
+            "dance",
+            "dance"
+        ]
+    },
+    "couple": {
+        "unicode": "1f46b",
+        "unicode_alternates": "",
+        "name": "man and woman holding hands",
+        "shortname": ":couple:",
+        "category": "people",
+        "emoji_order": "143",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "sex",
+            "creationism",
+            "creationism"
+        ]
+    },
+    "two_men_holding_hands": {
+        "unicode": "1f46c",
+        "unicode_alternates": "",
+        "name": "two men holding hands",
+        "shortname": ":two_men_holding_hands:",
+        "category": "people",
+        "emoji_order": "144",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "gay",
+            "men",
+            "sex",
+            "lgbt",
+            "lgbt"
+        ]
+    },
+    "two_women_holding_hands": {
+        "unicode": "1f46d",
+        "unicode_alternates": "",
+        "name": "two women holding hands",
+        "shortname": ":two_women_holding_hands:",
+        "category": "people",
+        "emoji_order": "145",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "sex",
+            "lgbt",
+            "lgbt",
+            "lesbian",
+            "lesbian",
+            "girls night",
+            "girls night"
+        ]
+    },
+    "bow": {
+        "unicode": "1f647",
+        "unicode_alternates": "",
+        "name": "person bowing deeply",
+        "shortname": ":bow:",
+        "category": "people",
+        "emoji_order": "146",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "pray",
+            "pray",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "information_desk_person": {
+        "unicode": "1f481",
+        "unicode_alternates": "",
+        "name": "information desk person",
+        "shortname": ":information_desk_person:",
+        "category": "people",
+        "emoji_order": "147",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "no_good": {
+        "unicode": "1f645",
+        "unicode_alternates": "",
+        "name": "face with no good gesture",
+        "shortname": ":no_good:",
+        "category": "people",
+        "emoji_order": "148",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "diversity",
+            "diversity",
+            "girls night",
+            "girls night"
+        ]
+    },
+    "ok_woman": {
+        "unicode": "1f646",
+        "unicode_alternates": "",
+        "name": "face with ok gesture",
+        "shortname": ":ok_woman:",
+        "category": "people",
+        "emoji_order": "149",
+        "aliases": [],
+        "aliases_ascii": [
+            "*\\0/*",
+            "\\0/",
+            "*\\O/*",
+            "\\O/"
+        ],
+        "keywords": [
+            "people",
+            "women",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "raising_hand": {
+        "unicode": "1f64b",
+        "unicode_alternates": "",
+        "name": "happy person raising one hand",
+        "shortname": ":raising_hand:",
+        "category": "people",
+        "emoji_order": "150",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "person_with_pouting_face": {
+        "unicode": "1f64e",
+        "unicode_alternates": "",
+        "name": "person with pouting face",
+        "shortname": ":person_with_pouting_face:",
+        "category": "people",
+        "emoji_order": "151",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "person_frowning": {
+        "unicode": "1f64d",
+        "unicode_alternates": "",
+        "name": "person frowning",
+        "shortname": ":person_frowning:",
+        "category": "people",
+        "emoji_order": "152",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "haircut": {
+        "unicode": "1f487",
+        "unicode_alternates": "",
+        "name": "haircut",
+        "shortname": ":haircut:",
+        "category": "people",
+        "emoji_order": "153",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "massage": {
+        "unicode": "1f486",
+        "unicode_alternates": "",
+        "name": "face massage",
+        "shortname": ":massage:",
+        "category": "people",
+        "emoji_order": "154",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "diversity",
+            "diversity"
+        ]
+    },
+    "couple_with_heart": {
+        "unicode": "1f491",
+        "unicode_alternates": "",
+        "name": "couple with heart",
+        "shortname": ":couple_with_heart:",
+        "category": "people",
+        "emoji_order": "155",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "love",
+            "sex"
+        ]
+    },
+    "couple_ww": {
+        "unicode": "1f469-2764-1f469",
+        "unicode_alternates": "1f469-200d-2764-fe0f-200d-1f469",
+        "name": "couple (woman,woman)",
+        "shortname": ":couple_ww:",
+        "category": "people",
+        "emoji_order": "156",
+        "aliases": [
+            ":couple_with_heart_ww:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "love",
+            "sex",
+            "lgbt",
+            "lgbt"
+        ]
+    },
+    "couple_mm": {
+        "unicode": "1f468-2764-1f468",
+        "unicode_alternates": "1f468-200d-2764-fe0f-200d-1f468",
+        "name": "couple (man,man)",
+        "shortname": ":couple_mm:",
+        "category": "people",
+        "emoji_order": "157",
+        "aliases": [
+            ":couple_with_heart_mm:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "gay",
+            "men",
+            "love",
+            "sex",
+            "lgbt",
+            "lgbt"
+        ]
+    },
+    "couplekiss": {
+        "unicode": "1f48f",
+        "unicode_alternates": "",
+        "name": "kiss",
+        "shortname": ":couplekiss:",
+        "category": "people",
+        "emoji_order": "158",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "love",
+            "sex"
+        ]
+    },
+    "kiss_ww": {
+        "unicode": "1f469-2764-1f48b-1f469",
+        "unicode_alternates": "1f469-200d-2764-fe0f-200d-1f48b-200d-1f469",
+        "name": "kiss (woman,woman)",
+        "shortname": ":kiss_ww:",
+        "category": "people",
+        "emoji_order": "159",
+        "aliases": [
+            ":couplekiss_ww:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "women",
+            "love",
+            "sex",
+            "lgbt",
+            "lgbt",
+            "lesbian",
+            "lesbian"
+        ]
+    },
+    "kiss_mm": {
+        "unicode": "1f468-2764-1f48b-1f468",
+        "unicode_alternates": "1f468-200d-2764-fe0f-200d-1f48b-200d-1f468",
+        "name": "kiss (man,man)",
+        "shortname": ":kiss_mm:",
+        "category": "people",
+        "emoji_order": "160",
+        "aliases": [
+            ":couplekiss_mm:"
+        ],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "gay",
+            "men",
+            "love",
+            "sex",
+            "lgbt",
+            "lgbt"
+        ]
+    },
+    "family": {
+        "unicode": "1f46a",
+        "unicode_alternates": "",
+        "name": "family",
+        "shortname": ":family:",
+        "category": "people",
+        "emoji_order": "161",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "family",
+            "baby"
+        ]
+    },
+    "family_mwg": {
+        "unicode": "1f468-1f469-1f467",
+        "unicode_alternates": "1f468-200d-1f469-200d-1f467",
+        "name": "family (man,woman,girl)",
+        "shortname": ":family_mwg:",
+        "category": "people",
+        "emoji_order": "162",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "family",
+            "baby"
+        ]
+    },
+    "family_mwgb": {
+        "unicode": "1f468-1f469-1f467-1f466",
+        "unicode_alternates": "1f468-200d-1f469-200d-1f467-200d-1f466",
+        "name": "family (man,woman,girl,boy)",
+        "shortname": ":family_mwgb:",
+        "category": "people",
+        "emoji_order": "163",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "family",
+            "baby"
+        ]
+    },
+    "family_mwbb": {
+        "unicode": "1f468-1f469-1f466-1f466",
+        "unicode_alternates": "1f468-200d-1f469-200d-1f466-200d-1f466",
+        "name": "family (man,woman,boy,boy)",
+        "shortname": ":family_mwbb:",
+        "category": "people",
+        "emoji_order": "164",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "family",
+            "baby"
+        ]
+    },
+    "family_mwgg": {
+        "unicode": "1f468-1f469-1f467-1f467",
+        "unicode_alternates": "1f468-200d-1f469-200d-1f467-200d-1f467",
+        "name": "family (man,woman,girl,girl)",
+        "shortname": ":family_mwgg:",
+        "category": "people",
+        "emoji_order": "165",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "family",
+            "baby"
+        ]
+    },
+    "family_wwb": {
+        "unicode": "1f469-1f469-1f466",
+        "unicode_alternates": "1f469-200d-1f469-200d-1f466",
+        "name": "family (woman,woman,boy)",
+        "shortname": ":family_wwb:",
+        "category": "people",
+        "emoji_order": "166",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "family",
+            "women",
+            "baby",
+            "lgbt",
+            "lgbt",
+            "lesbian",
+            "lesbian"
+        ]
+    },
+    "family_wwg": {
+        "unicode": "1f469-1f469-1f467",
+        "unicode_alternates": "1f469-200d-1f469-200d-1f467",
+        "name": "family (woman,woman,girl)",
+        "shortname": ":family_wwg:",
+        "category": "people",
+        "emoji_order": "167",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "family",
+            "women",
+            "baby",
+            "lgbt",
+            "lgbt",
+            "lesbian",
+            "lesbian"
+        ]
+    },
+    "family_wwgb": {
+        "unicode": "1f469-1f469-1f467-1f466",
+        "unicode_alternates": "1f469-200d-1f469-200d-1f467-200d-1f466",
+        "name": "family (woman,woman,girl,boy)",
+        "shortname": ":family_wwgb:",
+        "category": "people",
+        "emoji_order": "168",
+        "aliases": [],
+        "aliases_ascii": [],
+        "keywords": [
+            "people",
+            "family",
+            "women",
+            "baby",
+            "lgbt",
+            "lgbt",
+            "lesbian",
+            "lesbian"
+        ]
+    },

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list