From d4da0d92d193f6586681f8470a4632e1bb3fabf3 Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Mon, 5 Sep 2016 11:26:18 +0200 Subject: [PATCH] Added proper support for HD smilies --- com.woltlab.wcf/smiley.xml | 99 +++++++++----- .../templates/__messageFormSmilies.tpl | 2 +- .../install/files/acp/templates/smileyAdd.tpl | 129 ++++++++++++------ .../files/acp/templates/smileyList.tpl | 2 +- .../files/images/smilies/angry_emojione.png | Bin 845 -> 0 bytes .../images/smilies/attention_emojione.png | Bin 354 -> 0 bytes .../files/images/smilies/biggrin_emojione.png | Bin 767 -> 0 bytes .../files/images/smilies/blink_emojione.png | Bin 862 -> 0 bytes .../images/smilies/confused_emojione.png | Bin 634 -> 0 bytes .../files/images/smilies/cool_emojione.png | Bin 824 -> 0 bytes .../files/images/smilies/crying_emojione.png | Bin 1236 -> 0 bytes .../files/images/smilies/cursing_emojione.png | Bin 845 -> 0 bytes .../files/images/smilies/emojione/1f44d.png | Bin 0 -> 375 bytes .../images/smilies/emojione/1f44d@2x.png | Bin 0 -> 570 bytes .../files/images/smilies/emojione/1f44e.png | Bin 0 -> 376 bytes .../images/smilies/emojione/1f44e@2x.png | Bin 0 -> 567 bytes .../files/images/smilies/emojione/1f600.png | Bin 0 -> 389 bytes .../images/smilies/emojione/1f600@2x.png | Bin 0 -> 637 bytes .../files/images/smilies/emojione/1f601.png | Bin 0 -> 345 bytes .../images/smilies/emojione/1f601@2x.png | Bin 0 -> 600 bytes .../files/images/smilies/emojione/1f607.png | Bin 0 -> 507 bytes .../images/smilies/emojione/1f607@2x.png | Bin 0 -> 764 bytes .../files/images/smilies/emojione/1f608.png | Bin 0 -> 446 bytes .../images/smilies/emojione/1f608@2x.png | Bin 0 -> 821 bytes .../files/images/smilies/emojione/1f609.png | Bin 0 -> 349 bytes .../images/smilies/emojione/1f609@2x.png | Bin 0 -> 571 bytes .../files/images/smilies/emojione/1f60d.png | Bin 0 -> 469 bytes .../images/smilies/emojione/1f60d@2x.png | Bin 0 -> 765 bytes .../files/images/smilies/emojione/1f60e.png | Bin 0 -> 375 bytes .../images/smilies/emojione/1f60e@2x.png | Bin 0 -> 605 bytes .../files/images/smilies/emojione/1f610.png | Bin 0 -> 283 bytes .../images/smilies/emojione/1f610@2x.png | Bin 0 -> 458 bytes .../files/images/smilies/emojione/1f612.png | Bin 0 -> 311 bytes .../images/smilies/emojione/1f612@2x.png | Bin 0 -> 493 bytes .../files/images/smilies/emojione/1f614.png | Bin 0 -> 334 bytes .../images/smilies/emojione/1f614@2x.png | Bin 0 -> 553 bytes .../files/images/smilies/emojione/1f615.png | Bin 0 -> 313 bytes .../images/smilies/emojione/1f615@2x.png | Bin 0 -> 495 bytes .../files/images/smilies/emojione/1f618.png | Bin 0 -> 406 bytes .../images/smilies/emojione/1f618@2x.png | Bin 0 -> 644 bytes .../files/images/smilies/emojione/1f61b.png | Bin 0 -> 373 bytes .../images/smilies/emojione/1f61b@2x.png | Bin 0 -> 611 bytes .../files/images/smilies/emojione/1f61e.png | Bin 0 -> 332 bytes .../images/smilies/emojione/1f61e@2x.png | Bin 0 -> 580 bytes .../files/images/smilies/emojione/1f620.png | Bin 0 -> 371 bytes .../images/smilies/emojione/1f620@2x.png | Bin 0 -> 632 bytes .../files/images/smilies/emojione/1f621.png | Bin 0 -> 378 bytes .../images/smilies/emojione/1f621@2x.png | Bin 0 -> 637 bytes .../files/images/smilies/emojione/1f62b.png | Bin 0 -> 486 bytes .../images/smilies/emojione/1f62b@2x.png | Bin 0 -> 845 bytes .../files/images/smilies/emojione/1f62d.png | Bin 0 -> 520 bytes .../images/smilies/emojione/1f62d@2x.png | Bin 0 -> 899 bytes .../files/images/smilies/emojione/1f62e.png | Bin 0 -> 294 bytes .../images/smilies/emojione/1f62e@2x.png | Bin 0 -> 473 bytes .../files/images/smilies/emojione/1f62f.png | Bin 0 -> 361 bytes .../images/smilies/emojione/1f62f@2x.png | Bin 0 -> 548 bytes .../files/images/smilies/emojione/1f631.png | Bin 0 -> 672 bytes .../images/smilies/emojione/1f631@2x.png | Bin 0 -> 1148 bytes .../files/images/smilies/emojione/1f634.png | Bin 0 -> 506 bytes .../images/smilies/emojione/1f634@2x.png | Bin 0 -> 813 bytes .../files/images/smilies/emojione/1f635.png | Bin 0 -> 360 bytes .../images/smilies/emojione/1f635@2x.png | Bin 0 -> 595 bytes .../files/images/smilies/emojione/1f644.png | Bin 0 -> 397 bytes .../images/smilies/emojione/1f644@2x.png | Bin 0 -> 661 bytes .../files/images/smilies/emojione/1f914.png | Bin 0 -> 604 bytes .../images/smilies/emojione/1f914@2x.png | Bin 0 -> 997 bytes .../files/images/smilies/emojione/1f922.png | Bin 0 -> 411 bytes .../images/smilies/emojione/1f922@2x.png | Bin 0 -> 718 bytes .../files/images/smilies/emojione/2639.png | Bin 0 -> 310 bytes .../files/images/smilies/emojione/2639@2x.png | Bin 0 -> 501 bytes .../files/images/smilies/emojione/263a.png | Bin 0 -> 323 bytes .../files/images/smilies/emojione/263a@2x.png | Bin 0 -> 521 bytes .../files/images/smilies/emojione/2753.png | Bin 0 -> 270 bytes .../files/images/smilies/emojione/2753@2x.png | Bin 0 -> 379 bytes .../files/images/smilies/emojione/2757.png | Bin 0 -> 237 bytes .../files/images/smilies/emojione/2757@2x.png | Bin 0 -> 317 bytes .../files/images/smilies/emojione/2764.png | Bin 0 -> 282 bytes .../files/images/smilies/emojione/2764@2x.png | Bin 0 -> 365 bytes .../files/images/smilies/evil_emojione.png | Bin 1078 -> 0 bytes .../files/images/smilies/grin_emojione.png | Bin 686 -> 0 bytes .../files/images/smilies/heart_emojione.png | Bin 435 -> 0 bytes .../files/images/smilies/huh_emojione.png | Bin 821 -> 0 bytes .../files/images/smilies/kiss_emojione.png | Bin 843 -> 0 bytes .../files/images/smilies/love_emojione.png | Bin 1069 -> 0 bytes .../files/images/smilies/mellow_emojione.png | Bin 517 -> 0 bytes .../files/images/smilies/pinch_emojione.png | Bin 438 -> 0 bytes .../images/smilies/question_emojione.png | Bin 449 -> 0 bytes .../images/smilies/rolleyes_emojione.png | Bin 743 -> 0 bytes .../files/images/smilies/sad_emojione.png | Bin 589 -> 0 bytes .../files/images/smilies/saint_emojione.png | Bin 935 -> 0 bytes .../files/images/smilies/scared_emojione.png | Bin 1002 -> 0 bytes .../files/images/smilies/sick_emojione.png | Bin 965 -> 0 bytes .../images/smilies/sleeping_emojione.png | Bin 1075 -> 0 bytes .../files/images/smilies/smile_emojione.png | Bin 636 -> 0 bytes .../images/smilies/thumbdown_emojione.png | Bin 815 -> 0 bytes .../images/smilies/thumbsup_emojione.png | Bin 1425 -> 0 bytes .../files/images/smilies/thumbup_emojione.png | Bin 814 -> 0 bytes .../files/images/smilies/tired_emojione.png | Bin 718 -> 0 bytes .../files/images/smilies/tongue_emojione.png | Bin 752 -> 0 bytes .../files/images/smilies/unsure_emojione.png | Bin 715 -> 0 bytes .../files/images/smilies/w00t_emojione.png | Bin 1583 -> 0 bytes .../files/images/smilies/wacko_emojione.png | Bin 861 -> 0 bytes .../images/smilies/whistling_emojione.png | Bin 738 -> 0 bytes .../files/images/smilies/wink_emojione.png | Bin 746 -> 0 bytes .../redactor2/plugins/WoltLabSmiley.js | 2 +- wcfsetup/install/files/js/WCF.Message.js | 3 +- .../lib/acp/form/SmileyAddForm.class.php | 63 ++++++++- .../lib/acp/form/SmileyEditForm.class.php | 5 +- .../files/lib/data/smiley/Smiley.class.php | 35 ++++- .../lib/data/smiley/SmileyAction.class.php | 38 ++++-- .../lib/data/smiley/SmileyCache.class.php | 11 ++ .../bbcode/SimpleMessageParser.class.php | 2 +- .../builder/SmileyCacheBuilder.class.php | 9 +- .../filter/MessageHtmlInputFilter.class.php | 1 + .../input/node/HtmlInputNodeImg.class.php | 80 +++++++---- .../output/node/HtmlOutputNodeImg.class.php | 36 ++++- .../SmileyPackageInstallationPlugin.class.php | 1 + wcfsetup/install/lang/de.xml | 2 + wcfsetup/install/lang/en.xml | 2 + wcfsetup/setup/db/install.sql | 1 + 120 files changed, 394 insertions(+), 129 deletions(-) delete mode 100644 wcfsetup/install/files/images/smilies/angry_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/attention_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/biggrin_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/blink_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/confused_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/cool_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/crying_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/cursing_emojione.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f44d.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f44d@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f44e.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f44e@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f600.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f600@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f601.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f601@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f607.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f607@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f608.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f608@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f609.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f609@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f60d.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f60d@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f60e.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f60e@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f610.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f610@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f612.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f612@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f614.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f614@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f615.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f615@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f618.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f618@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f61b.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f61b@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f61e.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f61e@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f620.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f620@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f621.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f621@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f62b.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f62b@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f62d.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f62d@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f62e.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f62e@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f62f.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f62f@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f631.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f631@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f634.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f634@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f635.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f635@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f644.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f644@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f914.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f914@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f922.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/1f922@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/2639.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/2639@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/263a.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/263a@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/2753.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/2753@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/2757.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/2757@2x.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/2764.png create mode 100644 wcfsetup/install/files/images/smilies/emojione/2764@2x.png delete mode 100644 wcfsetup/install/files/images/smilies/evil_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/grin_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/heart_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/huh_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/kiss_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/love_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/mellow_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/pinch_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/question_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/rolleyes_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/sad_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/saint_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/scared_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/sick_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/sleeping_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/smile_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/thumbdown_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/thumbsup_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/thumbup_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/tired_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/tongue_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/unsure_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/w00t_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/wacko_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/whistling_emojione.png delete mode 100644 wcfsetup/install/files/images/smilies/wink_emojione.png diff --git a/com.woltlab.wcf/smiley.xml b/com.woltlab.wcf/smiley.xml index 148459597b..4c0fab48dd 100644 --- a/com.woltlab.wcf/smiley.xml +++ b/com.woltlab.wcf/smiley.xml @@ -3,155 +3,188 @@ smile - images/smilies/smile_emojione.png + images/smilies/emojione/263a.png + images/smilies/emojione/263a@2x.png sad - images/smilies/sad_emojione.png + images/smilies/emojione/2639.png + images/smilies/emojione/2639@2x.png wink - images/smilies/wink_emojione.png + images/smilies/emojione/1f609.png + images/smilies/emojione/1f609@2x.png tongue - images/smilies/tongue_emojione.png + images/smilies/emojione/1f61b.png + images/smilies/emojione/1f61b@2x.png grin - images/smilies/grin_emojione.png + images/smilies/emojione/1f600.png + images/smilies/emojione/1f600@2x.png biggrin - images/smilies/biggrin_emojione.png + images/smilies/emojione/1f601.png + images/smilies/emojione/1f601@2x.png crying - images/smilies/crying_emojione.png + images/smilies/emojione/1f62d.png + images/smilies/emojione/1f62d@2x.png angry - images/smilies/angry_emojione.png + images/smilies/emojione/1f620.png + images/smilies/emojione/1f620@2x.png .< >_<]]> kiss - images/smilies/kiss_emojione.png + images/smilies/emojione/1f618.png + images/smilies/emojione/1f618@2x.png mellow - images/smilies/mellow_emojione.png + images/smilies/emojione/1f610.png + images/smilies/emojione/1f610@2x.png w00t - images/smilies/w00t_emojione.png + images/smilies/emojione/1f62f.png + images/smilies/emojione/1f62f@2x.png scared - images/smilies/scared_emojione.png + images/smilies/emojione/1f631.png + images/smilies/emojione/1f631@2x.png sick - images/smilies/sick_emojione.png + images/smilies/emojione/1f922.png + images/smilies/emojione/1f922@2x.png tired - images/smilies/tired_emojione.png + images/smilies/emojione/1f62b.png + images/smilies/emojione/1f62b@2x.png unsure - images/smilies/unsure_emojione.png + images/smilies/emojione/1f914.png + images/smilies/emojione/1f914@2x.png wacko - images/smilies/wacko_emojione.png + images/smilies/emojione/1f635.png + images/smilies/emojione/1f635@2x.png pinch - images/smilies/pinch_emojione.png + images/smilies/emojione/1f612.png + images/smilies/emojione/1f612@2x.png cool - images/smilies/cool_emojione.png + images/smilies/emojione/1f60e.png + images/smilies/emojione/1f60e@2x.png confused - images/smilies/confused_emojione.png + images/smilies/emojione/1f614.png + images/smilies/emojione/1f614@2x.png Huh - images/smilies/huh_emojione.png + images/smilies/emojione/1f62e.png + images/smilies/emojione/1f62e@2x.png rolleyes - images/smilies/rolleyes_emojione.png + images/smilies/emojione/1f644.png + images/smilies/emojione/1f644@2x.png love - images/smilies/love_emojione.png + images/smilies/emojione/1f60d.png + images/smilies/emojione/1f60d@2x.png blink - images/smilies/blink_emojione.png + images/smilies/emojione/1f615.png + images/smilies/emojione/1f615@2x.png cursing - images/smilies/cursing_emojione.png + images/smilies/emojione/1f621.png + images/smilies/emojione/1f621@2x.png thumbdown - images/smilies/thumbdown_emojione.png + images/smilies/emojione/1f44e.png + images/smilies/emojione/1f44e@2x.png thumbup - images/smilies/thumbup_emojione.png + images/smilies/emojione/1f44d.png + images/smilies/emojione/1f44d@2x.png sleeping - images/smilies/sleeping_emojione.png + images/smilies/emojione/1f634.png + images/smilies/emojione/1f634@2x.png whistling - images/smilies/whistling_emojione.png + images/smilies/emojione/1f61e.png + images/smilies/emojione/1f61e@2x.png evil - images/smilies/evil_emojione.png + images/smilies/emojione/1f608.png + images/smilies/emojione/1f608@2x.png saint - images/smilies/saint_emojione.png + images/smilies/emojione/1f607.png + images/smilies/emojione/1f607@2x.png heart - images/smilies/heart_emojione.png + images/smilies/emojione/2764.png + images/smilies/emojione/2764@2x.png attention - images/smilies/attention_emojione.png + images/smilies/emojione/2757.png + images/smilies/emojione/2757@2x.png question - images/smilies/question_emojione.png + images/smilies/emojione/2753.png + images/smilies/emojione/2753@2x.png diff --git a/com.woltlab.wcf/templates/__messageFormSmilies.tpl b/com.woltlab.wcf/templates/__messageFormSmilies.tpl index 1d38ab5842..bb49b5f545 100644 --- a/com.woltlab.wcf/templates/__messageFormSmilies.tpl +++ b/com.woltlab.wcf/templates/__messageFormSmilies.tpl @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/wcfsetup/install/files/acp/templates/smileyAdd.tpl b/wcfsetup/install/files/acp/templates/smileyAdd.tpl index e77787827e..391495a1cd 100644 --- a/wcfsetup/install/files/acp/templates/smileyAdd.tpl +++ b/wcfsetup/install/files/acp/templates/smileyAdd.tpl @@ -109,49 +109,100 @@

{lang}wcf.acp.smiley.smileyFile{/lang}

- -
-
- {if $uploadedFilename} - - - {/if} - - - {if $errorField == 'fileUpload'} - - {if $errorType == 'empty'} - {lang}wcf.global.form.error.empty{/lang} - {else} - {lang}wcf.acp.smiley.fileUpload.error.{@$errorType}{/lang} - {/if} - - {/if} - {lang}wcf.acp.smiley.fileUpload.description{/lang} -
- - - -
-
- - - {if $errorField == 'smileyPath'} - - {if $errorType == 'empty'} - {lang}wcf.global.form.error.empty{/lang} - {else} - {lang}wcf.acp.smiley.smileyPath.error.{@$errorType}{/lang} - {/if} - - {/if} - {lang}wcf.acp.smiley.smileyPath.description{/lang} -
- +
+
+
+
+ {if $uploadedFilename} + + {/if} + + + {if $errorField == 'fileUpload'} + + {if $errorType == 'empty'} + {lang}wcf.global.form.error.empty{/lang} + {else} + {lang}wcf.acp.smiley.fileUpload.error.{@$errorType}{/lang} + {/if} + + {/if} + {lang}wcf.acp.smiley.fileUpload.description{/lang} +
+
+ +
+
+
+ + + {if $errorField == 'smileyPath'} + + {if $errorType == 'empty'} + {lang}wcf.global.form.error.empty{/lang} + {else} + {lang}wcf.acp.smiley.smileyPath.error.{@$errorType}{/lang} + {/if} + + {/if} + {lang}wcf.acp.smiley.smileyPath.description{/lang} +
+
+
{event name='smileyFileFields'}
+
+
+

{lang}wcf.acp.smiley.smileyFile2x{/lang}

+

{lang}wcf.acp.smiley.smileyFile2x.description{/lang}

+
+ +
+
+
+
+ {if $uploadedFilename2x} + + {/if} + + + {if $errorField == 'fileUpload2x'} + + {if $errorType == 'empty'} + {lang}wcf.global.form.error.empty{/lang} + {else} + {lang}wcf.acp.smiley.fileUpload.error.{@$errorType}{/lang} + {/if} + + {/if} + {lang}wcf.acp.smiley.fileUpload.description{/lang} +
+
+ +
+
+
+ + + {if $errorField == 'smileyPath2x'} + + {if $errorType == 'empty'} + {lang}wcf.global.form.error.empty{/lang} + {else} + {lang}wcf.acp.smiley.smileyPath.error.{@$errorType}{/lang} + {/if} + + {/if} + {lang}wcf.acp.smiley.smileyPath.description{/lang} +
+
+
+ + {event name='smileyFile2xFields'} +
+ {event name='sections'}
diff --git a/wcfsetup/install/files/acp/templates/smileyList.tpl b/wcfsetup/install/files/acp/templates/smileyList.tpl index 9b216af2bd..efd6889daf 100644 --- a/wcfsetup/install/files/acp/templates/smileyList.tpl +++ b/wcfsetup/install/files/acp/templates/smileyList.tpl @@ -47,7 +47,7 @@ {foreach from=$objects item=smiley}
  • - {lang}{$smiley->smileyTitle}{/lang} {$smiley->smileyCode}{foreach from=$smiley->getAliases() item='alias'} {$alias}{/foreach} + {@$smiley->getHtml()} {lang}{$smiley->smileyTitle}{/lang} {$smiley->smileyCode}{foreach from=$smiley->getAliases() item='alias'} {$alias}{/foreach} diff --git a/wcfsetup/install/files/images/smilies/angry_emojione.png b/wcfsetup/install/files/images/smilies/angry_emojione.png deleted file mode 100644 index cfc4a6ecde529cc889a1a24a6532a10b0c804850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!RtNZmxB}__chiYP=Qjjzp61?D zWWKW3`Pg#*H>cwZ!nM=<)c-%M`v3p`&C4f`?OnHd`Q%53qW?eZeRS{o|96}JzghM5 zO7feRPYNPU|Nnfva(3I-FQ1z81OC5S&{GvVe?rC0o#A^nEv!s&`g)`6|Kpbbf4}|z zu=oG{!v9|`{Qv#t|BLDKTkM-NjVlxMJ48N|0-eiW666=mU{ElB|NnsZ0uA>a`W4P^ z*cddAfq}`%)5S5Qg7M5H*QPc_4z`3IagoRWw$J_bJ3Hd+=4sRZtrrMB7VBp?fm8ip zlghGguh5)JQ7@XbZm3Q@XL3|A_xRoNIj>sFdONwFEs%9A=xk}OaBp+nV|`da;>3bh zqeLU_+E)gzy8kn8c6%?9=9RA{qh%}F*ep`a%zbr#<54jQKOb{Wzn8Nw@48Sa-L{Bf zjqC2)_JMPb?Xyfxd$#X?x2Vi(wbIR()HA$}^XNJ3G6)G2nVRJLf8paxU)i;$lJE5d=A&e$>JCm6;u6|;&P!ZfDeqqrRmK|y#7RR@o%#=R2a);UvM$QJl z?!4)umao3~l`yEVGG1Z6a9+zwLaOLY!35KF{0rP&8I@ytElnBO4r@kUe#kJRAggEf zMEMD!jGHZu&uj0H(m4^uQxG~)e+g6Ffuh#gemj}7ea}gi$FG@I*D#&o=l1wn+=^mk%%Aw9Wo*-wESQH+PqQ+A)v$SCqo(pWgdZoPVCXe?5BE zJio7-b>IG6wu--P{h5VsNB`N}y>?qwto_^O+`T^%F1nwy6bpTHfAiwCwU4ab#AS2+ zS0$XbUsYhm8~W?d5+>HY3-WlcN9G%C{#5PTi~^iOZ=}-|Hr`asx#AAQS8e> QU_xW?boFyt=akR{0E&d7n*aa+ diff --git a/wcfsetup/install/files/images/smilies/attention_emojione.png b/wcfsetup/install/files/images/smilies/attention_emojione.png deleted file mode 100644 index 2c14406422f030bf2f3dd8a54ccf08596d191b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|eg8-ipS0MdAs*-rr_HF4ypdNve zAirRS|L^zrHxxJsD9krFAFw{b?@{DQpxi}I7srqa#^ePO21=V*7xes>7ijWn@kuz8 zHj5#VwPah;1KE=uYoY|a_8(7eW$+Q+$tBQGq|LTjSz6%={~IoWDAp694GbmQnI5r#A;}8-F z$vv<*VX}fi#$!JAcQpb(Ynacm96rpo?3(ohqlX$TT}LyIvT}SCU*5zi@JjvQiA9N= z!3+y;6l!&}{t{c>6#u~BNnFEi*Ru_IOk$V6D diff --git a/wcfsetup/install/files/images/smilies/biggrin_emojione.png b/wcfsetup/install/files/images/smilies/biggrin_emojione.png deleted file mode 100644 index 418d94c811b8b05722d2964fdf4deb5404952cec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 767 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!x&nMcT!HleyXi!tn>)j&Ra+N? zYad(gpXR4Nzs3IRmE@JZ&dr&|d**qc-w^!fbo`@3(LF`xo2R)~Cg?Zk2lQ0MuAJSr zdHLi$n-<=@eDdp;Pyhe_Kel(>wASqNC-ywLcfB&jsUXsH{)7sq$hmKUuHi2U@(X4# zD44(hf53ZzhWifv3g53#Bj0E!=zW|Nrl1 z268Ez`Bd-it6tW9QC6|L`_I$wshjVYaJyx2OI2VWyh*k4_p!u-uk-k}axn-{oNP2BvSm@_cq{4$04N z<<>5A|IEBPQ2kWf)f=b&92S*X%4f8LsmwsT!AqiCfy0uYSwgVY<6@w=&VTEMr zj?5ED(NWxR`ANTsQErJki-dqB-xCpE%_?RV;dns-*5izE4G&sa{2Ok3VTwM>z2fOK zjX=hYvfCFpxX8IX3LK5qWEE9d6w-91#gS)j}7QTzV1`?sGE)p7dAt zapnHmd*`VPhfu`H`bN%16^>O}dZ#Bn=BVR47Anee)U{FRT!CPuO@~HvNV5Cod-v|z z+t}FHY1+(l{$9R4w^`Pdcaq7e8;+IY6-W3|r)6v>`l_Raq$f2 z9uKA-o!*?+rB?rWt&Of;(mCpL?>48@(JY;-*OWz`TO73h=92RIQoriMTE@%i9~6H+ z3jDQoqH?{R@1;rc#+j}bLE^WLpX9o?lG*+2`@K#_`pc|Ga;=086jx8-Du_b5HJ z;PmH?GWeo>PP6~Cl*boOrt#a(Ua$Sk-Trgx@jsVR>)smg guaJtZt+$P5OlWMA(6xA03QRi;p00i_>zopr06yViuK)l5 diff --git a/wcfsetup/install/files/images/smilies/blink_emojione.png b/wcfsetup/install/files/images/smilies/blink_emojione.png deleted file mode 100644 index bd0ac55ec8e40ce5d44e3a43f05d7eeb01fbe945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 862 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!RtNZmxB}__chiYPuTDiBTDbn|`DBT2!y%w^`AdTQf*A}7=I{R>@Lr(dzC*vl`3)O` z<}olZ1$(+UhEy<~z23fSl>rY!f{60rz31kYX5abzcmA8GQ)k<^vb>r5-`sMcrK#+e zbN^Qdlz0nh?>yR6Jblya#$&~&{ru_#ngS($`0+KeuiSIsWDsYgXxNW?;fldif68vP zdJ?dHY2O_7ofWLxY8T(k@}A2!A@B94?P06GA4m;&D?k61y)AQP-f=7ayIXinZ|?i3 zb-$|WwdebA+ZSJ>0yo^9QvW^g)q~T&YES&XnBy?(`|)XK^y62&P8RIFKl#-8%4tVC z+=6G@uc}*{e&Wl;z@>ZU1uEXr-81Wdf}%&rgtQCKuW#S+L@Xj?gh>g~_i^xU6=v%+ohf&eAt2Y}>SW$ExYc3nlp*`gim#^0E*yZ#&?= zr$Th4*6I@_X6|#&FMIXU*mTh`r?o4UJmO!iWpxvKwO8Mc>8K0mzE+dNH+($q$Fy_> zFnPK>lbF3a-Hu7sy~%}1<<-n?kNujBfBhG*l({ZpnRa-E>JJk?@j9hIrrRrhICI1% zI|-l6vvlrUw&`e_(#|b2a<-X7`LJHT_VZ-!swEE6T^EbC9_#*^#hE6To9Q-N_t-XR zgQCn})0>L#_=6Rfwc9@8^Eq{=J-4}{C;jf1j*M5%Cu(m_i?-n`I<$5nU*p5eZebni zj^{eGFI3unFN|HBcDCd|28?4pA1}oJxSo7>Z_vTTjx%aBCYGu^IUKgE)9~6hzxho%=Qnt5p5|To(i%Q0waJhBO zTHmY2Bl1b^pKczvO^05_P2CU__U%Qs#Y)}RFTP%EsyjbpC(qgwixldE6#gG9Fxh83 zb5Ww%oIAXSe_mO1Ve-GrM~jw5EKb}Tl(WsN@tflN)AdodlJ_IC1bxDHf2`PEwPCW* z-|I0~&Ob2k*Z;;W5usnk|5ftc75(Sz{AK0eE!X5sFK4x>s9)su^K}-Z_~wgQ9qdcr z#V=rP-PSB=HQ}j@!*v0#AB*2Rb@eUra&UNFU^BO`-B=}TcL38bv3dH-)x|y5eDk@h zlp*8S#r$B~X=_pE#}z>`jN5IW=~|dFuvzCiU5Ztx))3r;`r^tpa>atBwJyyR39f0v5Dr;$j%ABwyt`3 zcGLd)irw;d1ugwH51qq*+z_{`xaEF7{xt8()$#2z+-zdNNM-PJ^>bP0l+XkK>25Ag diff --git a/wcfsetup/install/files/images/smilies/cool_emojione.png b/wcfsetup/install/files/images/smilies/cool_emojione.png deleted file mode 100644 index 20011735110992abb08ce5937c3bf74aa1d22fc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!W(N3#xB}__chiYSpD(8#TOYS% zazs;kPMMJlH&1i#DKg(P&->VN|7q3Ml?nPY%_F^m zj#DlP@(X4#D44(h|N4OU0uA>a`W4Q<{|^D{|Nj>NvK#{b2b^2*Vg~~QleVXeV@L(# znKN4%T?`ox2e8Yu{atRG_N%ab{qzs}drIet+eI*YmUQY*>W-M={nUNylchEvS8v&y zG1dNRTYS;;W%E8>oe^WezR#f3dy-()!wKJ5BwmuIKLj?+{Lvxp4o&?e7_>^VAk>*?6wq`kbU}rDE3O zJ8>V*N!3>SEaZ_~RaJgu*D2FeYPI)UZ0>Dgh<)FBXadV)5tTi~j(pEmG?GO90*)$i z=50w@nY(t1?ww28Oks(W1RtsFX#8(p%J`}#ll8^tn`|-vSmrCNUC0)(MD)OawHU@H zLWc7hWB#)+SZrjm6Zd6MY1|TUT;6Q@O>;-}JjM*mYL0?SI#1t(Zg{fI;Nnl`W&BL9 z?x+a=x_hBmBw+uRJ~ND_>^F{y7=$4i3@M{6u+Vb z|6Y2wl10>ilgN@wPv35xRN|;#r*eZwDQd<$J~6?QpY$i^Ty47~wQG0bCM$!l`% diff --git a/wcfsetup/install/files/images/smilies/crying_emojione.png b/wcfsetup/install/files/images/smilies/crying_emojione.png deleted file mode 100644 index 52e3517a1ee5b8ec4f7750dc22aeea936f16aab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1236 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz$g;n6XFWw{=b_}Bzko!YJQW> z!Nrc(w)x%N8#JRvV`8bwlfz->H+X%#5Wjhv<=TGJAJ>zYbsC;n>9%W*?dECj^IPn{ zUP-P@&`DKc-)G)^lnO5ONAEz$SUq3E>q$ka(2 zzuqcHU3zW)gor)!yl?Idzj>*1&#A@p5AAt$wXtIRy*D>1ns#10dUn=|BU_sD1NLlM zc=PhfuU|g>|Np=5 z440UaAirP+gM#_{{|CGmXt?jtuW%k{1qI;!{`Cz8_X~gqB?vg2pD*nt`I3QwS=iIX zF{Fa=%mvq3Ed~Ot51ix#W4abPzy7OlDZhzhrd#;u^@~!!)K}ICB#E)@b6@V#*x<|} zD62B{Sa_7Dl>_G*p{{R7q-K}wiLGsl?OYO?*~YwSN>~L`J4gQC|35k2{eLYO)F|xY z#W(Ze6rW2$O_PP9ItrtF%z7`IM2hGITw`ICsSHe7s8wXq5~IH$Z$|Wu89&+iwwg7* zJ9Z|I^-RvLshTbuzI^?#cjbcAnW%~9dBUfH=#YeMG51}*X2=ezvZl6WHW=P zrH5kY5^k9#9%_u0$L-G9HdeRSdR@{{_$$Npt9tE&=K)i;v!whq<~+WLW7^@a-JA9Z z9dKIZ;kq?uwYf%{+upEsUaqQpCTy58`_p7KR|B>hZt>vP@vKoA%L**FfBnrT`Qk-` z*(u9A0lR+LYF_#(Ge^I}=T>p#MP5^p85b_E|DAQKNXAj4b06PJR$Yf+*%#ZL7x5VP zADjI0jsE466-UlUE?USZxnSj@wd^_>tKL8Fj_f!ZqiOO{I^*??hza+DLhoml9gPZo zF0}Z_v8J_a7hN@1iD`T}wc%5vnbnF%`MDkoJ3nqLN|1BhdEmp!PL>++Z3Q!W6P9f& zaQH0DSN?JuL+Qgu=U)guKe)L;#_Yj_^h3;lcUh&_D(sYzK9RV9-y)^)zBNb64F@)+ z-7_A)lVkEUo6vH=uJ9})lZu6yqkzQ`4w=M7_gfdoN~y^uv-lkhI@`5J_>;Z8+#(A&3&oId8`#+l|k=x}z{rK_cFL)ZBZgb!GWt+F;lbQ<0 zZ`G1X#w!9^P9-QWZkcxY_2b8nFFyaM`{DX_ONno(6Tbib_qd|6#`h2ZA4YzY&jx>D Sx?cmcA%mx@pUXO@geCw#yoCb* diff --git a/wcfsetup/install/files/images/smilies/cursing_emojione.png b/wcfsetup/install/files/images/smilies/cursing_emojione.png deleted file mode 100644 index 9d739bd40adbba997b35bbdd20b50e85c3c0e3db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!RtNZmxB}_-!2v{~%`Q$8Y^)Lt z^jj>=mpeLK_w}|>S2s{m`IwpZ|NsBfCr)f!yLQH;NvFL$KG)UUxOVOP$`#+{&3zo; z`}D~ZTO*@C_wRMLw0!#bG2GYp>y$|;(b08fW&7P-m&~8N%66in+({md|mKXF0um<{v>GKE zao4^wc-8%%d9&Mlku z-?k5&b8MewYTC1X|GPzHUaOUEzNDVvb(}}fVV6NjpvcrD-~S6AU;4_fH6^cPbw|*t z4Z=r56#8x$b_Knh#dX3fU|opnBDZ<7{_Ks?R94hJQSK<~&@5{fr<$Z3Z_04x^V|pL z`qdh=(%%UsoeNJ>JAjO&i32Mob7u~syu$pw7Q1r3_tfzXZZhLMfl{+ zoQDb9m(Tgj$G1&dXuo`T@uqF|cl%BlZ@Rg=^wW-c%)g=(PXF}YpW^)U-2Lm(v*!7I z-K_ie=dxA&ZR^i0bUXUb=I*uIs$%WmHs|jBk#N!doTXUkqx+i|udRJ#?Itdp>%S`D zwEe0AE8fswf0i(@?p=__dp$DWX!ED)2QOI<7nFpj%WnLrFX6x5!fm4a%;n*8PHW_) z1l~Kdc+W!5%HZjrj+s3@TYJh{W=eS_NBJ&|x8DMH7(#wK5c_d+_`e&ezb_M77Z$&w(yV1|bM4fodzoZmmcAi=@m{r>g+4G9SW z1_}yM)|Zz66)p61aSYKopF1&9s98b4CDt%-^ZGX#@9K|V@Z##YEFW@q@k_}C97%tB zMO&hdN@p#8H0M3%y~=w6HIL$={}gQ5KkMY5X4f+wH%`uYo@9S5;D6U1kp~fw!K0sQ1LGdB+HBJ8~75{v^`-JJOsGYBVT`%wZR^pdy_L)a$t0|L}>%VO;R>~Z= yTDJeiqoc1{Hs^iflwZ76?E9akrxzry-9LMxNYZNI8WW&n89ZJ6T-G@yGywpOAHKi< literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f44d@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f44d@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5ae9f8c8101f294d5025d1f40ac5e37051cd6f9f GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gia_5hy{S0MfWZu;xRK@bFCf7%`i zk}Ld)(1E! zyuW|_{QUX-1p)8x-`@|U4R*P&dc?rM=;-O<7~*k!>D1Rj%?1LkjYaKVTep5)x0|zt z;r;&_E54J5W;htt?YBRtqt4Cw&;6I+we4qa_C0J5ez~IF=*QF3zV>H+?VZoJbpAYx zm;GM+bH8|0y|noC!u`qSIP2cN2On2O>P-FjBxv!xr%y!AB|Lj1%GVoS@m73ZMeE_x zc>N96e-(SgoH;#n@wV!!3sr30kt{2>{q@|)%K9nxZ{9_GDSoKWt zb|h2c+&K=*4y(WJ5=@_aa^vmm#go)Fe%W3AdHJp2&l)q-*7;PmPFj_z8op;q*b%eHH2pQDyr2{diyF)K?SSvx_$U b{mJ&HF5}SOgA6x;AgTe~DWM4fJ6JAc literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f44e.png b/wcfsetup/install/files/images/smilies/emojione/1f44e.png new file mode 100644 index 0000000000000000000000000000000000000000..53816ecb65d6c36226c7ae69d4a5edc7568191c0 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!asqrpT!HlK#X&&y|86=EeLEO~ z%>8#W70CU2Ed@vdrT*Pa`@B2)(~c;h$`6~uf1FAHGT`dJ9fR-pXuJ!`M~&*o0DN&oP@{o$OV(CG?>$p&jmxp@_$EdKt= wKHwPmZlZPEznS6|_NxqxPM6!PpC?$)*tu1Bo1>|`7SOp2p00i_>zopr0BM7_kpKVy literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f44e@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f44e@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f879f3fc1daa62c12bce08e3747daf7c67ce6b61 GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gia_5hy{S0MfWZu;xRK@bFCf7%`i z_~YjA zU+0s)9gO{RCHdXTke{dGzwC+ryff#HXJjnl8$XTQ0rHL2v?Q7hBc>L*fpzVt4*pK$c(m%d70*Vyu<)^7x#2lZb|Uu?Xq z{U*27_H|bq&Q5t3(vj!MtEqZ7x$PUXhgI-pR{1}HYVM~$dbF+l{PNz^#R~)%%)6?% zY~xuM>2S9@+o^ literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f600.png b/wcfsetup/install/files/images/smilies/emojione/1f600.png new file mode 100644 index 0000000000000000000000000000000000000000..23384e09a10aae8ab54b924fb5aa8f3f6488f20b GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!(gJ)!T!HleyXlxH%};&v^2z`I z|L>`a{dy&N^E7vVbG1G5yx*LTe{?AN=Faf*8-klNjhBZ6-^|E7mJ-*TA27egzTV4r zTD5g$l4WzKMNg4=LAZ8|tNNSVlAq5W_ycWXFA4GsW?1haa6X}7c~Lz`=(wkgV~EE2 z+MsT}W(A%vx_J#u`|kh#KR+g#V@B(nq@t%$=Y)N1Hf_=}4re!9t9vP3d;6-_PvZ1m zsdw3&*w|*y8TQ3%&8@Q&lD3Iy7C+WaUc>yZA$mLGZ>DQf5zO2ob9#40oNuf=ub0~E z_37!ZZ5QUO@L6Tm*7a=nU)c@i7XJShRkE5KVsov{V@l)6`mD{iW9bxgv93>(FLHWo zK4i2z$z~pqw~g=c2BTknSLUn7_htU+xxDei{N`tF9ElFDmUZ#}-<$uluVHNL;fv-e SZvGAQ5`(9!pUXO@geCx!KCC|g literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f600@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f600@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c8d122af04a6f6dd1f613bfab63b5f75cee4b8 GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giat^l79S0MfWZaRLH=BNJu|NovM zb01T+o0m`aRK->%=>IRQe{?AN>y_kV%l(tQ)C)id zCj>7J_uVtkdwz?3N0?QhmD-z^Pc|=~{58MoSW4WqYU_eX(->FvNGJ948-n!=ul)zQ zhPx!lFPP!|{`Cz70tN{V3d(hAlNcBnr+d0MhIkxbI`wv0lYxM%cZb;78Cy6wl#0IQ z{r~@6%cJecq^9n_$BNQr{Mw!*8+A)=<=pr($8g0t+1Z*m&i%2U8TE#>TT1*)K-k8# zy`Lr-FsJ;y{%^|+!Pl1)_i=HdFBcx)3Y)z0Z$xL@v5uYFjr4B(Ueo+&cHg06m6EKL@yFAW z@)W{mFP!n|>+b2=?^r^c_8dsOdYVyBB4xX;Oc-0kV>4Tazdx>?7A!42!etP&LiyQ= z@Toak8*g`JF;8M(-|^d~W=rdeQpF43x32Gh)L?oiYja$2v%2B26;tz{|J8G04d5)y ze;%vfcd5-GxT=$$bb(L=w-`)=9l;x$THJKj>%2n06XB}WXWnw%3 z@|Kzt2OkK^JZ0r)bc%a&aW=cnEn&Uc2Uq9(a<#1C<&Xaq{FAlyyH`M*>;G0@%rSVn L`njxgN@xNAWB)H5 literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f601.png b/wcfsetup/install/files/images/smilies/emojione/1f601.png new file mode 100644 index 0000000000000000000000000000000000000000..94b1e1e06ef695692203b1578c79fff1c530f756 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!`~rMJT!HleyXjca|Nm)z>YJBO z?x~91Jk7nQ$l~jjCLHL#kcH>pI#UFy;4Dub!vU)yDOLME;;HqoxP*UK{%5!#&cO8kyrbYQCYQdG%zP)gTF$LF|9Q{+|EFtf@4mlX b{e$_@bY7Nh|3_s&=QDV^`njxgN@xNA;>?_* literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f601@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f601@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f352311a1e25e048d11f8dfceee008214107e867 GIT binary patch literal 600 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giaq5z)|S0MfWZaRLH=BNJu|NqU) zC-+pvZl31eQ)K?=P;^1KPIIR5{1*G0JHx+TNq%!W{@8N=mA%f7?p?1;(Es}7)6L5# zkL_JIe?rCi4Z+R%0ej|oSEe{ktG0HT*Dtw-LADlh9g1WM*QyKI?tyqH8byI#NKvWyH(O(UTcG@nzrDyNb!78j_TNmviHjG za&C+7?OU;cv9{mz5tCcJlz@ta-|0F{%||T9PHF8@JY~7wYkA4bN8C$yJvwhWaif?1 z!sV<+cfQR`QDs};o${*9VgHVY|D(5y2a9Y?o5Xnbiff`i+sawdZM)_^ZZzJPVs5;o z%V}H8yB8bs&6H>TRrKn-wQ#}>wRy_-&Io*du)#N@DUZAS^0#%jU&QU&E@7oG>zeYH z#tM@HKOY-T!=D!pSjed-^<89fPx8C=a&pGIvnm!$m+Wq}P0n5RrcKzi|775=uIcr? ziv>SU6^~o^!vA_u=yOkR|1F+z;V-85>)C$SzWVpjzju}e^*MLu8+~uT^jEU1{>lEQ Z;=+FJ!r|wO^nsDZ;OXk;vd$@?2>=XIBAx&M literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f607.png b/wcfsetup/install/files/images/smilies/emojione/1f607.png new file mode 100644 index 0000000000000000000000000000000000000000..78a9f36aeaf2f3db1f72a245c9b0ac8c69137bad GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!76tf(xB}__chkLA{s)q12qFk1 z;S7jMIQQh)sX+Fn3%$r{()`qy9^QO&XZV*}g&T=6P?P z=DxDmxjECgZ|||02lmcsv`yUbX7{ND$IecFbSV1Ra{q#G?VQbzn|EHgd%5NOhTu6C zFC~Gllq?DI3uX{-IKRK&;r;xEhW+yk5)uLw6wc4@cQ6p}+HxJ_rT3mLjv*T7b1%Fs zYBCUMd&tz(ushb@iKkbmse1bF{afoS)0B+A{XN*IE_~?2liwVNQ>UFhe06Tv=a-vT z>{_&%W!9eiCUZCnE%Humv&?IqVWi)BLoDD~a69k%H{-oEa&6=|+`Z}FgY zdVYUsz0#DZxW~_)Uv6`b$*%C}Kl-5~AX1wxbb6Uf!L!v<#Lsk336CqtQ_)(vCE5PN zUZuNQzj94A-}i6q|MyU^#%+b+yK0~0<2-Ubg^SCJuAAwulk(p#KT-IS+pV6|Qw#sK z6yLp){=Y0*;Nk|2hC)Z12NG|*gO+DLIx=17(^1*~40B60{x#W2*aE%I;OXk;vd$@? F2>^9Z|C;~+ literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f607@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f607@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..18afe6bd5e268eec43aeb3b480eeb4cee109f43f GIT binary patch literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giajR8I(u0Z<#-E;`@TKON10haH}AZ#`_zKF zms|GC^Oj6)EeASUrXTZ!2R?62KRSZ9h}I( zzH3kmzOI5l56x9`_q?Y^DJKRvLBlS|KY%N&nmz2A5Lx%9G3 zRO8IH;Ezn9b#-$Je#*pbeA>^}_4ic2+2(9(K~}|v>orlPS0gvg?7HR7AyB?vq_Dit z&*$lys~2rfTz;y~Y*JbGQQ&}7Zn~_fZE5z}ZN|D!n0|9I%D)yXpUlF<{wB}Bdj2)u z&&FO;o?R`{G3--G$|>LN#iFw#hIz-mE0=xqq#M=PF8|(DHUDLP!G;ru4vQaI?>s|S zVV~jMm7nCqFL*^xHgl@|gw2a?htc-(lx9ljG=|3C{yuyp{xBzI=(tJM*B| z%17UQ|8`vdBv*7GQnI)v!SLwuS$W+bY^U2Ec{JU4`u5uflCm;482{>iC@JlK=^R_j z@%r4!;vjR6dGWe?_^p;{20odRbfI>k{XxILo=h>}XU8IECOlr%zx(*2UFwM(zm;Do zb|yC0AK`M}kjore@wLkG0=v)0W6!<5MMg}S{MPfaK2y)`2jTB{mOO1<`?h)Quf1lw z*|&M!-=!K|d!^~&ZQq;Uc)xJR22VY!_iOUP=d=5gf87)KJ6*ov!Rkr69&A&ADT2Y% L)z4*}Q$iB}h?|3_ literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f608.png b/wcfsetup/install/files/images/smilies/emojione/1f608.png new file mode 100644 index 0000000000000000000000000000000000000000..fd21b0a0eee2553d1636457dfc0f2aee6544351f GIT binary patch literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!Dgt~$T!Hl0jPx(*>HqJ7NH_v= zAqXhqX>9;xe=SQ7vorbD((*DTliu<*8SuDnZ(Ov^LSjKj)BRun@-y^TOZ7ZI zUQ`}6OYN}4W+P?2vq9}2%uYHjS=ur6l2WIg|Dvm1cdkC4{%-MZ?{#%ExwEfk$4pzi zeeIFCzve!<=4Ack+vWRGMNLAQybHVj z%K|koU$>A0o5kM?zG~8Nwl|f2c2+aMLeZq9PCdPF&Ff_j8LyrT9(-wcTlZYP#CP#k zLA8+&kNo3HeE&Z5{`aeQ-)G7w--t+H=q)pteVlRoL$Tv$)1O5Lgk&dvio0;?Np1aw c|BjW63R0rlpB^->2Kt)8)78&qol`;+0Gw3UwEzGB literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f608@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f608@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3ef30d339ed907752aa96b926a4d97718e3ba8 GIT binary patch literal 821 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giaV*x%Pu0Z-rdO8~Ve-|MFVFO7Z z`dSDg|DFMn5CqidX>9;v|NnnKDdA*H>Oi_+%@`joiYh1eP2y>(+{i2oEn zk3Z+mT{?Gq{mLaj7A*MQ+xzcY`oGiZzc;4;n4JE-HT`Q|`pcA*{gGi?!hu!MHLE7-{1b;Kjo#GiuV#f_xv>fs|4a6m;+MCk#}qewxf}Z7&{h2% zY1eOEahV_c_vVv@+PmLwycy!UKIX62(dEX^wr=%H`N8VtWp2V2^+Cz~h)VmSOIMy9 z`*~SJYJ=DPRNj|O@64~(UWiP7U}BIk?`frFUyQQU^vZc>B`-8D3-5`ayy1~;)a3h$ zGxqc)dM)e~buN_F%3D*r*m-*rM{$ytt+4vSj}v+4bQlL`H^s%<(k{$%}oWAHC)$+qUD(8k@7jcb@aI zHCo<3LpD^TTjKP`MH)VAOh$h8)8&_**sL=xB~s4ona0kxTP3bL+!E#8qT3Gad(Cv4 zd-w0=X{iq$e*V1hPXDD-XQa0XL_d&TWWjdzR`iWyc5JtMYd6HQeVxv`XS?^`&@kt} lt}j3RHhmLReDeSF{3R{zB^!ACje)6#!PC{xWt~$(698WaoC5#= literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f609.png b/wcfsetup/install/files/images/smilies/emojione/1f609.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc444e1cc455e15c0e89abeb64b254d96399fc4 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!!UKFlT!HleyXlxH%}@R7mE=c< zqMsZN+dR#^r^x)r_2iYk&hwje_RRAxi`9K~D(b{ax3&GI%Q_7wma4ot9e;CY`1uXN z)2gkTGmR$~yQ%|?W-kfy3uajFAaFjRVR=!#KTv3$r;B5V#`)4oo?uldW!z};*R`R;)a6{M@dSQ`&+GRreB%64 zp3zO`+>VPu`;*obha6e(%+KV1eBP}2ssDsc7+)q!7VB1=$#6gY_LEI~V$s&-wB1$l eUw^ON+ph1D!sETnK6p3K`8UFD?{F~G9Csw*`oNQhYuKnmx^ufiB%Q_7!6ZFq-2tKylf6qMc zU2|-wRa-Y_8qcWF*gVaBezU1i_K}G|E4fR8{DK+Y?_b|gAYhQ-prBl*Hi?0OvB1;C zF~sBe(y6y6H5u?YOpg=E)!fR&RdN0Q|6{EiB)mF}PFE_O@mzM<`_twby&`iA^`1Oi zy{l`d)PcuW)gxW9TvSf5a28EaP=Bf$%#tI0>$S&3m+V7oe=p2?pMP=LpNGF@{^D|u z{`UXdZni_y-(T*u`u@u!io^cZdG9R~HKjLeeBNW=Qfa6Yr`mrpZ-LdN-hm#*u(a9X6-)@E!Lcb%M+7VeSIsT62h9d_rU*~ zj^;8(F@42pTc*l5uV#FGR7`kBef%Xq|GyvpeVe)dzR8DIigTe~DWM4fkX#Rb literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f60d.png b/wcfsetup/install/files/images/smilies/emojione/1f60d.png new file mode 100644 index 0000000000000000000000000000000000000000..c97b62f2605c045c5bb602f7538c54471de1ea5a GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!x&nMcT!HleyXk1?OL{sGea#1v z-)cZ45PffjGJY)rF}|jQbfx*J|5}m$|NsA%T#ip*xGBCm z?;tDF&F%mH?~O7tTW-6T|5Jv^rOAdH&R)-)w(hfT-Nq|X(njm_nz!nA-E}gad*$dl zjc*LktP&Q@V%GlKzdroL@nv$UeZE&zrv~OXMD_&7%wWv$kK68YrK&QE(RJ$@>7*W+ zHJ*xJV?F0xQV&YGQ`*L~?C~tmd8@j&_V0Tye=SaH(w;}p3vy@WFUwrVZYHAe@1t>n zh`ht2dAI*+7wq3@$M_`R>o1NyT9(E-bM80)wey}c)2H&V-Q3?>=FIaGV4Ik6T4CYD nmbVRFO{+h!KmB(&;~ztKv*J+)yWh8fUS{xg^>bP0l+XkKSs&kI literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f60d@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f60d@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e0efa2bfaf7f26f471f50383167c4f005e4d68ed GIT binary patch literal 765 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giabpbvhu0Z<#-E=tmk`7}3yO<7P zK*WJ;I0A|Q*}vC8MSgEf|5}{>_e}b)RZtO#f;2z%|NsB@RK@-|kp81L{pQZ_-|N%g zoQ^-X+`k}P_usknUvtw}&Tjj6E&cED^zW_d-)hspUP<0O&3%50eNU13o0m^+UOu^J z)55Q1>5mRYpWhHXt=hUWK|f&om2{wsrAvbRf*Ibg-`}vmK%n2jKtbXC`i2C9_xI25 zpI=Z=kgzj+iWUO{<6}=3#}JR>ORwGxI%FWx_V68Rx6Zp?>Q0Sf0;z@H|K*=iGyHi= z?JDzp<>UJ%Kl8V0{;uB~XtQT;Uy}jPqSv<*ZKVE$eV<{n_*9SQ-gm#6{@xJE{d!+K z_N(Y+xlXy6WmoSN==W7OznOF}>*xcc;MP^@%OBM*Pq%Eo+2dHZtgCay<>IvH^)uhb zJSjhuxG{mR+`{HS8biC(ZaD$N_8q6%&rB13dd6(cr-|A6kAiZQ3;TEqymu_0)%pC+ zAFn6c$FH?YzZUV_bncVevxA3b1)q#w&0>__`}NC$&+W^v{aEy_yY`w~&dD3s!~{Qo zS#6`3*z3x$K6dhikjf?V6MP~}u5}z)Qnh?%4C|TbV%y#srbkxaFWU4Z|3=)3Px}@5 zSG=v&+Z)Z#WVvda&bRsQ_X_^p5%*R)w4!sR_f#KVy{XImub65U$L-r^bKl%%|DI_z z>$>-aJKDLj2S0fwe0lc6J5!7InM~$N{`K*w`RvToX@~cJ`MmK=@cb#Z<+mn3TE6I5 z;5)DI*mngzXP?@~{B$q=`0Jv0S?q%gy%)ZuW~;OA6F*T?ytTcm)XgMXZg!az=eIyHfVQoHz1DX#33PlYX3AD!krV>SvhD(zxv)+r2F2{D$E2 zyug*c&eN)`D--k!!nK>qgAz9N2?MR+ED7=pW?1haa6X}7zr$nZN?xGgE>9Q75RLPt zlcL3%6?j}~7cN`Suwup6i+|T|n#gvl{mk_zY|k7NxV0kAa($|waoE4|j+X4#xkeAT zl0u&<^YLs2{5zzVv8QVF z)@^@HgLrZ!&i}jivOw;9@#V1mPDf$Cec``qga1F|jyx$)xbfGn=|EpFc)I$ztaD0e F0suHhqv`+v literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f60e@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f60e@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..18fe7617d4447cc3cee561029d9c09d68dcfe89f GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gia(g2?jS0MfWZaN;cWO4)$d3t&R z)d0yfKlMvH67C<0E6)pjbvh9!l@Q}wnV{d>7_w)ccSw+TcB=oEE2+oU$L(Ggb8~0- z%&xGe@}T)G_B}=B=Qjjzp5|TEamTaeV32x0{+21RU0Dq=rd1Wz?nJd-YfTqt>H_oVd9k|7^TzdutQ(>GOGq z8h*9>FyRQl>ind+RbKYr|2S`+ z*#2651J_0?4rvax-wV7tt2d-Py65=%d6=Ve|O z`fKS9#ZyAZySgvc_SGtGI9t1vc}w0a&JQKYx(!ym3>#;!V$3oZV{X~?GH(^riaRs% zY~Rj*X*2oIcL~|BTlViiUyHSYTC}# zPi98?rkuOC!g!i(&d-U4%SwxXt@tVSI{w7YcOmyqpZOzi>R!Dlx$FMCkKydsj(>bm zu~{bP0l+XkKb&4Y( literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f610.png b/wcfsetup/install/files/images/smilies/emojione/1f610.png new file mode 100644 index 0000000000000000000000000000000000000000..477d18d1a66e9151b7f7726f55a683477bdd2254 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!%mREuT!HleyXlxH%}@R2&hX9C z+`nE)esem0evAF1L(zNYdG{2VH)k3@<69dJ)X82F6gXUhohNQO{r`WCgX`G`6>()Tg{enQc1%#*$8GGqlk@-DBkKew-7NlT zynJ1*v{(|$-c1#Yrv7GLbh^{Gx9z#ouOk9VVb@N1l?!yd*>f+#{8}u}j7`tBGdf}v@_JW}a{VpbIcpx! OVGN$GelF{r5}E*Pk${;1 literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f610@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f610@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..48fd14ddbbcf57c93f1abb00fe806ac332f9c938 GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gg^zW|>QS0MfWZaRLH=BK`SntM-? zd2^=mo73@+4n^PG8GdZJ|NIvFf^hAxSCY?f2;MW#ds?;iw=~y!po!ciL4Lsu@At27 zC=f76a8OXLQ=7!Vz^LHq;uzv_eCgD;lbRKHT*aBza%Eh-)&ITzqHIEs)3)2MEB@Vm zndzpiV!u3dt>W5~H@>Z|$~^IQ!Lv{EbEd2gc=lL6XA0}7f12gDY8}ci?JLUc+|^|E z`_i$$em4%?x8GkDe{puMY{S#_iv?oW-al=@q1>hXRGR&g%3O>7_o*D!iae*QpSXBF zxA=LYcJq5Xqe8#!jlu7QWAe`IOkb!w>z#3<{L%ETYqO*3*Z!RPIcUqIRqkK6o8GVa zY7{bO`f-8!xw6K`ZEP%FuQ4v>SZQ{hKXF~3q@~28@K%Fp<%`C59#u(Y?>Ohq)5IsA zP-(mDfX}C@j<9d@Ub;%B{&aj5U1(`Bud#BPuf5&04-3m{mONtqeaGs+bl!cZKDc(S fPpmmP|Ec)jGKa-X;W0VDAY|}#^>bP0l+XkK|FPL# literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f612.png b/wcfsetup/install/files/images/smilies/emojione/1f612.png new file mode 100644 index 0000000000000000000000000000000000000000..adff311e153ecbd977c943877559e6218d89cab5 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!TmyVUT!HleyXlxH%}>3j$o%Hc z@UK^rA03K5w%mX7H23oxf(yd6_ssL2R&Cv!X}%WqH(@9=%!GM0#C5uAzr!N|NpOC9lK7_`q|1QiYZac+FZ4E zPT4it_}`4<(-gLqxhxLviEv%M)6Mv0*cX*~5nXe3Gw>Zf)}G<`A^J;-3S;^g*5b|2 zV`~{LH51Gq?&xFi6E@NmdD%FnlqJ;hIg7`q^yW=}X55d=jy)aUYiHfM%Is~^MfWYy qTA%Fv^Y63!n(SZy{qLv$583U)xf}D^p5FqxlEKr}&t;ucLK6T=x`qV+ literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f612@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f612@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d6fe5663e32fd356d1cbe05a980860b0920f2786 GIT binary patch literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giazyO~RS0MfWZaRLH=BK`SntM-? z`PVDSg%R3sPRGx0v43S~~O55h-0xgGQ*ArE(Zr}G_p~RwE!4tpQDQkWB(yFJWp*{b3pZ?PJ z-6a{2-CL|>GWT-Tn_2#^Tqnq~Y`OU~(m8>1<(>RnQ5`!HzJFMF_x-8A%U0VylsJ@c z#&kna{lkLwvt#8Cn7$T!An9Dtt(Iq4VJnwr{l4tl-%V<7b{ic%vRpK|iu>{czAefP z#vfM&i7I!VchP1_>J;Su@veHtPUj;FcmAn;^h8gXW!Ia}sSm}u1;Wm>~Cz>bOwY_wncTWHNeaFwN?oQ`{ PLCoOk>gTe~DWM4fGT7!% literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f614.png b/wcfsetup/install/files/images/smilies/emojione/1f614.png new file mode 100644 index 0000000000000000000000000000000000000000..b30a9a7ec068c5f816e83cb91fadde6595cecbe0 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!LIQk3T!HleyXlxH%};&vH1{{B z<9}RFesVbM_zK^iBJ<`<3_n#*1i#{9kXL+Smvm^c>0VEXYPBQ1y-xW-iv6Yho{B{upE0I{D9|} zWUuVwjXsv=g*G*|I&rVr-zNI^6vtO@@hc*MBKPJzzy0TR?cVp>|H{{8p5iflq&ia{ P=voF(S3j3^P6xGqmiwPr>9%fy>6_E>PY#D|p5}gQSJ=l3@sAEgU)$!lXP)=@4Z-I(cpY5q zIIB+c)v2hJz0SMl*!C2emp&B|0ouo1666=m@P7aLh5`YD1P2A>I<-j*42+4ME{-7{ z$CplhUDd3>n;&uC#5(I7i@5%MK29_+mnET%3=H)M(`$AeBy8`Nutkd16x`N+yhHS5;>}unX z+!fnHLrbquHjG~5f2DnSvt_A)`!>^O1~v~ee{`mNXew?ztf@BF*C+GIvY?Npu3wX+ zk(OJAYT~+#WUEdBK%iyMA9jceliE7gNf5cfE!fjZNR}oxR`w zozcpE&Alp0OZC!Ii?G8Uy^VKTJAE?0$HabDWtmbNYklj0NOwc8zM)(f*9>Q;H&bkx}I{`29|ryc(HwsA?-1GZB?yzGv3W%4Gz p|GabV@`^K`_wQK0`}f`|{`~n#JnKYXOaVEQ!PC{xWt~$(69A_Bi4On( literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f615@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f615@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..47aef54b6a082131a87122f54ab0218902966f1b GIT binary patch literal 495 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gia@Bp6>S0MfWZaOh2%};&vH22B` z{hK?(zg|gxbSV1Ra{o7{Fs)GR+tTm$&$lq%40P^t z-(!FHu+lWy|96(1TB^mR`uSDRSua+`RcH2{3_8H>q-K92kWcXE${6zr3sxlmR#fP$ z_>l7{dG`D38R~yO{O8`WM8TS!E#kaSLCHkfT`Xdsw03U1oAE^;NQm^Df@%ld#(R_(SJ>wliseqrdESmJe8eXwmmun;%4b8%~W&lKsN>_s*}b z9QR#3(h0ZTrWf3}_eEfVQ*FfFJ|`c+R|fn3zFl-yq;+jEbB*J}z(@}*mF?}?`{ELX zH+XE1czve(q+^4ZX~F+1?8X95e^&H_DHq$+3JGMfSxYC2ygTe~DWM4fv*YX* literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f618.png b/wcfsetup/install/files/images/smilies/emojione/1f618.png new file mode 100644 index 0000000000000000000000000000000000000000..2272b5d3f8f18595128fb524b730ba8638f8e829 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!ssnsNT!HleyXk1?OL{s4{pf=- zAY7m_AS2CB{p*$F=1k*)aP3EjqNi0`_Y|3b?@9mOnqHZp|E)6p&FT1?JHrny_FdWQ zJio>M-?j9=$J2kUO#eAM{n75|T^-)rV!Ss`bLZ=y`5S0Ge@T#EFoVN-frRr70q@W6 zFGw&@_)>664=A%G9#`1_>ud(c+^uEr{)I>MdTe<5<*z{A31yzf z&=Wyovt}er@$b45(o=Hoh?x4$)hcRlyd#7+9n$?A-}<@e-@6~-jBHX5dVX#@`ZI@_ zq3Q^eLxD-s3DpKEHr1(gMOJDr^c*q80ao^gwRf{50_kF*$=6n79>;L8L Yf}Tsn9{%F<0_Y6}Pgg&ebxsLQ0O}0CumAu6 literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f618@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f618@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e281cdc11fda7c11d77bc254907821a086bdad30 GIT binary patch literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gia$pJngu0Z<#-SmIw(}5&b^d&tV z4gKhYiU8FErPBP=A03MBDKakz*Zz7X`R2~>&C}ecRa^gBnEvK;{J(4Izc;4OZ?SLA zG(Nu}_}Fs)mA%fD3Hslv)4%4W@0sWQ_elDW$?4x))Bl}I|FtrGXQTI;jn_W`oh4Ed zA>XlCQ-GnW%wS(Lp5)h;@l^a#G@Jo?a9g8fWj z!$JOzrdZY|YBtMw1Z3kcFK%e$aueYFtoQbOKQHgczkf8VHL@}e*|_L!7yj|U@y5d$ zm7LMDf9J{1t`9o+)2#hR#KU9FzQ>koakz7tf1ISf^v#-@;Az>L*Tpq+hD+(|?|l33 z&{fslC+te{9VqN#Pwes{XMX z*6+#_H;Spb{&k|I*kz+K>n)vE_NBhHn^;xKdq!t>XY!)2H~*e{_*~H<{(9%y^uIq8 z{ycdg{Nn4&ly&9dN)9XS`Rv$l2Ss_t%y|=YU|IN!?5LVAFQyCRti0+qd%^MZ%L2H~ z#Ek#we96A~tM6V-dvDQ!-}Y`dON?Z#G#(nhv47J3N_>i@IKKBkuazn1xEdE%o((KmO7A6xFf zXP)=UUgzda}gAYc5s#i`2{nqcMv$A(2&qjcRVQRdq0rNHkdsfL6Q?q7=t(4+9T5z~2#+2*lp{IZ5 zDS!U>f8oU1kI6FMuL{4fj4#~p+mdKI;Vst E0AW?FcmMzZ literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f61b@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f61b@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed02b47e065701efc094c543f898c752590558b GIT binary patch literal 611 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gia>Hwb*S0MfWZaO|xSpUDT;{Wnu zpqey4_5X$SJw@i5l+Lb z929`m8_|2h3=E8&o-U3d9>N;J!kwp+`}i-+=W0)JdTnzweIaYZE?xo8y}R1iR^0q4)0MaBBwv}< z-TKEjbRXBA37xe=ro6b^JM;dweXDjXUiE5ihtqzQ&OfrtUs|-TRV(N9JHD~jr&ch4 z|9FbIqbgI=Bd2cFhgUKm=(UtzIB@Q(M%^^Ic(3cL>+D(tTFZaWxY{_o=E}CrZLba= zdlm33{%zu+&&y7#*L;{X`_lAJqSIAHWL+BSA02-z%sy+6bk)S-i`d_9r;VqkPJur=kyrFSh=8D$ho*MgoN2syn)|C$QI!e$^P6-Y9g2Q(IPC7;pz|BN=C|1Q6q(Pc(Rg~pM;K@v zdr6RAFvEHWf%6Fs%Zuv$fkG=iT^vI+&esOH3pFV4ga|t6fBU~b#OmCE9n%k}MF!2# z67%^m>3r`T#l(NR0#dr!L#tZ#!>+uTxVXz?{Eprf@eAz&wDac zY-fOk;GYl6odL9%yCldjnBo2Y^$i6A1_=%d%5`d! z7#J9fJzX3_JdQ7&dUINn0Z&_dkVwvHt!|}9|Niw`%sDf~WpVPkANRNZo%C%<eI@xFH4?bJFwcq<-W`0h;DT`r?T)uG3@@I~jwvu;_N%;uLe`zj$SHLzya?ZmG z?QzaLuY@=Jym0Gab8~LHjE>*ebM2EtZmVscY_$JRWUhzqrJ9ouXFRBzn|x2<-tG9% ze_K9T?>&Ap`A_7;DjVHDa+N)9@ea?^!s71SU!M8x+uE(iwf1r+nZDg>d-max4%S@X zzT_@Xkt8N>k>pB_)&1h}*Hc(sOtP)QYR=TAcFtmdzNauoqb{+RdC3cZx!Jr+(ug39x3mPt3WKMspUXO@geCye CRuVV> literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f620.png b/wcfsetup/install/files/images/smilies/emojione/1f620.png new file mode 100644 index 0000000000000000000000000000000000000000..5365338049cf28ed5a58e038bc1218722600d375 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!k^_7~T!HleyXlxH%}>3j$o&8P z!v8?<^YQ=hH~)V+_W$krM~9-D^8;4)I?r#hZ_YIS`sLH3d)IGXK6(Dco@0C0{eQJ! z{)CFJSCZeHj=#Ax{QQRCf^h9TD_?VMuO{sxbOQwIrMIj3cU(*u!-Q(Tt6P2{L=4G+&*@%0FwdO@gA z^`9pNo;6yZRqlxH{P3H#VQTQk`6=R4)-$O2nkp&9io~wibj(X#sjGa2Y*%*A+(#-N zjLY^o=A^OZTywKyTw*2HRrBJuQuCUO--`Moip$Qd(K~JRxlL1KUdhV&@)ZTq``?Ez zSR&N=_Ig}GQSfuMnVkRUJg@zy|NGai_qXeRFy?3R&YiwG)&%GW22WQ%mvv4FO#p=4 BuBZS2 literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f620@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f620@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc2e773f2c2bdcf5813c1bc148323979c731a03 GIT binary patch literal 632 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gia#sHrXS0MfWZaRLH=BNJu|Nomi z!~Z`h`FbV!(V^)1E%yKae*6FP@y*L8|G(ROZ11|2v)d{Y^b5kZzkd1j=H-+BFX#M! z*8Bf)%bU~jJyo&I`2m}!xv%VX{{QLN{0SB3Hw5pQ=RK|3x;fLh;=_AYpd+|Tg8YIR z-tS-EP#|EC;Gm#fr#6X!fpNB{i(`n#@ugFrmmOB%X?=b5$iYL^$F!^W{Aa!<#-<*6 zso>S`(;fV>%;GPzH^v;_=5u+I?04l~d$-+aUi0;P{D#~O@kVd9bIY`xWO}Z;$MB}~ zOlhz6Az50m>B+qbY;`qRFgWva7Pu6yoJn-!&O zSGnQ2O$}@7obQwE1&^Qie#yH^>ED@8E2JJjWp)1{^@01+9p}4El6-ke)0Q_Rhs#y5 zPpEQAT~W7qj+3TCySsk>#<_*><$QL&zt^+9VoKI>hOO$QB0mCIvluppKb_8!p#H4v zxz>RvS0mjRgdR$_nls$~Yq5R(!Uq)^tXGsav1W+m8P1gZwCF_p&KvT~bv7vy$_kT> zv&(wsA6T+Oc%t64iAScdn|b$jdeW~a#*&tuPiOX6RQP)3PBY~?#_Bt5>*ouu!WrIC zKK|2;48Dr)>Xn*d*S~mI>@S-akGpM_cG%cW`e%?7es2BaO^1t%qAY$jPVAEj`{v); zJZ)*fjk$bh>cwpTPFfYeVft3)ziEr_pZX&G^ply->_0(&8PqSk$3~yu^A8w%44$rj JF6*2UngCaJJ8b{} literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f621.png b/wcfsetup/install/files/images/smilies/emojione/1f621.png new file mode 100644 index 0000000000000000000000000000000000000000..9baef4dc69a55199807045a35ee97c446ce92ccc GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!(gJ)!T!Hla-~dcyprVpsp#LE* z`v3p`f9~J=edY4c{d>cGeNTINv{;%~n3;y?>U{e6@y4}lr%#;Nw|n=-wQIkxT=8w* z+^Y!4)DG1>%HIIb+e0;jk@}q{m%n|HnEok`2{nqcMv$A(6GFy-XAEm$J50z zMB{wzq;R2D1s>P=til_b_wN4hYv;h2uJgV5@Ql&=t8(Y*?GL|M8<~<5>)jSti+u2Kb!naBuK9>MXR~cd9{x=hZERN}Lx{H!1p7FYB@MWiJ!q^51nO z{@sr0%j&M{yF0QLU0%O4pd)nNYK@W~&u!j+uD^Nxdfokhhvi!@@ot|}Q@R-F4+c+H KKbLh*2~7Zr*{SjX literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f621@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f621@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1ff2b970bce9d1231b8eb8e89f5758c421fe01a7 GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giamH?j+S0Md9H~>E~P*M5+|Nnk> z*T(_Ar@cHX%uGMTMgRNq<(?}n_Zk{+u7zA8-?iV_?_w(1-gT~B*-tA z;r;&g4Fv)Q2@VR%b!w9s7#Qbzx;Tb-9A7&1`Lsg{0O* z>tu@STW9uLGU}Z+T)5^y|-FC+$C<|IdE0*vHe_!@18w)|uV>N99cq?`=Ub%lCAfJPoS( zl;H1Sz|Pw8WwO1dpZ$7OxscW;Q&kg9kDb<*y?EPUzrtCAt9Pews88Rh!)o>I$Fgz; z%``3MkJ3*?ycn%^eXWs>?tI*Cf3+^5b9;&QQ7^`j%0$H*cwuL>M&XRDvXt(#% z%a5+Mx-$qplWsI;xczs=?dt&oyEIv^=xk!mV98UAliRfDL|cqZZ)31ch=lTiZe?#P zHLrxAI~zU3KYIujUibL!X6ZfOKjYHNGs~V|oZN1!a^+d&;h;S(lb^4Zsk*{)>yg;y z$wztD{PNo6dur}pIrqX{uf7K8$9J?kJ^iHllwY|_`H7jI^&YWs`M$b@9m?%9_nxsR zJ|A@8%{sm_`tr7a)kFUujJwA7Wp;0!_T~I3r*Ch#^2t=Mx&17uEX%g?@OtIEHAP zuMK*>tI2?8Yl5fM0v^Wo)$4cP|Nqn{*zxZ|_I*!IpM3FB;!8)0(qg?Ao{Wr-3`LD^ zr#_k|_bZ~bGx3ju{y(#n^4%A06%#^3pHKZ{JG(fvw)uhTLr&%Uf`yh6M}iN2J<55J z!8{=2wa~`U1yM&fZ98&7LeII0`FZTZiU}&Wr?_S39-L&F>f9rvBCwz++2>xa(!#2? znZC#7KR$V;HQ-*#zjd46H1Est&1wpGucH)q>Him}dsRv=*nJCUUGk4}z94`1$Ky}g zl_~R%7aV5#XfXHxndR*Blz)BBDcpTNbl?4?&m|X5UERZ(E^<---Rrx5_f_$S&-*F3 UNW(Tz3>XFsp00i_>zopr0I*o*tpET3 literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f62b@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f62b@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e22de4fb6ce8c5dcf7e79ccc97573c7502d549a5 GIT binary patch literal 845 zcmV-T1G4;yP)fVIVP=-HUDvcpM*d0&|k2mll5+S zyq-(QsYZEZLcX9sgK0B)QZiRSCf&VKsf|OJd?@ww^6cs4+0)6!y{@O6lct)J;%aZy zXJ))xUW|HOykc3_woa*CPM=#yj8{FgmN{@)HKvI%Vm&dRf-IQmB`yE}01I?dPE!Ey zzpsFB5HMgsAR~Szk^le#D@jB_R7l6AmFaq_Fc5~1EUm~`b_k$A-EFn|zMb~|Z>nU0 z38J-6{eIv~@+QtCljPsQGIUK<6jjrWz35R_H6^Ltqn}`{V{WLU?Hr&ZEDzAP!ac>@ zA*I)*k8$djI>$fIr$LOTDwRpQjedUr6*wgTJcGjyu`(#&5;YfSDD7r-x4 znMeyCz$KnMeV5Z9l-PCT2?%k%%Wze6rmF=|xq`P{<}OyLXiyn0|GCTffaS<-IXFri zwdeW3jY&6W25HB{j zD)tD$Tov=zQnujnB;o5xCcze5ZNde>V|aaabsate6wLwZX2p2!M|g1}bP;~I(Pq`? zG7YoK6G@jdvH!S`2D%ZzEDXcZ&FyG(dowD{8Gw!b1{MMC%%I=zpPiMT0WY~`5n!%1 zFbye5#|*h|W2RWZSS1wXgRp|Ifbr}(7z+T825~%nT7_dUL-uLTuHn&^@xkZAIM2rq zp992ka<~rFYQZ@)z-@rk~E0D z1ePzn+v29R65 z{SJ_XqX$=-fC_-zG(YvPSCVe-48M8#WKWTK{+8$G&rkY#tKix;zdiH3SN1xu?Kf@C zG@e+h^8f$;itYCv-MgN;^jgoJvs3pU?b&v4#gQ$0HZ44QcGk*GeJf|T9ov%e<9hO& z)A5fEMW>}lp5Nd#zs0^X&89Lze}0or=(0nbfUXoM3GxeOa9E$2B zZ2j379QkbJMvu>%o~W4p7gV19czv2S-!9FFLf!d~d%GsQTXSDi=f$xu{m-Y30}CHL z3K5t){p+3|{sz`kk00|0e|%mmq!8pN)|M!?g2Q9Vq`%1tg?D{dubTC49k;@?zqwnP zwr%;hGV-!m#75r7XBus7Z!#Az-+5kfL3Av$bMZxGg_AvVR1ciUl3_Eho wgX#?$VZ4Pb&sM9il`~#(|L}MA;QEOA&&%b5jmuKmfPux}>FVdQ&MBb@0K^~#NdN!< literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f62d@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f62d@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bba321a5c675133a9cd03e99fbbe9eaa9e4e8819 GIT binary patch literal 899 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giahXFnzu0Z<#-SmHVGk_!nrEYu= zWB^GB16dp*xc1lv2m?+oKD-m67)Yl1ssI1~|K`r{H>cw^PjjDGs?t*xySCqK{-HhJ zuO%N};k&HUupnGJf6McV?e{hvUw!jZ=bIZ9X(1+a8??TD`P8%LZ0fvIN6*eWe}2-} zTLpLb22HEB?kO@ah%{}^G)`UpxM}CLo0m^c-GB7h-gSFUE#AC*@}}LB=1-_dD=wPW zn*Hcd^qzU%=QnuGZ?WGz&9X8y zKI8ck_O#gGr{C3Gzfbo&@8kclX13dd(3<^^SbO!a_NKK;gv^ruKiPKrnuk^M_X#Y> zdBFC6O0?Zimi?)>XGh#RbXO;RasKV6f2XBJ@4LC*f8P;zYXwz~Y0Do^yBJ#=C+B#{ z=D2+2JfS0-yU(|6TzUNP%+P(FA{Vpej=y(1_{FyG^YspmSx(c9EqWwZNf`wvTF!Tx z-pTAHCfKd+#>kl+~F zmA~uQ{1dU~b8IJD+kcc@vh}dDtmy38_y_z8Q`kRw%$X&ygr(UUSuAX>x zwf3)RcGkZVPsxYO|2}Q=A-(>)kB&UJa_7^Tb(_7U)j1E|%$9z2{_m~+fC)a=pJpl< z-`;wwF1jq_Zt}Jz(|vp@Cw*~B*_~IjXjR0&lhymPChfI)TrL_OJ!`+wm*t=4x9Q&j PCNu_5S3j3^P6;rs4T!HleyXlxH%}@ROhTxte z^Oe2MZ%)T=p634bO7f#a(R=23Pph_W&NMCv*S@(kTzcjYQ=k#-B|(0{4C@^P&L=c1 zFRJ$k3iW%sIEHAPubp&Js6~Op)z?{L?Y6T2|D(+_8PXTMkTEp31uaP)u`MPO|6`%&c^M2@4}<@7q=g|xXekHZa>cO;)g;@&%7dr z>CWY6?{E4lJ~dHsk&h&q8x@4i`Rho*r%c+V1_=g%_Is*6sa%{Xc*G Y!&q+BgX>q!2ReQS0MfWZaRLH=BIvhXLwJM z`PVDSj}Ap|p5}gRx&QeM!Sh?}n=_5yoQ|(d&@TwrUfJus{=mO=Kohx3g8YIR-tS-E zP#|EC;Gm#fr#6X!fl=Sn#WBR=_|mDjCp9bZI82XT&E~k}*1P}zU*yefY?$cO{(0KW zWH%>|x?Pe}Mdom?JhrMznnk7K;Wy7|Jbng|e;gLhIdEmEO`*mC^{o4nB8lI-d~33{ z{}$fZIsc!1yOvBYEANU5>ouwb7&dT|}MO%}Hh_sv^}l?C|Hd#oD_(tI1PKaPCpb1Nw_y)vyRC?_F>{}-R-;j6bd zTP3}Gt-N$j;CxTX$zM!z uckCZr%!@axUA<(vNv9xO``}{7 zU2|;L_M0y2H00OX&ImM}y(Gvlm|?wx!1;uR4Q#J{F8?j&m*fNR1R?bgTe~DWM4f;MAQ% literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f62f@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f62f@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..576bd7e78b1ba8d0ae3764dd86d3c7434b60c8c2 GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gia(*Y=ytZ?P{3*Zy%md0wOTt5Z>5uOy$}5WIPsdry)1wQYWP_XeF=>#=K&?X+s^ z=1k+t1pVjtCKdp#;VudC3ubt~e|KB7ucdAFt{nvcDDL-V& zZheCmTTvY@^OpA=CW^IsKh|{>>-E-n*vIV^SQNkT-V4k2n&cP1Rd{rkiC)j%;Bol( zPvLXNX6W?dlIQ)8DH`T^lmCc{) zaCpYcUB3S|y)Fo3^qc$s^0v3XoBo}SmbTMlV!czjf9*u4n8t^%uN6qesI3)!w07$0 zS2`e_9-k zKl@f{TEFp)WjP18PU}zZe%g^Ib>sb$j*Yi0<*qxvziwJ*vti2YXA=`87eAbOG}NRb z;@8nfr?@O21+n?&=KlMezkN@Z5U#wLQ WPUofd7e5Ea1B0ilpUXO@geCw1hX?!s literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f631.png b/wcfsetup/install/files/images/smilies/emojione/1f631.png new file mode 100644 index 0000000000000000000000000000000000000000..7b184e53c544e85ea9834b16fa9447e7691617fd GIT binary patch literal 672 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!z6JP%xB}@LD;@veO$VZH7vmso zAPHxDJs%5K01<~v0kweG|Np1?sr#C#{kWENf0O(FXT6`!MsJ?x{{Qc{|KD%kynOQi zyUqU}Rwa3<|1Ye6bvR^gzviqo`e>&??F3nERMGmV#Z z8m4>b%&FH3cTfwpReN%4|FzR=cdabjydYz9Lh!QS;LX*(=Qnt*tnfIv*m2h!+nyqG zg*g}Y1AQ)1666=m(BQCMAmRM|f&_*4?;8rv?_VEa@JiTUje&vD)zif>MB}{ggr{YP z4S3x4F1dND&)m~5C@n2b?(y&aXHwR_efjtC`RmhabV`qK#kT9H&he1`x6!|!$*dyq zq9y;E1A+6Kzi$?rA75D@XYu0RbG7%K-#^WMfA8Ocwx6$y7s({bYO2qRdzNr|GJ~km zm4$lQtOq8&&RmqT*u_;NXyrr|FK@}k#qxWCE0GC@DcO6~vmoBtnH zeL5fe=uq_kzu(@xeDeS2z*R> zf=JV4orVPgx&`6dGio$qT-E=7x$xms)Xrs zY+CpzEB|Ij=Em@dyL*EkZS&qU&->tF$BICsXlM10@18t4Q*&*9$*!fzYo`WY+vazE zgO}5qs}jKAlPd}G3uf5=USNO2`T~Q7fcps!1`7QN@8{3&zkmMx`uPP83Kbs~iZd`U zUGj8s4DmR=baH#qEeC-%R<{P;W2$9Ue11X#U4~~x#FMO+?f5=#-uL>ZJ8wgy{fvbF zA6~HguK)ix@85nTqmcj;XB)1lh50Z7q%WRe=~R1gS%hOEB{`>x!}=p z_Cj&{=dN2{?^eFumQ?!h+_vLCo25Rz`Z`(f^S0do7T#)eTbhLZj4Hp?=G<;y5}(_o zvbFxhTW_8zegzh1zwKPV|HT%jPbCWq)YZ1kWT*;elgS95Gu^X1+HffsZ^)JdV!ShU zRq{PLb?)MK%d>VmXZxj_lNxWozm&evB16Xex50w~_Q@tU4!B5{vc^E%q-L3yeV5v;tJgc+`{C6zl1@E=6#r+6x zc=qn|P1_@%cW*geBAS|4z4tcHs%4q`ck}tbPrWZxqbb$9PAT@Qk($=^iR(g}bOmeF zyrx_gIxEQ5TVm(ElC|pa3#aezlh^Hg=gV4thS~e))vX&syz819DtK09M%?cR5r2H; zxyaANJE9w<9hNb+KMJ)>wb{64s_5xi4~+P)N^E5K(XJ8P_O#$s(vGQzbS6D?IKt2> z_d&v=g5A8-D#c)L^V}8e>m#p8rTs6p6w#QQnHA`=ssB#mgP3juH%sXN&V?6`Jet)b zpyg^>oG5?khuli$Ep63OvXh<}ct`rP-;b|V+O_Mr>|v~RX_da93Uz9|BG9y(cHw}pElXPNr`#pAG*JH*4?`O(eAgk%#v*;^%=k1 zapca~bNiFNoUW9tdV6TPt&^Z~#;=;R3mqpeZ2DOLi&yg4wcXSDmskSx0fVQjpUXO@ GgeCx(h)p2? literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f634.png b/wcfsetup/install/files/images/smilies/emojione/1f634.png new file mode 100644 index 0000000000000000000000000000000000000000..d77594ce9e3caa53d89e6e6c38c976fc168b0397 GIT binary patch literal 506 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!<^=eJxB}__chk|3Tj@lgNLXDT zkO4tc7u8=sUH}nCBh&oUW1D&&9g5yF&%39{{LZQTuUC>Q6ZC^>`WCOOd2>3xq`!Uo z;`((PDlZ-`I=>-!^ECI&&d%;Rjk~s$f4-h|b7y!#xOT&|mZN)1UR=mIw%mVyi~Y1} z>*h@3*{|IDf$kG23GxeOa9E!paK7RF{p}G7_wU~?C~!~^uw8l01StR0)5S4F<9zO< zm(!XRcv>B=Y}>5QxuT=*>aEgm-|M#vX(XM`tkbC5xwDgDc2jpu!SA~L$;LAp`djQD zJD*rG&n)XZ>xV5)F?+1$RKAt^DE#2V4u?JS6K^~WlfT7Q=sLr4a$WAzvkbP2e)+|C zABqlf@VYS9H$(18_0lSaz1vSOJlx2&r#zk8DT85C;l*vjdi4wz!Vi>_Dp>?{=5OvV zG`V!cwQlWtZB1XsCC`P|^sPIx_U(d$kNm|p8hrhnuazAjsBx;dHf{RCQ{YpxxasHnP;m=+FzMbM-_qt~DbdyUJ^7js1muzHEy#8y` SR$v$~FnGH9xvXMoS)zD{(M70fP;a8z^2Ru zBL)U0eoq(25Rc`}=`&cd|3@*?IZ@PR^$GGZ|Izl`p1JaEQ_}Hko2$5azF+^&erH4Ax1=k_?HrT}5A^f?tGSZH%6rp_ z^_UsYg!Q}Dp14`1mr{FeYo4*{>K~dX-pyVb5PZqw*7_Mfho8#aaco-E9(#cy#Ajvk zH19UE)epUIPh10iu}Pdg1dN|X00`OGhqVjd|q|lgL2~Op}%>j>n@nq z&f6hle8u&rrN@Te+7IF;8IxISCtALmCs)qEHs$D(g?wCR-kLU*AK1?5b~Z)app!dc zjmwL!uBMaTH<=C}mw4}JJ&ED)G0*n_Q(BHNB!!hn^+h|KU=%11^53;h*+b{c$uvLJ zhf5T`ybR1NdhwJm`*h%6>01w3gy!wI6uxX;Qh}QH>f>8}=BQ<#p0hO}^Fs8u(jY9)N?;;8P8nlvrONs=k~Ov@8b_|UjDQ`?$f$leerATKiOaXS+iwjW_tiI P2{CxO`njxgN@xNAgc6RJ literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f635.png b/wcfsetup/install/files/images/smilies/emojione/1f635.png new file mode 100644 index 0000000000000000000000000000000000000000..d6912ece0194780cf40eea1100caf2c98c6bb860 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!`~rMJT!HleyXlxH%}@R7mE`#? z_Kyxl_Y_$kTkc;Fu6=W7_?y%5o2R)qXBz+i|9{Us?_+z{ZC*aPGC}|5<&!IWoeyN@ z-2|G*UJ~RN%&^`;;Cw>E@}hcwpwJ;t7sn8d^R<)0g$^t5xIAtOUvz7S>i7K_8jLoN zRo=6wsp@ikT=6AI=x_S{BYZR8Nl8tLQgWW^9wXVVR?i(WIc;hmOPY4#iGvdxw-{e| zUh-|pNi7ZOu=6_^80|Vm7+gz=L?-bjba*gLNHldY5z;(sD)4>k28{fEIq*8 ztm>Q_I3wtvtl%H+G{X~1x|I(9s*syCG4t)I+Su!{*V?)#F6+=U+xTEv`SkBGllI+_ rk2*GQ_MK;@yDiVZzF$-Sx81z-JI`dMC9imazG3im^>bP0l+XkKBvPOG literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f635@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f635@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d669be4e7537c1c5cf861c5fab456153f03d616d GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giav;dzFS0MfWZaRLH=BIvaxqm^p z&Z9%oU#}$3Z?SLAH2(kp|IMA@H!q*uJk7nQ$b4G0b!CEnPgU%rd)LpO*z@Le{GNH< zD|?+QQ=F!?W-m%xISFVJcS(?6FvI)(>l+FL3=$j^lo=gvkfu=c(!* zZ9MF5?^9dh=d9m0dri+S-lrT4e7Ow$TiG4%Gais&`JMl1ovVEAj>KB#FBkKyEo()) zUdS`3^H=DcR9m&+dGCjlY4dZG_^WgteM)>(b*Soz)LW~6%k-T0GrpSitM`hC)$J#n zefRa;^ST{u7ZI!$_baUA)rDns>1)!rtc+K$GL>mrUUT8m^5-jfUQV3Acsc%x8F#m* z8vk0gWXls*Y-3(0n)_dV^QGeK?1q;z8y22Y0rKU)9V{xEH=W z_JPap-jzQ-KREgDhwM+roie{{rUkxp+z@|c#q#S`{&Jc@Umm^O_+*LRCiC5O<-h@v-`@`nsfpNy*>FVdQ&MBb@0Om&}_5c6? literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f644.png b/wcfsetup/install/files/images/smilies/emojione/1f644.png new file mode 100644 index 0000000000000000000000000000000000000000..f0799a90bbeb99b60c34a3d214b4a42610ed841a GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!N&|dCT!HleyXjca|Nm)z>i>Vg z`Tyz2|96}JzgqDB#q|G=TmIiK>?txY2-p7l<YXc)_5IJiLTT5O3Zd{DUUj|>Vr*-cKANmlYf!fQz4qZS zwZtCV&U=bZ+df`V+cTlPqxz}AHBqg+tB(WRKIGY5_vYB^z%>80pvQV=^#Ug{r}I$|34l3|7yXsYU}@hzy1IH=Ks6R{~x#PndklW%cuWe zF5J9)^8cGv{~uPpIUV0q728u}-kfRt=-&1JANC&GyKeLH$xEiyPixJ-xih>nLI2Im zC+AP>Y0eKgw%mVZzwfaLY;HiuahC-71v9+gzrLYBz#zdvLAg$C5(5L{0#6sm5RcRb3Hp$ z{x_3W$G^w@bEbWV4j7NhWS&T%zm(M6XR#Fo4a2;p6gAiI;?mgp#7T2 zt>h_ND$95Sh8{ z+VQVfWJEq!<*X?^SiEcEnx+N&Z|SVB@;SdKQf5w3)$;o@Bbi)`4o}LoJRCPqM*L&~ z_pICi5sBxF{cQ^*CWZ>ITolmaQ5KEzb^oK4>lVS+8hcv!`Z; zTzopr04r=yBme*a literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f914.png b/wcfsetup/install/files/images/smilies/emojione/1f914.png new file mode 100644 index 0000000000000000000000000000000000000000..2b6df3fbf57ed13057694dbcd7527049eddcb72e GIT binary patch literal 604 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!?gjXSxB}__che#0%=s&DHZlVu z4kUr-!i6(mZ`I!07YyNol>Pso=BIx9?t^E~UwyvS`0Lm2|L->cf3@KM!>a%H3x8Zs z{&*q2r^tLpjmDd|@87(9a^>2sXV>Qaxs&(gaKz1>;h#Q#`Sj`2{fAHf|9pJo%E|wq zj{SeL>gDz6|DW}~IURp~gV%vYUYn=6uk3Z6-=y>P+xP!}zg@a`?EHy6H!ttJb9vL| zC0#3LxBY+I(o+?CYgbTne!#S9>$Ux+1(Bu`OI3Q$@SX(vP_!h-FPLHf`}qwG4haVR z3Ih8J0tD{QpP!&0{DQlgfq_xN)5S4F<9zDH>t#(2BCUxmf^RZ^^Kf}=c1eD}?E9yG z`cs&D93R&oeiY4odCGpSwmgw3^;1nm3s;3%rP#h;pYT#L{>`HG8B43qbA zZCPQgQuHvWy<@-g)L3SNr`I>K=bt&R$)Nkw_PLcYe}j2(Oo8P~chBn|EAF$HB}(K? zXRkI(xG9|QcPDS_1Zk5Sr?aN(sOXy4RaK?7T5ms*RrERTy;WkR(@(RTym=YXdvh#) z^B%psZSC@sJu78?Wz1W(YyXy88XwoiRFx%8HQQV(mV7Z})2pd@ixZzty}VBE^VVMz a|1foWtNNT!v?&4xB7>)^pUXO@geCyXxI@|i literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f914@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f914@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3aefd41a52931c67a58c4531236cede337d72be2 GIT binary patch literal 997 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?iHmFscRkgt!8^|L>;bLI3V%L1fRI zzXC+aY={Vue0FUfoDEg;|9_gFI*>iFROQp>FaQ63d;a3}&C9!P?hL-PRDMZ=KlZ7h5w(9UAlPe=k3z}_X|E= zh`+YY@8{27|G(dSbnp88E34n!nDGB`%lQq#Csw*urZ^p3?6`TF<=TGJ=1k+_Xyav_ zhF`yYdieO+|DTWlzuSE0@}^^Z*ZqI9>dCc*FRxGEynOP?*==8MRsVljwP&99t~s{z zn{;N>X#D^E=H}&-dp0e6f3tJX>Xt`GQjab7?~!8%3lXa)wRAWs*^5Rc<~r#>%wWFXMstKiUZA!uEu zZci`cWo8x+g~otjy}fb!zt?w8&Q**yE10=+cFq5?Z$c^_ev&;g`_db2y_TjOKA2!p zy>a%{TTb?UR{pt1F3X(@YMCA=eN^_dbDouptUd3s^O~Pn^A_D>D4JaVF68X`7xs!4p65F397ucad$-XI1vG=vvOWZlzOO$7-nkUs+FD}&`sfwLUCS2)o0nSr z`R^QmS4D4scJE5a9pmjmOaA;jYE$=4 zv1J2`>)93Y!jhA1mbb5&yYd9Xrlyi#f2CHX$*CW?|F~rT)`?sfRa;M|sRi$=U%&Nz z7gxZeFQV&@OJ%ne?td?*{8(0R(yOVn=bZcgI(uo;#zXQSIK`q<6{ehua1TD8!m0A- zW*)ncne6EYPa0mnD;M(i+r7l}`_5{;tKFN{JbLDP`d+UaPv^|{(C`ZZ%58J;_a2La_vOIvZEez_qet$w!U;R_Vk1Bt{omF6HO02 z4oPm%JAXBL)2g7gm;E;$_pMsvlGAAzU7@|=yq|sC3JsuT93?@1!3+-T184n-0*^~EztKX;2GoG&O1*UuC9tIU3D*q zPg=nAcaV1Gx-Ho?4SV_Civ8E-c(N+GUXcsGE`&Ek+5PvsyrOaG@yx0d zY}=kS7oST1qau>*AtxB@cb?&Z0&9WfybiOcVjnGI7(%W#zW)7B&e;CmNy`^nrSBrm z&&NE@KRGuvbpEB=nrH5qSrnRNoa^m1jG8QawsOkcgz2dp6|N{h<$Q8rf9L0K4_KVD w*yiaJ#LHH^TBtcU{o$YP@1gtdU;6)nxy4Js=kBKOpg?EvboFyt=akR{02rga4FCWD literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/1f922@2x.png b/wcfsetup/install/files/images/smilies/emojione/1f922@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..61382e651f7f255f306d43e4352a72bd2f566083 GIT binary patch literal 718 zcmV;<0x|uGP)PqdRPgFm z*2-YL-&45TQmf8Pd#yy3v_g%mKH9!ymcmNU)my~VR-L>>bdfcLv_`j8c+CI+01tFh zPE!EyzkqNMuP{I$VDIm*U~7M2GX4N?^e6|C#3yc?G6bgat^j5K#px+wj`W- zzgX#PABN7#wt)r}BkkXd<2dCktl@lROC7)=nM!I!-46vQbd(>WZPC52JPZNH8r
    xkA0Ti&>%bElD#^5P4ae+|JUraG`DhpU)~?#fz@BZC>K0 zSk9FEXWB>G5`tlY{6`mQq-r3O6Qcr|DtBkJOFYsVPZJSPo6F@kK`a=}-SVnDtvkem z(ZIE~Y2uNU)Flu#@eS0>q#2B`ltdGs06rx>XVJvPf*7ZOcSj@}iDw=tlQ>z2QFZ#5 za}0j=seyj;dvkp}3aSj*Po_aRhFm0I1wk6_dlKvhnxVQb>PM z#ut~~7gs9sEiZVazkh7>Pg(niQvVF=ANjWW16JK&>|hgEG5`Po07*qoM6N<$f~a^^ AQUCw| literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/2639.png b/wcfsetup/install/files/images/smilies/emojione/2639.png new file mode 100644 index 0000000000000000000000000000000000000000..b668c086e400e767d975809c1ef35b465562f085 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!oC178T!HleyXlxH%}>3j$o$cv z=$kvk&u<7mw%mWuJnzlZ+`nE)esem0Wv}zJYU|1b{ep1qx$|$&2AaZN666=mu--x7 zd_u$WqI!Rz&>T+}#}JM4r9qxT4GKKL0vZaBe*Iq`6(yEFA;!ozo2PZ9lg3&X%~clC z$NuDc26?-ORT{?YY&u!rn{{c;i|NbSPdq-(JB@|=`$T(>R2GK*HxrYEHl1zT>Rfh0 zT6(3+?@Z>OEY}+Wr2^|315B|Kjf-m_lxF7rpQe;s&~t!PC{xWt~$(697EygAo7# literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/2639@2x.png b/wcfsetup/install/files/images/smilies/emojione/2639@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..36ff6186b96c3cd2954e6478420ef0fe33bac78a GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giazyO~RS0MfWZaRLH=BNJkO7f#a z(dRb=7ldnXp5}gRx&NF-+nyrx=1k+t1pPOs<5%`N-`p9#XP&q3;r=Y3q1+`we!&dy z_pfg#5HLt^P*AQ@o5aAt=;7(&7~*k!>D1ekniY5)rbl=4u87Fa{r}&2`vI?pS5n76 zAA6#r>~Z3Jrj#n{bEj2l;d?U}C7t5`O;&B@QZpA8IaS#dH8o$x?7{Z@-=`9U%a-1H zaoz0h{@ORP_W$enb{A|B6$p6w-k|H;wEwD&Eo-{VCmWV`H|>=+E)A`moAbDG!9Rm} zPhKzJ?n#okY#7gCD{3sbea+lX6~z+gsIP`rI zzcKqA)|_Hkex$)tQEuIim?{6%Tc4+&ob^9K>04&A*zU=1E$$vIsGIYiWxeg3(zt8; z&1bA@Fx(~qzxQ_u!-IR`z7_k{um4^9TfQ#Kf_s(g2Zkj;7c+Re`njxgN@xNA DMhlHZ literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/263a@2x.png b/wcfsetup/install/files/images/smilies/emojione/263a@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..97aa5fc18f2067f96d6898f3bded181280f9aeb9 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giazyO~RS0MfWZaRLH=BK`Cs@vBq z$<3L@1>xG~Hv~UA6n%4N_?~&*^IPoSoQ^-X+<#iNbx)CbWrBVrTVOTNQ0|f-zhH*< z``0%V2pA+dC@9ydO=4hRjPZ1F4DmR=bn4AX%?bjp?$cbHo0WE`{QtjDc0D^$+(;ZM#49N?l4G#es_NHebH-;Ose7h~!HClrfxFCOwgK55h5?>V7%(>^UUm;O0*=I4ds_CfhP tZys6g*qGC``pv&ZI_n>PnzVm)y!&M*-mWh^=Yhe`;OXk;vd$@?2>|LB^uGWA literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/2753.png b/wcfsetup/install/files/images/smilies/emojione/2753.png new file mode 100644 index 0000000000000000000000000000000000000000..c341f0dc4cc7838f50460ded7ff21d48624f7760 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey3?#3AQJDm!j01c^T!Hles7jI$`z;e)pf-V$ zAirP+f&C5d3mg&@&i5PKUq3&74k?mg7uL`E@Cf(*DWH zKw@rO?Tp)gH}Btbdy%GYFrnv40eiiT#go40*euP|f3Y6}M+_$O$r@;EVmV%iv_}DYL2a*J=cvr;F)tlC<&MG|kRCJpPpA zvgGzd9FLA4cKGn%c36F3{?B0E9mQFtdUyS_%*@_e?%1R)ec{DAV>7Gkjm2Jm>Nhy% zzVqblnCs{zcFzB%RZs3C?^DUrr~0H%O$&G9&bc>#`pk{u))S+>*ByVAC9SG({>B{E zDIHcW#>=%OXZN0e@!{yo{S7vcgqCcZyr%N^&J*YS|JZv*tnTxFQK#3l@^xNo^OZjq iDl7*?e!h|3!|3TP&$Z|5j|8BX89ZJ6T-G@yGywoo-lWO^ literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/2757.png b/wcfsetup/install/files/images/smilies/emojione/2757.png new file mode 100644 index 0000000000000000000000000000000000000000..98626415d0e551b465ba93e37537c9ee5aa21138 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^;vmez3?zkEPEH0=Dgizru0Z;KR3(1o5gqyxsE)fN z$S;_oVZVXH{QiRX2?GA!o(qA(xt=bLArhC985%pAnuH}19IC(PvA&t}=I(Cc2Qn}3 z?q+>3=hfZa+z({l-`y>{p*ZaQy}b!&r`2ea~Yq30F?p@H)|;#e;!?-&m!UTk+x!pv4THu6{1-oD!M< DU=dwP literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/2757@2x.png b/wcfsetup/install/files/images/smilies/emojione/2757@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0cace6f3f976f185a68301e77ca31df28fd1983f GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcg3?!FMH)8=(Dgizru0Z;KR3(1o5gqyxsE)fN z$S;^-e}hARL4tz7`}rPN)eE&cNJM&DfDZ#kFZ>lWQj=_}gW`|8+}?p5m);t$6^G5n+X zjr)(cUCZ+)wLhlXH1r=?_mH!a+fMcUf$%4}KZ4#U+JuV4oUBdy@$g~!WBW9on2L%X z$)|Nj{}PWK*xAlLW8&p!Il@;Rp5Huo?Cu&ZbFurgzwen@J@cbc>7D-HeC!`)|FBm4 lqi{d)@%Cwb7h^1cGe3~+^WVxfi38{n22WQ%mvv4FO#o||kBk5S literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/2764.png b/wcfsetup/install/files/images/smilies/emojione/2764.png new file mode 100644 index 0000000000000000000000000000000000000000..1c84b8e92e9a9c0e1f88c40c719deeed26a1581f GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^;vmez3?zkEPEH0=1_3@Hu0Z;KR3-7K?c36aKt22= zL4Lsu0`DE>2N>Kx-> z|N0Jci~s%q|6le`ql+>#^XYnpAM8r|3=G!%=V#}ZcqBN7o9DUU9A=(x9DR(<0(1U) zHZ%&K`^mXwx!f^LmR$;*%d{9zBwlSV_{Vh9V5L7>0$;R!M=;yhW|awlqZytp{_uZ3 n(}R1-bM_0K+#JKh!obk{sd@HE(fj*>u43?X^>bP0l+XkKHZXHf literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/emojione/2764@2x.png b/wcfsetup/install/files/images/smilies/emojione/2764@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f4fcdf7e45d1114c6e31c00940049e3c056a543e GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gg^;{cx!S0MdAs*)tce#=A`s7;_G z$S;_|!Qj2X{DkxS?*}v}tnV)<-{<-PD0kD-#WBR=_|wbYeJut&u7T=h`$P}?j?Z1L z?v1u{QpCr!_PC%YoC{HbDsb6^X=|7 z>utqt#9xX1NxUaB%UVjT;^zg4m5~|Y8`CY<%zr(#j`PC9;9ct{&nZ6XztuC?7&pFel*ZH$Sr)2r2pNe@~Z5}^)x%tHLtPY(AuYR)bxyZcs;`ZN+g%cgy UyYx5y1bULe)78&qol`;+0HDdIn*aa+ literal 0 HcmV?d00001 diff --git a/wcfsetup/install/files/images/smilies/evil_emojione.png b/wcfsetup/install/files/images/smilies/evil_emojione.png deleted file mode 100644 index cc2c5f1ec72a531d123b718f1ffc6381c4d8bea6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!9tQY?xB}__chiCBOF9Zd7DSeX zuzxKADgJvr{abB1ko`3;{ogf^A%6~l$X_edzm}!{*^&OeHU0O-^!rH(`y<2V2l}iG z@jn?8`7$LX)7i??+F;$ZiA(0rD9=d=u``}IvHSo3|95ZQC~>p95+D1$xA$91%lef| zUOa!gB|PZQg$uo{b-TB1{POuzc0%~2bEl6T+V}g|u@HCLUwij{EiC-|`0>AQ-@aB= z)pdpE$8LFqAdFBpMNELlJ${glDqFm ze7Wy?WWV6igRLrOi%LG}_%_`x6p68rVGT|ZVw@@3WGQzD7)MKa(deq|*lulhH-C#rft+gCRQ^Rb9bD$VY8377 zvI-Pfk$GWC_hV_PD~=C57mJJS$@s#<)HTCAZEt6w* zESOF9*Elgt9Ly-+omBpOgXC1{g-0Dc%YVmh++ExzdG+pG&!b`=POYE+|Jb7K_a8xyABAU2W))6a66qILIZe$oM)~nlW0t~${#_>fXIXFM zOiC9x^LOIiDck?JEGlkSj;!!p~wX$uWcchPp-eA z)fnc$xTa`RRu?l@2D9wCj0vFyuIw4zOePCXhZ<(uu6yO*CMdf(c#9>RX$Z7Te^$wvaP5lsx|?$tF9<3pI8KZ6I9AkJ zJ^3Wd_b~5YnMYoC-`&%&QQ@@w$5VM~t8Js1BhH(tmq?AKjzs8LsUll6hx%-p7WuGjN zvv)i6(l+y)>(>R>RbKwp-1Xs+Eo=4q@`*YR#XofmIeqqCuFPsNPicL>qI_Tf#P|o( tkL!QA{8aqc+t1v8Dt`UkzwiHA>*MX~a%Q%Ns{r!`gQu&X%Q~loCIDK6GI;<1 diff --git a/wcfsetup/install/files/images/smilies/grin_emojione.png b/wcfsetup/install/files/images/smilies/grin_emojione.png deleted file mode 100644 index 30957a65968a46712c32f2c3c9512627b59b355b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!>H>U1T!HleyXi!tn>)idPjmlz zC3#x4b()`gPm%efL(#{U`|p|O-JEH>ve&t%Dt6`Uw#~~Y-@JVC*xq$-UOxH%|NooQ z@de@9l_^e-?p^=-F!Pp9V=HyQ98Z(T{ce!u$WZ^FAkD7t(0mcjMi+ z>Y2v>yA?er-@JeH^GzAKGc(`!evUKX)3u1cQKjE3V8z+Iw734iLUB2sUF)3;gw~z8 z=x*SV@moBbE zlZ9db4H_LzDztNcNcCsv6i{MhGG(7DIYF~-vgZ!xvnJf!0Vh8AaT#RPozqyx*5xlG zVY0csVU|;)KMT*SpNqQ_Rx#YEJ~dzO!DNvePa0Gb`Lr}Ww;#0G&)Lv+=AHeNur#HF z(9Vzp^XgSMcutD>v%z=Lk+6ix-6n_q;*2KdJ2Z<0H8P8AnJ^dOS&0TE%3NPUJGv^+MqxJG#2oR5o{~l?u9kb5+)x`gxVt z-@DUuzn9+s`=G$S@=m|r_s!@3ekif8t)K6IE;C0e_UQu?V6-!My85}Sb4q9e05yR^ AD*ylh diff --git a/wcfsetup/install/files/images/smilies/heart_emojione.png b/wcfsetup/install/files/images/smilies/heart_emojione.png deleted file mode 100644 index 638cb72dc4e6d09f22662e6e607516f4310d3f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!j01c^T!Hles7jI$`z;e)pfsbuwG$)z`;(AMg|5(IZqeIkcwMxuN|D!qQJv)!A*+CZSK$i z>*pr%P1cR{;tjulbAp3`XI?G=7w!D8PT)EBZ$^S`FwaSmwH@h!rwf(uh@yI&W&99#Qo^>N! z=(ig8g9JgbUAimGcIB=Rx+|o`$Ix(qk@3J8M&pLL%q10UQ!n@i?0sRjuT|)GpQWvxCo`o7xiXS(LFudmqyU+D# zMY&Hs^he+0+a@pi)Vkr@ rK7niZL=WAnc242B;mRb}A1ojCT6y<+pG%j3!N}n0>gTe~DWM4fQ|H80 diff --git a/wcfsetup/install/files/images/smilies/huh_emojione.png b/wcfsetup/install/files/images/smilies/huh_emojione.png deleted file mode 100644 index f99026a3bc763644474f7b60a9c49ee220985b07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!wg>oxxB}__chiYPuTDihIUM%! zLj2vmLA&PI&TrD0SgNwN-}KrxzaQ6=PpovCQKPYWn&q-i!-I<*&u{R0bSS!~$UMzY z{pQZ_W6S-|ZwUT+CAlD6d(S-Y&C}ecRa?I~9bcK^G=Dj^P&ZBtA0-T?5#JyO(x)^QQYzg z`$grKTb_U3cR$L$H1_%L?INs8PDdZPuy@bZ;?oP)2u55L`S zZlB(x;5(o3+s?nc9P(7#4l>9DS?qNBqu)C7;lJxzxh9WKcrV_ze*Fht{q;GgFCG4) z-a1Y6Ae*MitY7>S=3h`_)#fVQ#LL6*Sn#yP8Ov2(V)7dsG`<&X71``8;nv}*_*5?M zPPkxXTf$+c_Q$57il;epLLL;fIxnbZU|+cGe{0lB(TQpuhTj=Q6vUp$i}5GSV@zP1 zQW|07@bo?7nVB9sJZ{Gr&ddlDn6&y>aO8($9tPh$R&^Z}nJvL^`DV?=n7g{-ug{7# z%)GFeOF#X#0#jM{)MR^RCBuoQ<^&vBW4}fy_eoHO%F->$4R5tBavlh5IpDjhVymr+ zC3Az%DxMqGvWuz|v{w#uICGotB-rd+Uh0%*2;3Y8rZ)!cACmBNH}o8^v@4 zx=*vvacFCZxURcthP-3KME^DSeKbBtyof)`d+2P;-w6?mr$@h7@2{lj_;;_R s`_5-qe({~Y@9kytdB3iGum8+baA=DCa`i=~z(mC0>FVdQ&MBb@04eX69{>OV diff --git a/wcfsetup/install/files/images/smilies/kiss_emojione.png b/wcfsetup/install/files/images/smilies/kiss_emojione.png deleted file mode 100644 index 0ff808fd6143aee0600afb530ab38f50b74c9951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!wgmWuxB}__chiYPd**ppCg`X6 zsUKVJzp~f)=FaeG)z)9HB=;1V&u_6W2-iNpA$apN_eY1Kn=_5yoR0r@E&b1d^nd5l zzqh7;Nl*WKJpI?A^sjm8|E{M0-kAQaHvMZpNF0KGtxSKlH6G6WF&QfUX9tw=y$8w& z)k<9ebhk}OkY6x^LBag}{{!9&G~9RSS2+J42YCPg|9yc5Ah|x_{(pn>|M&O*FHktJ z&54nLfr-o0#WAFU@yvyzjYl1Lm;+cv4m4-NNPkpVTx36JhZ#8iFcDjU-%T`8(SGpFtKVa z>5}(wC`#(-D167-cVE|DwWqnshOz^VHT zdE6gQy2#?SZ1b~i*t2*mC<&_)v?5|0?Q9EPe-^ag-AOBm@ z`|R>^@xFh>Uw<86zs5%Y%dh!yyW+0f@A-DJ`}yFLPmdwcr7%jy5` zrvK=JihnIj|9c$7{+gHm?_B!#*7R@n>31p)u>H#jIPG}sUth(cw+#a74e|+(! z#o=I|^oi0JW^+{Ku?xmZY-iR?$V#s;Dmgm6;MV^?zkj!GUAw!fTXmjP_VT^!!`{V5 zTskYoKXd9w*>x}TnwPH=E&aG

    =8mx3Tt&jch$i*O=}%Ehv(%2zY(o*@JnFsA2RE z;XB`NOj2$r?}}tqQ<%Db@+Rd!a3QKs!L?<~qfw{FBbPJqCZ>G|nsSE7>@0ezAA%heIz^ le;Nj^3BI$$s_(^pE2jDu%Yt$OgQu&X%Q~loCIDdME%pEa diff --git a/wcfsetup/install/files/images/smilies/mellow_emojione.png b/wcfsetup/install/files/images/smilies/mellow_emojione.png deleted file mode 100644 index 065d193afe495b633267494d4338a0e28b4569f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!LIQk3T!HleyXi!tH>czG%=6wn z&3$FBbDE#}{1*F1hoaAK2<|B||9U04In(&qa{p=7){WfPO@Zd}mjw9*GZ+-i-~T`0 zy+Ff#hkk|g8#V^bV_;wm^mK6ysbD;Nopss~1s=8s3iT5UxBs4BoNJ=2IbrL2OWjJ{ zSr`7NuK8^7@toAEOFJ0~4wi;!EbCcb)D@z@x<^Flt7J;Yrv{b6jyUIs_HM}{68$e& zg#%P1V(aA^zh8HeU=88me=Kl(g;C!T-oQ+cGYnUMbe&o;?dC7{<`Uy3MqZ~YwG0z} zaA>$KbY9%oCo|(@iP_u-9(iRYA`!1^K4$hQZ?wE1epqUH_hMD9S-iEIc5IBAvzBYt z+s6WD#L|sd&g5;%=YQ~0_!jd6!vj@?+r(zIGThMVGjrN3k+3_u=2q_0G`WV``sVGn z3g(*`xc;j&xEr6JUSxaRJlOX1_F~(^d{e3#JdF8B diff --git a/wcfsetup/install/files/images/smilies/pinch_emojione.png b/wcfsetup/install/files/images/smilies/pinch_emojione.png deleted file mode 100644 index 2954017f6c2a7e6c3c32509fe18e24c058ffeef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!>;rs4T!HleyXi!t=1k)>KlOre z?XOpo-<*!Wxij42*!IalBlt^#{DK(_3g++sAMjqF;l4w^!ubswgXS?XFp7J+IEGX( z-o2h)_CSG$C1Gbz>chBq^;doUD|Q@O^6vZnk`Eqr>visD(?l2d|rGT-xpZ_N2`&IrA@bWlo4}&p1{izfGXVf6E0;r404PUG7ut z?sSVyy!GIZLX@&ydxoD)8_Tn`3zQnK-C-kP61PSD!b%5D;K}FuA3fv+(}^ z)cl*r#A<)vd;dRy>qBMk?}aA$n#r-@9^sncfdMi+C8CyV-Q`^S~>b^3E*YcI2B8G3gn*p^Kz)Xx){5vXA~ z!*ZgrkCInN;3<3 z^Z)NRZ=PD*Q)Irf*Lm|a_nSMzzh2Az|FG)+hrR!QKK}pz|FqWZG(Yv`Y}-AHZ11}H6Dl?@pZx#Ls{en#?V0C&Y`OomYU?+r z<0}*Nzg|f$2-j}TG@jpLZ+tO(70{vlB|(0{3{Zt?Y-7HU7qJpVeP`QWqj|5vBa5Sx)I zwKwnbwv_>kd}cdOd|b8S>CSWNpVv7lKka(FuRUzu{e8a~7A<&cdx&F#YvSXRnl&z8 zmsIX_ocI2ofL6%@t@{T%FL;L7bu-AaF8$qnuFL$Cb9!9ey`$oH?udu{Xev6w%W>!Y z{)P{tIW;GrF$wGVUD|SAo~M2B#}uw>LNj9)Oqh9Ae2H%Ot*Xte*`?E)Hf*`-b;Vxa{OC|eN$_^=HKFHuHuVAI&@+iE@|z0HTPbJ zhN#jN@e41j_Rn9ru0eU>16|QYF$X8Ul4;clH&|?CtawUvfq!VN;VDs-kf|Mk>lli) zW;^%%P|Ez+)Fo!9;1c#Qzwh^y>*vKdC;t33^TuOO{qyWbPAO07(sk>;XkM=WVBGRz z`HxK&2@-5g2^Op!b=Mmue!bV}F{)<%Z07at-kVQy8pb!TPc)lqDz~a)&Ew{!`CBxV ze{yDq{Ljd)XL;b)Lpdza+>Nu`$~U?;hu7kE{G}sr90hCjbBd diff --git a/wcfsetup/install/files/images/smilies/sad_emojione.png b/wcfsetup/install/files/images/smilies/sad_emojione.png deleted file mode 100644 index 6ae71f233b9d8f9c9ae92074003160aea441a01e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!Vgr0aT!HleyXi!tH>czG%=6wn z&3$FBbDE#}{1*F1hoaAK2<|B||9U04In(&qa{p=7);D*CS0?BeglqS4#hnCNz+V#N z7tCN#Fn|C5fcF9o_Z|8b&TrTlG>?ISae}9dV@L(#o2#rsPZb1M0+eJQy({~l{O+0X ze1Yic;rBv+FueJ`bj7T`iR)H!RUf%vQMMy(!)%|^#}scH-Q*Q(7ukM8^!PE&+m`e9 zc6+Zoxx_}^{Kvd6Pb~5tp8EZ53;V5qx%_g+neQn7e*ajozFtgEuBiNL^YLw>sgDh3 zuZ^fU81+`+IQN|?J_;O*4Hz7gUstd{N)bqQOWMTE7Iw+Sqw(~Ogr+vvX+B0V$E1WU z!~%^v3nYubEqsv69&p2<_I{(+Hik;0lc|O`S!AjR6Z8h@k*uk<; zho4KgW|5L@fm+6;Z?PXk)!#ZQ_peg86@L2N_Cj@~9LX<{^W{I79Cn*_>G(ane-Wo1 z-srQN_AtVHXX&4mQ&N22WQ%mvv4FO#oTZ B6#W1I diff --git a/wcfsetup/install/files/images/smilies/saint_emojione.png b/wcfsetup/install/files/images/smilies/saint_emojione.png deleted file mode 100644 index 57f5151124fbb01644beda0259b718ef61cde2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 935 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!wg>oxxB_XfmH&xEp=-W1@4T?| z@aAJ@r(e3zo4Dak&gRD(j;*?Tx#j=e^cUBw`t}~1d0_9CTZQG@ZbHo5eQE(vB~TVW zy16sFr^r0bPknxi{hQPA$CmpSglj)K6y2O@JgwS#^ECI$1pTj9lK0H>UfJt>enW7z z;;wZ-r|Xsk`2{mLC>S)X-~ayq`2c~0{`>z?LBah0`{(xuyjR$NKjFMVf%_>&DFz0n zB2O2`kP5~yJ;S(}dZ$jvyzdhcY6=r7-eMTdh~cFj0vRI)}}ds*2w`%`yaQ$I+_ zpS`lS#ayzDyW;F7u83_fmVD{A+!GqxYWiYL=j{c`v7#Z?%=(IHy?tC|>qF~1n=I`2 z@04D@{VmrS4L+5IoH^ItM`o?v8uZgE$>E*GmL~s=rCZhY4n6k_-D@E*z0T^+`kx+m zq~=e|*M483mbd*-@}`@cq+>fQ_tlklH-zq9tDRN6-8UKu7t7w`!=;I z@BGMj6jBXac7U*#9QR~9hFVDQL zbXxJ8Q=IYEqX&n#%dxM{XW`*+yVc9lR?%>Hvu6~;2IIXm;_Xjzo{uqcV4PgJ?(*p` z*ETS|SuuZd4||BofuyB(*C@PfJz~(Fmt&G}TO;Dmz3YemA7r-E^;vRW^Ki(&IZt+r zU7kMO_zg91gp? zH|WGlw~rU%A?gn0I09x3=GO^EAuz8@&EMtor|~_y32z z|9`*v4+L*k{r~&z|EFXB-);W?xaI%%n>R0?oYtD%Qx*IF)q-Pt*QNQX7etzV{qpJm zi|KD(K55PmIDcZ#=H-+B-!J@nCHee@;LX$Ady33&?hKz+ZT;qSd}WH${0S9%HZ5E^ zyY11T=z?(V`7QR93HryD`>*VEZq77*_vsh3D~`HM^4R9ewv&!ie;v7Q?qcs}w`+>!Uve;K|Bfp&=H1(0@AxG}zs-A=NAt{oAE(H7 zRF>YK>$PmX@Rf}}cEuFQv@tU5SyI$5$)z><)Ezz1ZSViPn3pZu8R0qg@$Y}90&R@c z8TZZjVs-hXKEufX*`W1j`S(3jy!Kms*~M&2G0TM3q>T{_iZUlUe;)4jN;Ns9npb7^ z;M@wHh^bnevRETZ6ds?c-;gB{!Yn51!LBufWpUp+D+Z0m6t9v6jX}&;9HK%NbOs4e zaah2`x&GXX%&pdM#j3cn7%KXAu`TWn>+g|^iZx}pUdOb&rPkz=_owV^OsxS@af?-Z+t znd@0~)E#A)?vk6pnU-2IHNDC~t-(#Sc@?j%f^dQJMIZhGCbQLwtIs;{cd)Dp$e*_H z)*A7KOh&&CuPc=Pu9BX2YX7TQ;=w0sHpZ;&xR|vy=8WQ-uIZaM+zV(qE49S?UVu#W z=hwG)|Gvgh+Z^^jF~@2XtNW#!mu@`nJMpge(2Kr|?-F{9`KxmFJ$9A<zw>BTen$47wsw@PEw!kdTfXA(Y)0kVxweougyyO5b)um+HQm862&(eBU@!xmMvn^ zc`XvSkzH-w8q2_z8$wSO=|x^^6k-3c*UvTf^BPu7F&n1!O8T?rJ-%u6t}kKk{#8}a zjxWF3*>d^SON;RR&w04MR_}Xvy!x-!yMqf)Fa7syviiS^U-jqJ{yO~mynXHe{rSm> WPv2hV>RAd*)eN4lelF{r5}E*b`Sm;i diff --git a/wcfsetup/install/files/images/smilies/sick_emojione.png b/wcfsetup/install/files/images/smilies/sick_emojione.png deleted file mode 100644 index a566c109c2818114918551309e51c005dec93bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!js^IHxB}_p&qIksJ8lOZdK|L% ze(>7M{_{@wl&)}Y+2U5U#%1Oa@6Fc(>o>TrIPW**fLGTJkHx2b*PZolU2I)5%fcy6 zv3IpyaK6TgCt>HWMqfLgc;iUY<+Jf;Z%3ZH5q0T8+@0O2cXy=SJeYj?Uc{|^Da(#} zBsb{ozZVo;p*?kr)2WBy+phUvJ{RYeu2M456sR7k?CPn6D`(>13 z$E#Wt7+4ir4Y&V=@0Z+_zh1j~g8Dz(lgi%S&s&n(C)t>t-Elzk zV5HBy;Fv`=68bE8osa6isWzROT^eGlbmi*PlYuS^Bc1FPKAhm6vqD4Y!mADcO($LX zy;)=8iaU4ZWlVI_V*8ul_6psQUXt~E&$MMn`)=H+e-oj)H0RmL49&Us!#`Z*yOev& z;^*8AGfeGkf8C8{@HL;yV(s_9+3(ARyznJYkDLv*c-Qb}`7tr;wexTD@1BsH)GlA! zUR?I)pOx7RpZ^+7z50HynO>I)bTAcYecx^yqUM@3dDriM;$L}Y37uM9dwh}ki2{%9 z*I$<=-raj=6XRFKH<#mUBfjg^-wI_3_i^h{*PCs6wI$o(7=wRI9$Q<3UcvWG)*NrY zGvB%xU$LKi1LJ$%MdAueE=8%oT%37EXzkWXhxku$o1J>N*U8I0N2F5MA!Fa9ANnW5 zqbwM^VsGC4uDy!uLtcTRfC|^TiJ=ENUKb_U%sgZ`x2Lh?wVT<3xu4$3o=IDAW3yoO zrEQu|=hQO2xF|E#@@oU@@1o#SXKy!%NbGhsUtl=l9-GP8B0jc;49;xNmV}18O5ty! z86qw(OV7>d4G<5TxG~kAkwLh~hhag&`D<)%{#gGmIB@U(IlWDMjdBUTA8&MJ_BzP( zT|BxmlRG-XC<1W`7!qXy~}^^ zdtFt3D3+gEWGSrvcl)*Pnsx8~CbWoO-Yeg8fA9519$>m`FsOg6uut@8@*{&yb1M0K tm#<5{z4QIyho>K3etP@)=NE_~rlr diff --git a/wcfsetup/install/files/images/smilies/sleeping_emojione.png b/wcfsetup/install/files/images/smilies/sleeping_emojione.png deleted file mode 100644 index 9ecf600d6d832926098b93680323925226227672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1075 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!4hQ&zxB}__chk|3Tj@kNf=Hop zfr4<6qkBtsZ7Y9qAqOZJ+tkxNr}6XkETAlqd*@VsW@qR0#q|&_P~_s_qLTi0Ah%&! z%jauZ(TzRpHdHQNSrbNc}8x#H%|@H9X5o+9(FSCT6e^rux@H)k4ep634Mbo}`Z z!F%R;7ldoiZ?S)LC>m(mvE}|Nd!54ka->j-f$4##i(^OyRJjvvuo2tR}a5m`(RHd?{}C z^rmU6k6=gAvI8wbN_JDVXKhK0nsCC1_t?C^ij`sedc_?BSDRnSo8cy>tiLpU+5*og z_akAuuQ8s?dbV5RZ~UPb2g7T5c-v|_zVuv7=bR+(-!Nm533H}V+GlZ*c_&VZHa1o5 zZau`5bUJj(@jZI_rD-SDKAvxG=2mxqioC-0cNZ+~`agbBbKfnG!)dYaW5Z-7&#c4+ ze21i#UXyRGz1pl&`s7X2l{%UA%wJCYQ#^Q$!9rw_O^(3SpE*XYiH(cwC-3dseo;j4 z$&a_Z^8>wQTUPr07TD<<;UHwYAy79_OEw@pp>h7_uy_~A+3ObWZCf<)24luzgQ<@r zKPz$H+*`%%%)OOcOhf8hgMRq(i|ifUU#@aaGtNF)qxg~|w(536%2vrFZaprYDU3={ z>&0Rrlgjz~#VzLP{S>x|NT|QF>(0-AOxF3^KUd7M{`p;e zLgYh+@8TcMuPd4K)B1Try616#UX|(-J|He;d$y&%NcO_XONU)5)@^I3 zu~RxkCw^I3&mTKbA*LwVo&bsJdM#vR%!w?nJFW*Pow!ZFkpoy`6{H$!t4|C5Qba>(3=f`Eq~h%I~>Q zUlM40YtO&U{Tj29-Co+;yqx}g@%(*Z+ot<%oc~Jxu2lbv>xaekfZ2w@)78&qol`;+ E0KAJ7xc~qF diff --git a/wcfsetup/install/files/images/smilies/smile_emojione.png b/wcfsetup/install/files/images/smilies/smile_emojione.png deleted file mode 100644 index e9e53c03d45ea2de7b5be09679da18be5446fc3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!Vgr0aT!HleyXi!tH>czG%=6wn z&3$FBbDE#}{1*F1hoaAK2<|B||9U04In(&qa{p=7);D*CS0?BeglqS4#hnCNz+V#N z7tCN#Fn|C5fcF9o_Z|8b&TrTlG>?ISalfaFV@L(#+v%;FmKyN1b^lpzA=7mG_x`7) zX)r~>%Ztu@NK|WO7vcJ~gn_U9xx`bAWYx1% zEM&@#sITIfZ}R!b!wr8vDc!MUm~WSQ-~K?Fl7p-9)oTXAP25vw*{v*0x*_^L!SV7X z>)hh3h+>8dqNVp4XCMB5qw&6) zMUmE%x9&;M+URL1`1Q=()|fwy%d$TI>lCw}ptGd*=(#Ldpzopr04{qj Aod5s; diff --git a/wcfsetup/install/files/images/smilies/thumbdown_emojione.png b/wcfsetup/install/files/images/smilies/thumbdown_emojione.png deleted file mode 100644 index b63da2f20a8378786d90a9078bbf90e9b3486152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!_6GQbxB}_di-XY6`*mR-HidsZ z5c_d!S_C)e!=?y`_HT#d-mVOJw>tFGHjo2=3V__t zyP|+1aC1Ivj^J>cqz&|deMyjCFoQz>`Tz3;{)54OFzL{s(4X-C|9*x0|NlGupYO20 zVg361@8=sh2;2{NpYXoFzrf)A`}qO)&le=DUoOA%CIbWGBTpB{kP61D*Pb@rHV|NW zu=n(lnohGbXF~E$z5gG!w`gnE+Bt6?eZQ|PrMa;F(%D>2$y0K%Pp2{-;BWe{nWJO! zhxQlmetlP65ES~ymnDAVvatFC-#fo?CLMKZev{YOV(M{2^8s5&gm`-%W9ouqyN>W= z+$v{yHYN0cQ}>!%4(+9}&g<)QS@%iYYuC)1e3rra8cRoeY^F%>+h~J_^Q}6pYZAR~ zrhVdBCGm0T&Qkv5Yb^nNjNB}bI1Xq|o06NlMIo%_WZCR@3f1P4JKrj7*K4}5uH7k=q7M|a7$rQC_;BdPQ3c%vu44L6XWX5lI%jsu$5R!Tv!-+3n0PjOGiPbh z7q-xyiR*5y5aC|X_(tgI%qAi8>yey^8%@tVVZAZY_~&O6U8`1OQQMB-dCeV1{yU}1 zE#R8Vy!OlVx4Jv4)z3BFIXgjwTY-g@nN9R_`-Po7pG3G=O*GnD#WrY57%XpM++D+H wzw6JuqMP-vKmByEJZo38kF}TiFaJBniu|m|{w2Sz0uv5{r>mdKI;Vst0GQmREdT%j diff --git a/wcfsetup/install/files/images/smilies/thumbsup_emojione.png b/wcfsetup/install/files/images/smilies/thumbsup_emojione.png deleted file mode 100644 index 5bba6dc6d51ba8149a3b8d87c11ab048addd4bbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1425 zcmah}dod7u@Xx63hntFQ#64W(67Fa6T5{sn=R+zf1FbTj!F9FM!IZ5DM2OpKr$XVDDD4 z_OgBE?)I};J5G!joy~X+{|1x7>z091#HRRq7B60|wtz=#iODqUZ>+Kw3$+xIzcdj2 z%F3bAdlTzNG<|S%U;haq&A%4CMftc?$;6BhKqW$s6UU*jozN+7C&g7K_-9Drd{_X9D#7xT1KKDpJ6o9Nl;$F z%E2aGluP%j9&gXL(e!I(Fc;k$L>AJC&411QoWIj?Tc4?fRhDNrgjwKz%k#CId%Cij z8-BUC99Cv(f_mfWeJ*nyUON) zBJ&k#>V4_e3%i>J7TXKPLws9D7`q;rLz{H}trUistM0m`8{)^V?e0F=wS%t*ZJK8f zrEtWr_USpG+rd#$Upe_v3vuCh*?e>Bl?`Uv$N^$k=|IIaQUTo+sfvqR=`ht8wKYrx z?P6{HeP7YT?5H#8hWoLfmszOet1{VIn6r_b3jxJs#i9M*>$=7~ii{Gl@N8LxgmE=e zGDQa6+OE}8;S_5kY=|q82oF(IN_t@>eO8HE>12W^yp7i|WFds?2udi}`rE`s=7&K) z<8sLyzib`fAtQ3mQV}ZEG32P_z%zSQxva77ghwwtGE^=OZR^#zT?wc@^|&vhKqapi zk8FOZR4gQ4Jkhz7Vg$3rmo%OnNGFFW)|B*4tl2b*?5xA#C)!>`G>Hs9CoX4jTQA`B ziypO;qO{k2x}~>jMBRmOHCder@qO)?NMmTA9BU@FfP7ujJd~ zlHc^#cU-wDrghoFOH9+NAxPDkGAmi6adKH)1}$uy7rhB5(JB6j#bgD^^|s76%#Q4r zZN-;84kORnEHeXEd57bH7uJN;sbO`#wjwMqc^2hP`H_L{rm6#zyJS# z!TGtKl3M$T%Phho znN6CrzD%B~Gec5g(kg@YMN4FO0<)URTzIwKvaIcp*d&#slGk9?%o?4;{I^4>$K{gf zC!v5dY#J|FZr|_}dc)LI@{Ni0_X*GE4L-lV$yIhJU&@fX%%mG_ zcXE|tbxCl}WT=wA=P0Q$qjBm(zN@hhbona(sjhmgwmih&?4YsUNx7w2?`EuhFgs6b z&mODz3QNP5l77)TwhxsvKId57x5;mKl=y_{`|gi-Em%G|9L(W9(P}y84pW}Q+dqH2 zBoDtl@b}3KTjm2xryLa*33z(c|BAxr2XAY+O>NF^`rqfT@z|KR-|BQMFx@bCy85}S Ib4q9e0K$KqYybcN diff --git a/wcfsetup/install/files/images/smilies/tired_emojione.png b/wcfsetup/install/files/images/smilies/tired_emojione.png deleted file mode 100644 index 490fb5669549cd1172f86a45d8e9966b5ea20846..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!x&nMcT!HleyXi!tSEr($91i<< zA^z^(pj~rp=Qrt0ELB~(I=G=6hB z{_BwAetTb^8I$sPAR}lM+|%`~NzZ zZPMHckILUluT;72_viNi(?<++Idm@1;MqKHmYGRT@vZB(3T>}E+UX}>ecerY+wIJE z)fq=W-`>oB!Sh1U@ti)nGwHp`>5Ij`wIt}$_!=ren_2U=XWBpTnEsBDPP3qKqbAQF+kZFdu^iP&%1^!=7H_MtNtJ*lvI zui~AdQ$FeRdb6GGGZ%Ra{`q~qbmyLVeHSd=?e|-L`CrTq0o7TD95o+yZqHfoUb5lF zhq~vbnu{Y`H6EDGyU>2MHM_B?$XD{yf7YrZi|%!86B2ZsShyE&9%Ew++&fU&t0o& zGt=qH42R8JYn&D{G1c#2-v7Ew*sxW-gz1-Rciq{=@g^_BV}GU2uDiS3-r|M7+^@ym k|K2RNx6$;!|G#0rFVdQ&MBb@0Abx+E&u=k diff --git a/wcfsetup/install/files/images/smilies/tongue_emojione.png b/wcfsetup/install/files/images/smilies/tongue_emojione.png deleted file mode 100644 index 25757341f9604c7fecf535e8b45d4c3003d0d538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 752 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!dINkyT!HleyXi!tn>)idPjmlz zC3#x4b()`gPmy^+xc0H-{{IW>Kc<#Fip-hcV*e$h;{1l-AK6tad!2vfR_~eT{pe8i z%lN|ot=0c0SG-Rt`9G`d|JH*4*D^n)m;b+z^?zN_|BAZ*S2F)EFHUibWd%A&uO!GX zn8Bc6{{H^~?*$s}JM=4@|Bn~!Z+htt)XDh7)5S5Qg7M81*1n?#0?y_S*iKdapRMP9 zD!*VCkAKe9FsqX9wTUqvdz4tyP0E!;{4_3J*|l|JM^f*)kJ7Cwr$pYabrrk)EdKsN zkLf@A>l|2}=f9cbB-%Cg?~|4T{{AmSIaVy-t77PUc&D4sW!L3D4QJlEL{8Ya@BRa( zW2+Y&Vx8h=lQ3slri+8d> zx%{f(LXFkebq`%-*z-nYzubXXP7hO#E`^7iE1v3|`eeyqe&+V+_Ts5;m^>y+unGKF z(eR(4^Yn>?DV-e&GoRJ!ZfHM!+1x!`Ar8SJy<8u-KEz#E*|1Q9P4q$~e?fDi5TkdXj#5HVGh@!Osd)koi#Qfs zV!Z4-{p6em8R#&?GT(=3^Mz3#Z~t;zbH zd|?txdEx%M%Nv!C_!zy?y`jVAI&X{Kgl{f#V!Mn29j{66ig?4VY47qzTG(c@%oiKy p4>IDl-Jfjd@7d(=<*&C5L)+9m|F5TKdI3`kgQu&X%Q~loCIH(xc~t-a diff --git a/wcfsetup/install/files/images/smilies/unsure_emojione.png b/wcfsetup/install/files/images/smilies/unsure_emojione.png deleted file mode 100644 index 7074afcf5b7b3e5ef27cee8f6087cd34689fd71e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!dINkyT!HleyXi!tSEr($91i<< zA^z^(pj~rp=Qrt0ELB*DJ}*na0PK`%kO3zPU5JGC{u}T>It&$)`XE@s|Yo z1v3~F%-{b%;JrY@eTRO9^BXn>&0}C-yyxlS7*fG_cKX#rs|^HN_>GRfey1B%`+xiD z1p7&orr3Uq<-3`<`D6Tl{Yh(9cm#?@{?gmEIAg^EP1%bXcMT36F)5i?;e6QLq**#| zX2y{%vo>!(cr@=t`{h=K*yoQ=WC}P<_V~DwS$E#s2O^KE|Nd)u9I(21-qm~yDgUG@ zjSI8)Eq$3`c3vw|mfL#T^X{iAi~E`W#>6e%6+6@3bMuequg`9~e_!vJhQa(ivF@WK zlF=%6wa>4p_@^5efBd$k)QjG@+-Zj^{H8s#zqjYtPKN%2uR^)^7;=eTxs-3qVGyl$ z)@1Jl2kjmw)~Jc$3!A5)Ec9%tY8c%e4H?MrxZFOJs z^3I*zy{PYI!3LMgl6QipGCI53xWc!)nYRDQNM2r09)IWXm&BKzoSu8AbpEdg3U-wp{d%u9 i_ka7KVpsb=dS3X$l$|-H|IPpt0fVQjpUXO@geCx&BVh;t diff --git a/wcfsetup/install/files/images/smilies/w00t_emojione.png b/wcfsetup/install/files/images/smilies/w00t_emojione.png deleted file mode 100644 index c3bea9f25107ca855af161e851cfe8706b582f25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1583 zcmb7Ec~H|w7!6m0;Z(4Sh#*1|L?kF63Yrk^!<-0)GXzA4%AqI(8RSsQIR*tpIpSFr zD-A?B69`zN0s;l)(wK-52w)UrM9yD-jMM2%|LJt++xNYF`@P+n-I*_kfb-CTZGb@_ z5G^lHR}z>pD^pzs#ESZiX$VB=I>Fb^4O{}k!~YpV9;t`z{e3W^seCV3JlPRgnu;tu zY1VernNzZRpbiI$&+fTDxL`Na8^+4qCVA}ttoA4{T?NQEz~nVxtU%J0`fH9&(=~#y zuLc0e7Xk1tW#&W6KvOvInFq`c_dMff#Sx-#2m!B}TYEj8VmB?7l$<+~pAy1iCM&*v z0T!l5-wqDF~CBg?m+yj^LNq7f1 zXkoZIm7I3uP{~qyB9L&VCX_6H5i~zY8>Po7;!;*FI^a-3abX2{DtbfX30C()aKq6t z4AKs83ycpNO=n^u3L{tOi)A*N<5H+o3)%TE<=3^iZBOjbVUF0_BOL3`qiZF{D? z?BU#3>Cu*h?Um*Q0S_~2#z@OqXi^Gqc+KWv=kD!o-zOUO9hFxwS1g)*j ziV2IgE_Hk)mSr|xhQ;eSF{|4i8N>XBV3XAxJn9>`fKX%C5xmvycr5v&r^}NF> zwm0*`+Y#?u?+H_Zp*-;Na1k4&oh??Ss>bTDDK6f6nA2q;{0=y_8<{ zMa$geWazs*y#|SWx3yRw8p7CbHaD*to6Nu|SL-j{Qr-Ib#cj%&POW*O658S&4)F%< zv~SbignU_AAjD}wsc2v1gIeD-KIiIlo!%Rroy0ya#O`(RI&s4S1NzytdJum}!3uq% zxDj=Pk+uA7#xjP5P9r`R!H_y3aUC=EiM;#3gyZRqUe0lPr4Vc?5HB~JYc-ad`4@r2 BQxE_E diff --git a/wcfsetup/install/files/images/smilies/wacko_emojione.png b/wcfsetup/install/files/images/smilies/wacko_emojione.png deleted file mode 100644 index f0dae7b78934463a1a877f61b6846df49e95d36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!&IkB}xB}__chk{O>c;mF1QAE$ z0tMkBKn8>hBsU#j4dDXWYmaUCdaEFR%k!gWXEp7-1{6PkeiBf@o>Pn8+^Cp;Xb({2 z)v2f-*ONb9h`+lxsABs)AUd(qZDOg)vQEPpH5vyOJ3cuaHor;d+BUzQJ!f~#v0dA5 zdVYh~qeIa>MdoRK>Nj_WA6xE!enarrE6D}n+I!}CZ=UAPG5@g~&`bIyL4Lsu1_kT) z|DT_5Um)PU!T<9D4fo&ouXk_==vQb^IRE}X5X=V={}sSw!x_fjxeN?Ue4Z|jAr*{g zueX*xwh~}_uyMBilB-kq?%sap4DWK0ocsT0Zd+!k8S5JPi?9FupKS+R{_7o&U9Awd zau?szE3bHe`E1q-P*~-g6u;z8zgW;be%<@QB3U(4gX*Gh=xvzLp|tPxf&WW3zk3|~ z&+1|u&()PaxsR5cZGUC7$=B6-x4{PW?d^Q&aRX33funj_(Y%Fl;im~ z_Ujw>b*_w^VL4G}yR3QQi;%RyB-z!h8udpR_<r_|9)!kG=o}?Ij^og`*&`bd9Ss<+2_cqN=&MI%T{0A^{D&hmZ-ms?higB zS;)+r=NxcCv$Xv8+WtPd8=(`fSIV#~T`g_U&ZKuESo>n-j&uDhE_;1Bc;}JGmZZ1O zvqfU~Eo9etHF8C~S1hPz-h1!!@r%#3H*m3TXsTCsP<;Qi)I@4;Ut+*DHXpZ%D?KBP zTW;2f%skI?YF5Mcz(;2ntl_MXSG~u3>OpUc@B!(}vqczZb|u;t^xlM*DJ}*na0PK`%kO3zPU5JGC{u}T>It&$)`XE@s|Yo z1v3~F%-{b%;JrY@eTRO9^BXn>&0}C-{OalA7*fIbbb2}SDl49&`i}#;s^3Qzy#D^b ztnZP7@{&`#KmYyL^CV)ENBy6j5!)U=>Uw?STKc_t${(5vY=ZOS*($shYK7}HCv;6% zQ?2Nr=BW7li|Ymv<9mxk+8Cb(Wj$l*5fFPFzcMVljqA$(dl}nIMDMKJqTg1w__A-f zM&|##_4juL9-aH@u0_Y%rXvUSU$cLm&+q;?tMty{=Dg}FufN`kstLF}vF2>+x%l^g zs*CTqYE3=%v$HNX{qxegf`@;W*`@?b&q;3NJ})X7Q@^%h>E#}Iu6eKI;}wJjMSd_n zoGssA?bM($`DKn3W8FTD>*lduDPS$vO12 zjQK;F)`8FeMP|6HX_&3M;E?R40#D8C49>UHKX2FK%T@C#shG#IWu{JwF=sMofR0hX zy9-uvO$sMGb~``6saPe=)O%c3VIH$cf6v$NZ?4P~8?4pA1}loTolC-q;r0Q*WJBA*S7gRIuyNmn){x4 z-fvFFf4!32Q)Hgzr{0`td~CUYLAZ8hg8sB>>zg~n&u<7`+3P&N#s1ogmfJuF@s|Yo z1v3~F%-{b%;JrY@eTRO9^BXn>&0}C-{OjrB7*fG__WJW_O$Gw24?=eYz1gcRb&T!P zzx;IG)h>ryHh=wX|9#2y{{O2(w&i$i3)K@{y)J@Jq%YKPZJDin{?B>YLGLXu6xnRs z^GbPo{Mr0k-ZfEv_OEy)GOlbjetw`M_|fa1Esws&INfz*Ja^h+2d~Jbfai9^UlpO zc(PL2VDFUk2dgDpx!#E#w%by*IFP^VOV6eQS$z3wcYU~ZB_A}HN-bN)T~qW#uc`4` zl1bDStL+_vLEmjd+jf3Ts_LBKsFmH8Ajz_N>o(oPiPqK}W}93*!nNNvY@0RVO*Dgu zw9?E2)#4jeGu1yRG}#KuDm6Du2>N(=#haJ!B2*MAuDsWnD#CHYNvOK2V`oD{P_~Er zqQ8aGu7MjSI!_i?DAT`t_wBX`*A#VUGU$BIN^d$ z^!YvO?M?RoyYlx}^6%H@|E{mM*!S=0L;KkH|KDo=KK}W2{rmc2wsSe@$sx)G%D^^xXX_f#0 diff --git a/wcfsetup/install/files/js/3rdParty/redactor2/plugins/WoltLabSmiley.js b/wcfsetup/install/files/js/3rdParty/redactor2/plugins/WoltLabSmiley.js index 6d2b7f5f7e..3b82fdc12a 100644 --- a/wcfsetup/install/files/js/3rdParty/redactor2/plugins/WoltLabSmiley.js +++ b/wcfsetup/install/files/js/3rdParty/redactor2/plugins/WoltLabSmiley.js @@ -11,7 +11,7 @@ $.Redactor.prototype.WoltLabSmiley = function() { _insert: function(data) { this.buffer.set(); - this.insert.html('' + data.code + ''); + this.insert.html(data.img.cloneNode().outerHTML); } } }; diff --git a/wcfsetup/install/files/js/WCF.Message.js b/wcfsetup/install/files/js/WCF.Message.js index 5c60d3921a..dc489546a4 100644 --- a/wcfsetup/install/files/js/WCF.Message.js +++ b/wcfsetup/install/files/js/WCF.Message.js @@ -719,8 +719,7 @@ WCF.Message.Smilies = Class.extend({ require(['EventHandler'], (function(EventHandler) { EventHandler.fire('com.woltlab.wcf.redactor2', 'insertSmiley_' + this._editorId, { - code: elData(event.currentTarget, 'smiley-code'), - path: elData(event.currentTarget, 'smiley-path') + img: event.currentTarget.children[0] }); }).bind(this)); } diff --git a/wcfsetup/install/files/lib/acp/form/SmileyAddForm.class.php b/wcfsetup/install/files/lib/acp/form/SmileyAddForm.class.php index 853c702b5a..507d72409a 100644 --- a/wcfsetup/install/files/lib/acp/form/SmileyAddForm.class.php +++ b/wcfsetup/install/files/lib/acp/form/SmileyAddForm.class.php @@ -48,7 +48,7 @@ class SmileyAddForm extends AbstractForm { public $smileyCode = ''; /** - * showorder value + * show order value * @var integer */ public $showOrder = 0; @@ -77,6 +77,12 @@ class SmileyAddForm extends AbstractForm { */ public $smileyPath = ''; + /** + * path to the smiley file (2x) + * @var string + */ + public $smileyPath2x = ''; + /** * node tree with available smiley categories * @var CategoryNodeTree @@ -85,16 +91,28 @@ class SmileyAddForm extends AbstractForm { /** * data of the uploaded smiley file - * @var array() + * @var array */ public $fileUpload = []; + /** + * data of the uploaded smiley file (2x) + * @var array + */ + public $fileUpload2x = []; + /** * temporary name of the uploaded smiley file * @var string */ public $uploadedFilename = ''; + /** + * temporary name of the uploaded smiley file (2x) + * @var string + */ + public $uploadedFilename2x = ''; + /** * @inheritDoc */ @@ -111,8 +129,10 @@ class SmileyAddForm extends AbstractForm { 'smileyCode' => $this->smileyCode, 'aliases' => $this->aliases, 'smileyPath' => $this->smileyPath, + 'smileyPath2x' => $this->smileyPath2x, 'categoryNodeList' => $this->categoryNodeTree->getIterator(), - 'uploadedFilename' => $this->uploadedFilename + 'uploadedFilename' => $this->uploadedFilename, + 'uploadedFilename2x' => $this->uploadedFilename2x ]); } @@ -151,6 +171,9 @@ class SmileyAddForm extends AbstractForm { if (isset($_POST['smileyPath'])) $this->smileyPath = FileUtil::removeLeadingSlash(StringUtil::trim($_POST['smileyPath'])); if (isset($_POST['uploadedFilename'])) $this->uploadedFilename = StringUtil::trim($_POST['uploadedFilename']); if (isset($_FILES['fileUpload'])) $this->fileUpload = $_FILES['fileUpload']; + if (isset($_POST['smileyPath2x'])) $this->smileyPath2x = FileUtil::removeLeadingSlash(StringUtil::trim($_POST['smileyPath2x'])); + if (isset($_POST['uploadedFilename2x'])) $this->uploadedFilename2x = StringUtil::trim($_POST['uploadedFilename2x']); + if (isset($_FILES['fileUpload2x'])) $this->fileUpload2x = $_FILES['fileUpload2x']; } /** @@ -165,11 +188,13 @@ class SmileyAddForm extends AbstractForm { 'smileyCode' => $this->smileyCode, 'aliases' => $this->aliases, 'smileyPath' => $this->smileyPath, + 'smileyPath2x' => $this->smileyPath2x, 'showOrder' => $this->showOrder, 'categoryID' => $this->categoryID ?: null, 'packageID' => 1 ]), - 'fileLocation' => $this->uploadedFilename ? WCF_DIR.'images/smilies/'.$this->uploadedFilename : '' + 'fileLocation' => $this->uploadedFilename ? WCF_DIR.'images/smilies/'.$this->uploadedFilename : '', + 'fileLocation2x' => $this->uploadedFilename2x ? WCF_DIR.'images/smilies/'.$this->uploadedFilename2x : '' ]); $this->objectAction->executeAction(); $returnValues = $this->objectAction->getReturnValues(); @@ -189,9 +214,9 @@ class SmileyAddForm extends AbstractForm { $this->smileyCode = ''; $this->categoryID = 0; $this->showOrder = 0; - $this->smileyPath = ''; + $this->smileyPath = $this->smileyPath2x = ''; $this->aliases = ''; - $this->uploadedFilename = ''; + $this->uploadedFilename = $this->uploadedFilename2x = ''; I18nHandler::getInstance()->reset(); @@ -239,6 +264,32 @@ class SmileyAddForm extends AbstractForm { } } + if ($this->uploadedFilename2x) { + if (!file_exists(WCF_DIR.'images/smilies/'.$this->uploadedFilename2x)) { + $this->uploadedFilename2x = ''; + throw new UserInputException('fileUpload2x', 'uploadFailed'); + } + } + else if (!empty($this->fileUpload2x['name'])) { + if (!getimagesize($this->fileUpload2x['tmp_name'])) { + $this->uploadedFilename2x = ''; + throw new UserInputException('fileUpload2x', 'noImage'); + } + + do { + $this->uploadedFilename2x = StringUtil::getRandomID().'.'.mb_strtolower(mb_substr($this->fileUpload2x['name'], mb_strrpos($this->fileUpload2x['name'], '.') + 1)); + } + while (file_exists(WCF_DIR.'images/smilies/'.$this->uploadedFilename2x)); + + if (!@move_uploaded_file($this->fileUpload2x['tmp_name'], WCF_DIR.'images/smilies/'.$this->uploadedFilename2x)) { + $this->uploadedFilename2x = ''; + throw new UserInputException('fileUpload2x', 'uploadFailed'); + } + } + else if ($this->smileyPath2x && !is_file(WCF_DIR.$this->smileyPath2x)) { + throw new UserInputException('smileyPath2x', 'notFound'); + } + // validate title if (!I18nHandler::getInstance()->validateValue('smileyTitle')) { if (I18nHandler::getInstance()->isPlainValue('smileyTitle')) { diff --git a/wcfsetup/install/files/lib/acp/form/SmileyEditForm.class.php b/wcfsetup/install/files/lib/acp/form/SmileyEditForm.class.php index 560e968d30..4564dcfa65 100644 --- a/wcfsetup/install/files/lib/acp/form/SmileyEditForm.class.php +++ b/wcfsetup/install/files/lib/acp/form/SmileyEditForm.class.php @@ -73,10 +73,12 @@ class SmileyEditForm extends SmileyAddForm { 'smileyCode' => $this->smileyCode, 'aliases' => $this->aliases, 'smileyPath' => $this->smileyPath, + 'smileyPath2x' => $this->smileyPath2x, 'showOrder' => $this->showOrder, 'categoryID' => $this->categoryID ?: null ]), - 'fileLocation' => $this->uploadedFilename ? WCF_DIR.'images/smilies/'.$this->uploadedFilename : '' + 'fileLocation' => $this->uploadedFilename ? WCF_DIR.'images/smilies/'.$this->uploadedFilename : '', + 'fileLocation2x' => $this->uploadedFilename2x ? WCF_DIR.'images/smilies/'.$this->uploadedFilename2x : '' ]); $this->objectAction->executeAction(); @@ -101,6 +103,7 @@ class SmileyEditForm extends SmileyAddForm { $this->smileyCode = $this->smiley->smileyCode; $this->aliases = $this->smiley->aliases; $this->smileyPath = $this->smiley->smileyPath; + $this->smileyPath2x = $this->smiley->smileyPath2x; $this->showOrder = $this->smiley->showOrder; $this->categoryID = $this->smiley->categoryID; } diff --git a/wcfsetup/install/files/lib/data/smiley/Smiley.class.php b/wcfsetup/install/files/lib/data/smiley/Smiley.class.php index bd6a491c0b..704e388f01 100644 --- a/wcfsetup/install/files/lib/data/smiley/Smiley.class.php +++ b/wcfsetup/install/files/lib/data/smiley/Smiley.class.php @@ -15,13 +15,18 @@ use wcf\util\StringUtil; * @property-read integer $smileyID unique id of the smiley * @property-read integer $packageID id of the package which delivers the smiley * @property-read integer|null $categoryID id of the category the smiley belongs to or `null` if it belongs to the default category - * @property-read string $smileyPath path to the smiley file relative to wcf's defsult path + * @property-read string $smileyPath path to the smiley file relative to wcf's default path + * @property-read string $smileyPath2x path to the smiley file relative to wcf's default path (2x version) * @property-read string $smileyTitle title of the smiley * @property-read string $smileyCode code used for displaying the smiley * @property-read string $aliases alternative codes used for displaying the smiley * @property-read integer $showOrder position of the smiley in relation to the other smileys in the same category */ class Smiley extends DatabaseObject { + protected $height; + + public $smileyCodes; + /** * Returns the url to this smiley. * @@ -31,6 +36,10 @@ class Smiley extends DatabaseObject { return WCF::getPath().$this->smileyPath; } + public function getURL2x() { + return ($this->smileyPath2x) ? WCF::getPath().$this->smileyPath2x : ''; + } + /** * Returns all aliases for this smiley. * @@ -41,4 +50,28 @@ class Smiley extends DatabaseObject { return explode("\n", StringUtil::unifyNewlines($this->aliases)); } + + public function getHeight() { + if ($this->height === null) { + $this->height = 0; + + $file = WCF_DIR . $this->smileyPath; + if (file_exists($file) && preg_match('~\.(gif|jpe?g|png)$~', $file)) { + $data = getimagesize($file); + if ($data !== false) { + // index '1' contains the height of the image + $this->height = $data[1]; + } + } + } + + return $this->height; + } + + public function getHtml() { + $srcset = ($this->smileyPath2x) ? ' srcset="' . StringUtil::encodeHTML($this->getURL2x()) . ' 2x"' : ''; + $style = ($this->getHeight()) ? ' style="height: ' . $this->getHeight() . 'px"' : ''; + + return '' . StringUtil::encodeHTML($this->smileyCode) . ''; + } } diff --git a/wcfsetup/install/files/lib/data/smiley/SmileyAction.class.php b/wcfsetup/install/files/lib/data/smiley/SmileyAction.class.php index 2ee0764aed..748f6cd186 100644 --- a/wcfsetup/install/files/lib/data/smiley/SmileyAction.class.php +++ b/wcfsetup/install/files/lib/data/smiley/SmileyAction.class.php @@ -46,14 +46,25 @@ class SmileyAction extends AbstractDatabaseObjectAction implements ISortableActi /** @var Smiley $smiley */ $smiley = parent::create(); + $data = []; if (!empty($this->parameters['fileLocation'])) { $smileyFilename = 'smiley'.$smiley->smileyID.'.'.mb_strtolower(mb_substr($this->parameters['fileLocation'], mb_strrpos($this->parameters['fileLocation'], '.') + 1)); @rename($this->parameters['fileLocation'], WCF_DIR.'images/smilies/'.$smileyFilename); + $data['smileyPath'] = 'images/smilies/'.$smileyFilename; + + + } + if (!empty($this->parameters['fileLocation2x'])) { + $smileyFilename2x = 'smiley'.$smiley->smileyID.'@2x.'.mb_strtolower(mb_substr($this->parameters['fileLocation2x'], mb_strrpos($this->parameters['fileLocation2x'], '.') + 1)); + @rename($this->parameters['fileLocation2x'], WCF_DIR.'images/smilies/'.$smileyFilename2x); + + $data['smileyPath2x'] = 'images/smilies/'.$smileyFilename2x; + } + + if (!empty($data)) { $smileyEditor = new SmileyEditor($smiley); - $smileyEditor->update([ - 'smileyPath' => 'images/smilies/'.$smileyFilename - ]); + $smileyEditor->update($data); $smiley = new Smiley($smiley->smileyID); } @@ -69,12 +80,21 @@ class SmileyAction extends AbstractDatabaseObjectAction implements ISortableActi $this->readObjects(); } - if (count($this->objects) == 1 && !empty($this->parameters['fileLocation'])) { - $smiley = reset($this->objects); - $smileyFilename = 'smiley'.$smiley->smileyID.'.'.mb_strtolower(mb_substr($this->parameters['fileLocation'], mb_strrpos($this->parameters['fileLocation'], '.') + 1)); - @rename($this->parameters['fileLocation'], WCF_DIR.'images/smilies/'.$smileyFilename); - - $this->parameters['data']['smileyPath'] = 'images/smilies/'.$smileyFilename; + if (count($this->objects) == 1) { + if (!empty($this->parameters['fileLocation'])) { + $smiley = reset($this->objects); + $smileyFilename = 'smiley' . $smiley->smileyID . '.' . mb_strtolower(mb_substr($this->parameters['fileLocation'], mb_strrpos($this->parameters['fileLocation'], '.') + 1)); + @rename($this->parameters['fileLocation'], WCF_DIR . 'images/smilies/' . $smileyFilename); + + $this->parameters['data']['smileyPath'] = 'images/smilies/' . $smileyFilename; + } + if (!empty($this->parameters['fileLocation2x'])) { + $smiley = reset($this->objects); + $smileyFilename2x = 'smiley' . $smiley->smileyID . '@2x.' . mb_strtolower(mb_substr($this->parameters['fileLocation2x'], mb_strrpos($this->parameters['fileLocation2x'], '.') + 1)); + @rename($this->parameters['fileLocation2x'], WCF_DIR . 'images/smilies/' . $smileyFilename2x); + + $this->parameters['data']['smileyPath2x'] = 'images/smilies/' . $smileyFilename2x; + } } parent::update(); diff --git a/wcfsetup/install/files/lib/data/smiley/SmileyCache.class.php b/wcfsetup/install/files/lib/data/smiley/SmileyCache.class.php index b4942d274a..d9280e5301 100644 --- a/wcfsetup/install/files/lib/data/smiley/SmileyCache.class.php +++ b/wcfsetup/install/files/lib/data/smiley/SmileyCache.class.php @@ -21,6 +21,8 @@ class SmileyCache extends SingletonFactory { */ protected $cachedSmilies = []; + protected $cachedSmileyByCode = []; + /** * cached smiley categories * @var SmileyCategory[] @@ -39,6 +41,7 @@ class SmileyCache extends SingletonFactory { protected function init() { // get smiley cache $this->cachedSmilies = SmileyCacheBuilder::getInstance()->getData([], 'smilies'); + $this->cachedSmileyByCode = SmileyCacheBuilder::getInstance()->getData([], 'codes'); $smileyCategories = CategoryHandler::getInstance()->getCategories('com.woltlab.wcf.bbcode.smiley'); $this->cachedCategories[null] = new SmileyCategory(new Category(null, [ @@ -64,6 +67,14 @@ class SmileyCache extends SingletonFactory { return $this->cachedSmilies; } + public function getSmileyByCode($code) { + if (isset($this->cachedSmileyByCode[$code])) { + return $this->cachedSmileyByCode[$code]; + } + + return null; + } + /** * Returns all smiley categories. * diff --git a/wcfsetup/install/files/lib/system/bbcode/SimpleMessageParser.class.php b/wcfsetup/install/files/lib/system/bbcode/SimpleMessageParser.class.php index 3be450ed3a..7196737972 100644 --- a/wcfsetup/install/files/lib/system/bbcode/SimpleMessageParser.class.php +++ b/wcfsetup/install/files/lib/system/bbcode/SimpleMessageParser.class.php @@ -61,7 +61,7 @@ class SimpleMessageParser extends SingletonFactory { /** @var Smiley $smiley */ foreach ($categorySmilies as $smiley) { foreach ($smiley->smileyCodes as $smileyCode) { - $this->smilies[$smileyCode] = ''.StringUtil::encodeHTML($smiley->smileyCode).''; + $this->smilies[$smileyCode] = $smiley->getHtml(); } } } diff --git a/wcfsetup/install/files/lib/system/cache/builder/SmileyCacheBuilder.class.php b/wcfsetup/install/files/lib/system/cache/builder/SmileyCacheBuilder.class.php index 0146422a99..fad1de0078 100644 --- a/wcfsetup/install/files/lib/system/cache/builder/SmileyCacheBuilder.class.php +++ b/wcfsetup/install/files/lib/system/cache/builder/SmileyCacheBuilder.class.php @@ -16,7 +16,7 @@ class SmileyCacheBuilder extends AbstractCacheBuilder { * @inheritDoc */ protected function rebuild(array $parameters) { - $data = ['smilies' => []]; + $data = ['codes' => [], 'smilies' => []]; // get smilies $sql = "SELECT * @@ -30,7 +30,14 @@ class SmileyCacheBuilder extends AbstractCacheBuilder { $object->smileyCodes = $object->getAliases(); $object->smileyCodes[] = $object->smileyCode; + // this call will cause the image height to be added to the cache + $object->getHeight(); + $data['smilies'][$object->categoryID][$object->smileyID] = $object; + + foreach ($object->smileyCodes as $smileyCode) { + $data['codes'][$smileyCode] = $object; + } } return $data; diff --git a/wcfsetup/install/files/lib/system/html/input/filter/MessageHtmlInputFilter.class.php b/wcfsetup/install/files/lib/system/html/input/filter/MessageHtmlInputFilter.class.php index 88ea19e562..0253362cfb 100644 --- a/wcfsetup/install/files/lib/system/html/input/filter/MessageHtmlInputFilter.class.php +++ b/wcfsetup/install/files/lib/system/html/input/filter/MessageHtmlInputFilter.class.php @@ -93,6 +93,7 @@ class MessageHtmlInputFilter implements IHtmlInputFilter { // add data-attachment-id="" for $definition->addAttribute('img', 'data-attachment-id', 'Number'); + $definition->addAttribute('img', 'srcset', 'Text'); $parameters = [ 'config' => $config, diff --git a/wcfsetup/install/files/lib/system/html/input/node/HtmlInputNodeImg.class.php b/wcfsetup/install/files/lib/system/html/input/node/HtmlInputNodeImg.class.php index 2980b210e6..9739473e07 100644 --- a/wcfsetup/install/files/lib/system/html/input/node/HtmlInputNodeImg.class.php +++ b/wcfsetup/install/files/lib/system/html/input/node/HtmlInputNodeImg.class.php @@ -1,5 +1,7 @@ getAttribute('class'); - if (!preg_match('~\bwoltlabAttachment\b~', $class)) { - continue; + if (preg_match('~\bwoltlabAttachment\b~', $class)) { + $this->handleAttachment($element, $class); } - - $attachmentID = intval($element->getAttribute('data-attachment-id')); - if (!$attachmentID) { - continue; - } - - $float = 'none'; - $thumbnail = false; - - if (strpos($element->getAttribute('src'), 'thumbnail=1') !== false) { - $thumbnail = true; - } - - if (preg_match('~\bmessageFloatObject(?PLeft|Right)\b~', $class, $matches)) { - $float = ($matches['float'] === 'Left') ? 'left' : 'right'; + else if (preg_match('~\bsmiley\b~', $class)) { + $this->handleSmiley($element); } + } + } + + protected function handleAttachment(\DOMElement $element, $class) { + $attachmentID = intval($element->getAttribute('data-attachment-id')); + if (!$attachmentID) { + return; + } + + $float = 'none'; + $thumbnail = false; + + if (strpos($element->getAttribute('src'), 'thumbnail=1') !== false) { + $thumbnail = true; + } + + if (preg_match('~\bmessageFloatObject(?PLeft|Right)\b~', $class, $matches)) { + $float = ($matches['float'] === 'Left') ? 'left' : 'right'; + } + + $attributes = [ + $attachmentID, + $float, + $thumbnail + ]; + + $newElement = $element->ownerDocument->createElement('woltlab-metacode'); + $newElement->setAttribute('data-name', 'attach'); + $newElement->setAttribute('data-attributes', base64_encode(JSON::encode($attributes))); + DOMUtil::replaceElement($element, $newElement, false); + } + + protected function handleSmiley(\DOMElement $element) { + $code = $element->getAttribute('alt'); + + /** @var Smiley $smiley */ + $smiley = SmileyCache::getInstance()->getSmileyByCode($code); + if ($smiley === null) { + $element->parentNode->insertBefore($element->ownerDocument->createTextNode($code), $element); + $element->parentNode->removeChild($element); + } + else { + // enforce database values for src, srcset and style + $element->setAttribute('src', $smiley->getURL()); - $attributes = [ - $attachmentID, - $float, - $thumbnail - ]; + if ($smiley->getHeight()) $element->setAttribute('style', 'height: ' . $smiley->getHeight() . 'px'); + else $element->removeAttribute('style'); - $newElement = $element->ownerDocument->createElement('woltlab-metacode'); - $newElement->setAttribute('data-name', 'attach'); - $newElement->setAttribute('data-attributes', base64_encode(JSON::encode($attributes))); - DOMUtil::replaceElement($element, $newElement, false); + if ($smiley->smileyPath2x) $element->setAttribute('srcset', $smiley->getURL2x() . ' 2x'); + else $element->removeAttribute('srcset'); } } } diff --git a/wcfsetup/install/files/lib/system/html/output/node/HtmlOutputNodeImg.class.php b/wcfsetup/install/files/lib/system/html/output/node/HtmlOutputNodeImg.class.php index 99a3a7d271..d2d9885d71 100644 --- a/wcfsetup/install/files/lib/system/html/output/node/HtmlOutputNodeImg.class.php +++ b/wcfsetup/install/files/lib/system/html/output/node/HtmlOutputNodeImg.class.php @@ -1,5 +1,7 @@ getAttribute('src'); - if ($src) { - $element->setAttribute('src', $this->getProxyLink($src)); + $class = $element->getAttribute('class'); + if (preg_match('~\bsmiley\b~', $class)) { + $code = $element->getAttribute('alt'); + + /** @var Smiley $smiley */ + $smiley = SmileyCache::getInstance()->getSmileyByCode($code); + if ($smiley === null) { + // output as raw code instead + $element->parentNode->insertBefore($element->ownerDocument->createTextNode($code), $element); + $element->parentNode->removeChild($element); + } + else { + // enforce database values for src, srcset and style + $element->setAttribute('src', $smiley->getURL()); + + if ($smiley->getHeight()) $element->setAttribute('style', 'height: ' . $smiley->getHeight() . 'px'); + else $element->removeAttribute('style'); + + if ($smiley->smileyPath2x) $element->setAttribute('srcset', $smiley->getURL2x() . ' 2x'); + else $element->removeAttribute('srcset'); + } + } + else if (MODULE_IMAGE_PROXY) { + $src = $element->getAttribute('src'); + if ($src) { + $element->setAttribute('src', $this->getProxyLink($src)); + } } } } diff --git a/wcfsetup/install/files/lib/system/package/plugin/SmileyPackageInstallationPlugin.class.php b/wcfsetup/install/files/lib/system/package/plugin/SmileyPackageInstallationPlugin.class.php index 0c2c288bd9..aee184d4d2 100644 --- a/wcfsetup/install/files/lib/system/package/plugin/SmileyPackageInstallationPlugin.class.php +++ b/wcfsetup/install/files/lib/system/package/plugin/SmileyPackageInstallationPlugin.class.php @@ -53,6 +53,7 @@ class SmileyPackageInstallationPlugin extends AbstractXMLPackageInstallationPlug 'smileyCode' => $data['attributes']['name'], 'smileyTitle' => $data['elements']['title'], 'smileyPath' => $data['elements']['path'], + 'smileyPath2x' => isset($data['elements']['path2x']) ? $data['elements']['path2x'] : '', 'aliases' => isset($data['elements']['aliases']) ? $data['elements']['aliases'] : '', 'showOrder' => $showOrder ]; diff --git a/wcfsetup/install/lang/de.xml b/wcfsetup/install/lang/de.xml index f177265568..7cd8fd36df 100644 --- a/wcfsetup/install/lang/de.xml +++ b/wcfsetup/install/lang/de.xml @@ -1544,6 +1544,8 @@ GmbH=Gesellschaft mit beschränkter Haftung]]> getPath()}“ interpretiert.]]> + + diff --git a/wcfsetup/install/lang/en.xml b/wcfsetup/install/lang/en.xml index fc5f4ed284..b862d9b1c5 100644 --- a/wcfsetup/install/lang/en.xml +++ b/wcfsetup/install/lang/en.xml @@ -1516,6 +1516,8 @@ GmbH=Gesellschaft mit beschränkter Haftung]]> getPath()}”.]]> + + diff --git a/wcfsetup/setup/db/install.sql b/wcfsetup/setup/db/install.sql index c36ed4cae9..6ba2f05043 100644 --- a/wcfsetup/setup/db/install.sql +++ b/wcfsetup/setup/db/install.sql @@ -1119,6 +1119,7 @@ CREATE TABLE wcf1_smiley ( packageID INT(10) NOT NULL, categoryID INT(10), smileyPath VARCHAR(255) NOT NULL DEFAULT '', + smileyPath2x VARCHAR(255) NOT NULL DEFAULT '', smileyTitle VARCHAR(255) NOT NULL DEFAULT '', smileyCode VARCHAR(191) NOT NULL DEFAULT '', aliases TEXT NOT NULL, -- 2.20.1