diff --git a/requirements.txt b/requirements.txt index 4c3e4507..f36963b0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,6 +16,8 @@ django-jinja>=0.23 jinja2==2.7.1 pygments>=1.6 django-sites==0.4 +Markdown==2.4 +fn==0.2.13 # Comment it if you are using python >= 3.4 enum34==0.9.23 diff --git a/taiga/base/static/img/emojis/+1.png b/taiga/base/static/img/emojis/+1.png new file mode 100644 index 00000000..be57e612 Binary files /dev/null and b/taiga/base/static/img/emojis/+1.png differ diff --git a/taiga/base/static/img/emojis/-1.png b/taiga/base/static/img/emojis/-1.png new file mode 100644 index 00000000..32c79443 Binary files /dev/null and b/taiga/base/static/img/emojis/-1.png differ diff --git a/taiga/base/static/img/emojis/100.png b/taiga/base/static/img/emojis/100.png new file mode 100644 index 00000000..1116851c Binary files /dev/null and b/taiga/base/static/img/emojis/100.png differ diff --git a/taiga/base/static/img/emojis/1234.png b/taiga/base/static/img/emojis/1234.png new file mode 100644 index 00000000..fd009c43 Binary files /dev/null and b/taiga/base/static/img/emojis/1234.png differ diff --git a/taiga/base/static/img/emojis/8ball.png b/taiga/base/static/img/emojis/8ball.png new file mode 100644 index 00000000..b88095f1 Binary files /dev/null and b/taiga/base/static/img/emojis/8ball.png differ diff --git a/taiga/base/static/img/emojis/a.png b/taiga/base/static/img/emojis/a.png new file mode 100644 index 00000000..161ea0a8 Binary files /dev/null and b/taiga/base/static/img/emojis/a.png differ diff --git a/taiga/base/static/img/emojis/ab.png b/taiga/base/static/img/emojis/ab.png new file mode 100644 index 00000000..7814a89e Binary files /dev/null and b/taiga/base/static/img/emojis/ab.png differ diff --git a/taiga/base/static/img/emojis/abc.png b/taiga/base/static/img/emojis/abc.png new file mode 100644 index 00000000..987448a6 Binary files /dev/null and b/taiga/base/static/img/emojis/abc.png differ diff --git a/taiga/base/static/img/emojis/abcd.png b/taiga/base/static/img/emojis/abcd.png new file mode 100644 index 00000000..27034095 Binary files /dev/null and b/taiga/base/static/img/emojis/abcd.png differ diff --git a/taiga/base/static/img/emojis/accept.png b/taiga/base/static/img/emojis/accept.png new file mode 100644 index 00000000..f1b14ca7 Binary files /dev/null and b/taiga/base/static/img/emojis/accept.png differ diff --git a/taiga/base/static/img/emojis/aerial_tramway.png b/taiga/base/static/img/emojis/aerial_tramway.png new file mode 100644 index 00000000..271a40bd Binary files /dev/null and b/taiga/base/static/img/emojis/aerial_tramway.png differ diff --git a/taiga/base/static/img/emojis/airplane.png b/taiga/base/static/img/emojis/airplane.png new file mode 100644 index 00000000..8788a19b Binary files /dev/null and b/taiga/base/static/img/emojis/airplane.png differ diff --git a/taiga/base/static/img/emojis/alarm_clock.png b/taiga/base/static/img/emojis/alarm_clock.png new file mode 100644 index 00000000..f24b8b98 Binary files /dev/null and b/taiga/base/static/img/emojis/alarm_clock.png differ diff --git a/taiga/base/static/img/emojis/alien.png b/taiga/base/static/img/emojis/alien.png new file mode 100644 index 00000000..2ec10c7f Binary files /dev/null and b/taiga/base/static/img/emojis/alien.png differ diff --git a/taiga/base/static/img/emojis/ambulance.png b/taiga/base/static/img/emojis/ambulance.png new file mode 100644 index 00000000..ba70b9cb Binary files /dev/null and b/taiga/base/static/img/emojis/ambulance.png differ diff --git a/taiga/base/static/img/emojis/anchor.png b/taiga/base/static/img/emojis/anchor.png new file mode 100644 index 00000000..c29afa5b Binary files /dev/null and b/taiga/base/static/img/emojis/anchor.png differ diff --git a/taiga/base/static/img/emojis/angel.png b/taiga/base/static/img/emojis/angel.png new file mode 100644 index 00000000..c8cb8d05 Binary files /dev/null and b/taiga/base/static/img/emojis/angel.png differ diff --git a/taiga/base/static/img/emojis/anger.png b/taiga/base/static/img/emojis/anger.png new file mode 100644 index 00000000..3c120b3f Binary files /dev/null and b/taiga/base/static/img/emojis/anger.png differ diff --git a/taiga/base/static/img/emojis/angry.png b/taiga/base/static/img/emojis/angry.png new file mode 100644 index 00000000..f7b09836 Binary files /dev/null and b/taiga/base/static/img/emojis/angry.png differ diff --git a/taiga/base/static/img/emojis/anguished.png b/taiga/base/static/img/emojis/anguished.png new file mode 100644 index 00000000..f9a25060 Binary files /dev/null and b/taiga/base/static/img/emojis/anguished.png differ diff --git a/taiga/base/static/img/emojis/ant.png b/taiga/base/static/img/emojis/ant.png new file mode 100644 index 00000000..89cdca8c Binary files /dev/null and b/taiga/base/static/img/emojis/ant.png differ diff --git a/taiga/base/static/img/emojis/apple.png b/taiga/base/static/img/emojis/apple.png new file mode 100644 index 00000000..987e85a0 Binary files /dev/null and b/taiga/base/static/img/emojis/apple.png differ diff --git a/taiga/base/static/img/emojis/aquarius.png b/taiga/base/static/img/emojis/aquarius.png new file mode 100644 index 00000000..8891f7b8 Binary files /dev/null and b/taiga/base/static/img/emojis/aquarius.png differ diff --git a/taiga/base/static/img/emojis/aries.png b/taiga/base/static/img/emojis/aries.png new file mode 100644 index 00000000..83c38f10 Binary files /dev/null and b/taiga/base/static/img/emojis/aries.png differ diff --git a/taiga/base/static/img/emojis/arrow_backward.png b/taiga/base/static/img/emojis/arrow_backward.png new file mode 100644 index 00000000..daf003a2 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_backward.png differ diff --git a/taiga/base/static/img/emojis/arrow_double_down.png b/taiga/base/static/img/emojis/arrow_double_down.png new file mode 100644 index 00000000..a5a701a8 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_double_down.png differ diff --git a/taiga/base/static/img/emojis/arrow_double_up.png b/taiga/base/static/img/emojis/arrow_double_up.png new file mode 100644 index 00000000..560d7ff6 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_double_up.png differ diff --git a/taiga/base/static/img/emojis/arrow_down.png b/taiga/base/static/img/emojis/arrow_down.png new file mode 100644 index 00000000..e6ec2198 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_down.png differ diff --git a/taiga/base/static/img/emojis/arrow_down_small.png b/taiga/base/static/img/emojis/arrow_down_small.png new file mode 100644 index 00000000..c01ef5f4 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_down_small.png differ diff --git a/taiga/base/static/img/emojis/arrow_forward.png b/taiga/base/static/img/emojis/arrow_forward.png new file mode 100644 index 00000000..a9e553ae Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_forward.png differ diff --git a/taiga/base/static/img/emojis/arrow_heading_down.png b/taiga/base/static/img/emojis/arrow_heading_down.png new file mode 100644 index 00000000..15b29572 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_heading_down.png differ diff --git a/taiga/base/static/img/emojis/arrow_heading_up.png b/taiga/base/static/img/emojis/arrow_heading_up.png new file mode 100644 index 00000000..efecd616 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_heading_up.png differ diff --git a/taiga/base/static/img/emojis/arrow_left.png b/taiga/base/static/img/emojis/arrow_left.png new file mode 100644 index 00000000..74d6eb4c Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_left.png differ diff --git a/taiga/base/static/img/emojis/arrow_lower_left.png b/taiga/base/static/img/emojis/arrow_lower_left.png new file mode 100644 index 00000000..83444b25 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_lower_left.png differ diff --git a/taiga/base/static/img/emojis/arrow_lower_right.png b/taiga/base/static/img/emojis/arrow_lower_right.png new file mode 100644 index 00000000..076a4667 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_lower_right.png differ diff --git a/taiga/base/static/img/emojis/arrow_right.png b/taiga/base/static/img/emojis/arrow_right.png new file mode 100644 index 00000000..d7719593 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_right.png differ diff --git a/taiga/base/static/img/emojis/arrow_right_hook.png b/taiga/base/static/img/emojis/arrow_right_hook.png new file mode 100644 index 00000000..13acfac8 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_right_hook.png differ diff --git a/taiga/base/static/img/emojis/arrow_up.png b/taiga/base/static/img/emojis/arrow_up.png new file mode 100644 index 00000000..6072d17a Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_up.png differ diff --git a/taiga/base/static/img/emojis/arrow_up_down.png b/taiga/base/static/img/emojis/arrow_up_down.png new file mode 100644 index 00000000..af79dc5b Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_up_down.png differ diff --git a/taiga/base/static/img/emojis/arrow_up_small.png b/taiga/base/static/img/emojis/arrow_up_small.png new file mode 100644 index 00000000..00185de0 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_up_small.png differ diff --git a/taiga/base/static/img/emojis/arrow_upper_left.png b/taiga/base/static/img/emojis/arrow_upper_left.png new file mode 100644 index 00000000..ff161317 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_upper_left.png differ diff --git a/taiga/base/static/img/emojis/arrow_upper_right.png b/taiga/base/static/img/emojis/arrow_upper_right.png new file mode 100644 index 00000000..e47ecc90 Binary files /dev/null and b/taiga/base/static/img/emojis/arrow_upper_right.png differ diff --git a/taiga/base/static/img/emojis/arrows_clockwise.png b/taiga/base/static/img/emojis/arrows_clockwise.png new file mode 100644 index 00000000..9ec27419 Binary files /dev/null and b/taiga/base/static/img/emojis/arrows_clockwise.png differ diff --git a/taiga/base/static/img/emojis/arrows_counterclockwise.png b/taiga/base/static/img/emojis/arrows_counterclockwise.png new file mode 100644 index 00000000..a8987d18 Binary files /dev/null and b/taiga/base/static/img/emojis/arrows_counterclockwise.png differ diff --git a/taiga/base/static/img/emojis/art.png b/taiga/base/static/img/emojis/art.png new file mode 100644 index 00000000..80a87b3f Binary files /dev/null and b/taiga/base/static/img/emojis/art.png differ diff --git a/taiga/base/static/img/emojis/articulated_lorry.png b/taiga/base/static/img/emojis/articulated_lorry.png new file mode 100644 index 00000000..aa5beaa0 Binary files /dev/null and b/taiga/base/static/img/emojis/articulated_lorry.png differ diff --git a/taiga/base/static/img/emojis/astonished.png b/taiga/base/static/img/emojis/astonished.png new file mode 100644 index 00000000..e85e20d8 Binary files /dev/null and b/taiga/base/static/img/emojis/astonished.png differ diff --git a/taiga/base/static/img/emojis/atm.png b/taiga/base/static/img/emojis/atm.png new file mode 100644 index 00000000..5f09fb86 Binary files /dev/null and b/taiga/base/static/img/emojis/atm.png differ diff --git a/taiga/base/static/img/emojis/b.png b/taiga/base/static/img/emojis/b.png new file mode 100644 index 00000000..1bfff889 Binary files /dev/null and b/taiga/base/static/img/emojis/b.png differ diff --git a/taiga/base/static/img/emojis/baby.png b/taiga/base/static/img/emojis/baby.png new file mode 100644 index 00000000..40a11164 Binary files /dev/null and b/taiga/base/static/img/emojis/baby.png differ diff --git a/taiga/base/static/img/emojis/baby_bottle.png b/taiga/base/static/img/emojis/baby_bottle.png new file mode 100644 index 00000000..f6516f05 Binary files /dev/null and b/taiga/base/static/img/emojis/baby_bottle.png differ diff --git a/taiga/base/static/img/emojis/baby_chick.png b/taiga/base/static/img/emojis/baby_chick.png new file mode 100644 index 00000000..662bed8c Binary files /dev/null and b/taiga/base/static/img/emojis/baby_chick.png differ diff --git a/taiga/base/static/img/emojis/baby_symbol.png b/taiga/base/static/img/emojis/baby_symbol.png new file mode 100644 index 00000000..f7e3bc6d Binary files /dev/null and b/taiga/base/static/img/emojis/baby_symbol.png differ diff --git a/taiga/base/static/img/emojis/baggage_claim.png b/taiga/base/static/img/emojis/baggage_claim.png new file mode 100644 index 00000000..c296e851 Binary files /dev/null and b/taiga/base/static/img/emojis/baggage_claim.png differ diff --git a/taiga/base/static/img/emojis/balloon.png b/taiga/base/static/img/emojis/balloon.png new file mode 100644 index 00000000..4176a57f Binary files /dev/null and b/taiga/base/static/img/emojis/balloon.png differ diff --git a/taiga/base/static/img/emojis/ballot_box_with_check.png b/taiga/base/static/img/emojis/ballot_box_with_check.png new file mode 100644 index 00000000..936b2dae Binary files /dev/null and b/taiga/base/static/img/emojis/ballot_box_with_check.png differ diff --git a/taiga/base/static/img/emojis/bamboo.png b/taiga/base/static/img/emojis/bamboo.png new file mode 100644 index 00000000..a1bded7e Binary files /dev/null and b/taiga/base/static/img/emojis/bamboo.png differ diff --git a/taiga/base/static/img/emojis/banana.png b/taiga/base/static/img/emojis/banana.png new file mode 100644 index 00000000..36adf23d Binary files /dev/null and b/taiga/base/static/img/emojis/banana.png differ diff --git a/taiga/base/static/img/emojis/bangbang.png b/taiga/base/static/img/emojis/bangbang.png new file mode 100644 index 00000000..8fcd1c58 Binary files /dev/null and b/taiga/base/static/img/emojis/bangbang.png differ diff --git a/taiga/base/static/img/emojis/bank.png b/taiga/base/static/img/emojis/bank.png new file mode 100644 index 00000000..43078c08 Binary files /dev/null and b/taiga/base/static/img/emojis/bank.png differ diff --git a/taiga/base/static/img/emojis/bar_chart.png b/taiga/base/static/img/emojis/bar_chart.png new file mode 100644 index 00000000..92c57b2f Binary files /dev/null and b/taiga/base/static/img/emojis/bar_chart.png differ diff --git a/taiga/base/static/img/emojis/barber.png b/taiga/base/static/img/emojis/barber.png new file mode 100644 index 00000000..4706e114 Binary files /dev/null and b/taiga/base/static/img/emojis/barber.png differ diff --git a/taiga/base/static/img/emojis/baseball.png b/taiga/base/static/img/emojis/baseball.png new file mode 100644 index 00000000..6ffa6e40 Binary files /dev/null and b/taiga/base/static/img/emojis/baseball.png differ diff --git a/taiga/base/static/img/emojis/basketball.png b/taiga/base/static/img/emojis/basketball.png new file mode 100644 index 00000000..9552ff18 Binary files /dev/null and b/taiga/base/static/img/emojis/basketball.png differ diff --git a/taiga/base/static/img/emojis/bath.png b/taiga/base/static/img/emojis/bath.png new file mode 100644 index 00000000..ba40c0e8 Binary files /dev/null and b/taiga/base/static/img/emojis/bath.png differ diff --git a/taiga/base/static/img/emojis/bathtub.png b/taiga/base/static/img/emojis/bathtub.png new file mode 100644 index 00000000..b65340a1 Binary files /dev/null and b/taiga/base/static/img/emojis/bathtub.png differ diff --git a/taiga/base/static/img/emojis/battery.png b/taiga/base/static/img/emojis/battery.png new file mode 100644 index 00000000..b9918059 Binary files /dev/null and b/taiga/base/static/img/emojis/battery.png differ diff --git a/taiga/base/static/img/emojis/bear.png b/taiga/base/static/img/emojis/bear.png new file mode 100644 index 00000000..fc39613f Binary files /dev/null and b/taiga/base/static/img/emojis/bear.png differ diff --git a/taiga/base/static/img/emojis/bee.png b/taiga/base/static/img/emojis/bee.png new file mode 100644 index 00000000..1c5fc5bf Binary files /dev/null and b/taiga/base/static/img/emojis/bee.png differ diff --git a/taiga/base/static/img/emojis/beer.png b/taiga/base/static/img/emojis/beer.png new file mode 100644 index 00000000..7e977b34 Binary files /dev/null and b/taiga/base/static/img/emojis/beer.png differ diff --git a/taiga/base/static/img/emojis/beers.png b/taiga/base/static/img/emojis/beers.png new file mode 100644 index 00000000..532b785b Binary files /dev/null and b/taiga/base/static/img/emojis/beers.png differ diff --git a/taiga/base/static/img/emojis/beetle.png b/taiga/base/static/img/emojis/beetle.png new file mode 100644 index 00000000..50959bb8 Binary files /dev/null and b/taiga/base/static/img/emojis/beetle.png differ diff --git a/taiga/base/static/img/emojis/beginner.png b/taiga/base/static/img/emojis/beginner.png new file mode 100644 index 00000000..e4e0f0ad Binary files /dev/null and b/taiga/base/static/img/emojis/beginner.png differ diff --git a/taiga/base/static/img/emojis/bell.png b/taiga/base/static/img/emojis/bell.png new file mode 100644 index 00000000..46a83986 Binary files /dev/null and b/taiga/base/static/img/emojis/bell.png differ diff --git a/taiga/base/static/img/emojis/bento.png b/taiga/base/static/img/emojis/bento.png new file mode 100644 index 00000000..459c924f Binary files /dev/null and b/taiga/base/static/img/emojis/bento.png differ diff --git a/taiga/base/static/img/emojis/bicyclist.png b/taiga/base/static/img/emojis/bicyclist.png new file mode 100644 index 00000000..39698d44 Binary files /dev/null and b/taiga/base/static/img/emojis/bicyclist.png differ diff --git a/taiga/base/static/img/emojis/bike.png b/taiga/base/static/img/emojis/bike.png new file mode 100644 index 00000000..bb4ae9f1 Binary files /dev/null and b/taiga/base/static/img/emojis/bike.png differ diff --git a/taiga/base/static/img/emojis/bikini.png b/taiga/base/static/img/emojis/bikini.png new file mode 100644 index 00000000..6f80c3cf Binary files /dev/null and b/taiga/base/static/img/emojis/bikini.png differ diff --git a/taiga/base/static/img/emojis/bird.png b/taiga/base/static/img/emojis/bird.png new file mode 100644 index 00000000..8d9f01d2 Binary files /dev/null and b/taiga/base/static/img/emojis/bird.png differ diff --git a/taiga/base/static/img/emojis/birthday.png b/taiga/base/static/img/emojis/birthday.png new file mode 100644 index 00000000..62e9e2df Binary files /dev/null and b/taiga/base/static/img/emojis/birthday.png differ diff --git a/taiga/base/static/img/emojis/black_circle.png b/taiga/base/static/img/emojis/black_circle.png new file mode 100644 index 00000000..d2ac4a6a Binary files /dev/null and b/taiga/base/static/img/emojis/black_circle.png differ diff --git a/taiga/base/static/img/emojis/black_joker.png b/taiga/base/static/img/emojis/black_joker.png new file mode 100644 index 00000000..7bc34c4c Binary files /dev/null and b/taiga/base/static/img/emojis/black_joker.png differ diff --git a/taiga/base/static/img/emojis/black_nib.png b/taiga/base/static/img/emojis/black_nib.png new file mode 100644 index 00000000..45482510 Binary files /dev/null and b/taiga/base/static/img/emojis/black_nib.png differ diff --git a/taiga/base/static/img/emojis/black_square.png b/taiga/base/static/img/emojis/black_square.png new file mode 100644 index 00000000..730cb118 Binary files /dev/null and b/taiga/base/static/img/emojis/black_square.png differ diff --git a/taiga/base/static/img/emojis/black_square_button.png b/taiga/base/static/img/emojis/black_square_button.png new file mode 100644 index 00000000..c56f87e1 Binary files /dev/null and b/taiga/base/static/img/emojis/black_square_button.png differ diff --git a/taiga/base/static/img/emojis/blossom.png b/taiga/base/static/img/emojis/blossom.png new file mode 100644 index 00000000..ac1d9753 Binary files /dev/null and b/taiga/base/static/img/emojis/blossom.png differ diff --git a/taiga/base/static/img/emojis/blowfish.png b/taiga/base/static/img/emojis/blowfish.png new file mode 100644 index 00000000..8a7f7f11 Binary files /dev/null and b/taiga/base/static/img/emojis/blowfish.png differ diff --git a/taiga/base/static/img/emojis/blue_book.png b/taiga/base/static/img/emojis/blue_book.png new file mode 100644 index 00000000..6c2452a1 Binary files /dev/null and b/taiga/base/static/img/emojis/blue_book.png differ diff --git a/taiga/base/static/img/emojis/blue_car.png b/taiga/base/static/img/emojis/blue_car.png new file mode 100644 index 00000000..71229ce1 Binary files /dev/null and b/taiga/base/static/img/emojis/blue_car.png differ diff --git a/taiga/base/static/img/emojis/blue_heart.png b/taiga/base/static/img/emojis/blue_heart.png new file mode 100644 index 00000000..1a9bef4a Binary files /dev/null and b/taiga/base/static/img/emojis/blue_heart.png differ diff --git a/taiga/base/static/img/emojis/blush.png b/taiga/base/static/img/emojis/blush.png new file mode 100644 index 00000000..9674f99b Binary files /dev/null and b/taiga/base/static/img/emojis/blush.png differ diff --git a/taiga/base/static/img/emojis/boar.png b/taiga/base/static/img/emojis/boar.png new file mode 100644 index 00000000..b9a0c479 Binary files /dev/null and b/taiga/base/static/img/emojis/boar.png differ diff --git a/taiga/base/static/img/emojis/boat.png b/taiga/base/static/img/emojis/boat.png new file mode 100644 index 00000000..ab65ccc4 Binary files /dev/null and b/taiga/base/static/img/emojis/boat.png differ diff --git a/taiga/base/static/img/emojis/bomb.png b/taiga/base/static/img/emojis/bomb.png new file mode 100644 index 00000000..1302680d Binary files /dev/null and b/taiga/base/static/img/emojis/bomb.png differ diff --git a/taiga/base/static/img/emojis/book.png b/taiga/base/static/img/emojis/book.png new file mode 100644 index 00000000..76b02c65 Binary files /dev/null and b/taiga/base/static/img/emojis/book.png differ diff --git a/taiga/base/static/img/emojis/bookmark.png b/taiga/base/static/img/emojis/bookmark.png new file mode 100644 index 00000000..a313ff19 Binary files /dev/null and b/taiga/base/static/img/emojis/bookmark.png differ diff --git a/taiga/base/static/img/emojis/bookmark_tabs.png b/taiga/base/static/img/emojis/bookmark_tabs.png new file mode 100644 index 00000000..c29b4bd9 Binary files /dev/null and b/taiga/base/static/img/emojis/bookmark_tabs.png differ diff --git a/taiga/base/static/img/emojis/books.png b/taiga/base/static/img/emojis/books.png new file mode 100644 index 00000000..c9964484 Binary files /dev/null and b/taiga/base/static/img/emojis/books.png differ diff --git a/taiga/base/static/img/emojis/boom.png b/taiga/base/static/img/emojis/boom.png new file mode 100644 index 00000000..c7338258 Binary files /dev/null and b/taiga/base/static/img/emojis/boom.png differ diff --git a/taiga/base/static/img/emojis/boot.png b/taiga/base/static/img/emojis/boot.png new file mode 100644 index 00000000..9bad9f14 Binary files /dev/null and b/taiga/base/static/img/emojis/boot.png differ diff --git a/taiga/base/static/img/emojis/bouquet.png b/taiga/base/static/img/emojis/bouquet.png new file mode 100644 index 00000000..9339bbf3 Binary files /dev/null and b/taiga/base/static/img/emojis/bouquet.png differ diff --git a/taiga/base/static/img/emojis/bow.png b/taiga/base/static/img/emojis/bow.png new file mode 100644 index 00000000..3fe31af8 Binary files /dev/null and b/taiga/base/static/img/emojis/bow.png differ diff --git a/taiga/base/static/img/emojis/bowling.png b/taiga/base/static/img/emojis/bowling.png new file mode 100644 index 00000000..93a867f3 Binary files /dev/null and b/taiga/base/static/img/emojis/bowling.png differ diff --git a/taiga/base/static/img/emojis/bowtie.png b/taiga/base/static/img/emojis/bowtie.png new file mode 100644 index 00000000..cbe139f2 Binary files /dev/null and b/taiga/base/static/img/emojis/bowtie.png differ diff --git a/taiga/base/static/img/emojis/boy.png b/taiga/base/static/img/emojis/boy.png new file mode 100644 index 00000000..f9c041d6 Binary files /dev/null and b/taiga/base/static/img/emojis/boy.png differ diff --git a/taiga/base/static/img/emojis/bread.png b/taiga/base/static/img/emojis/bread.png new file mode 100644 index 00000000..29c5dbeb Binary files /dev/null and b/taiga/base/static/img/emojis/bread.png differ diff --git a/taiga/base/static/img/emojis/bride_with_veil.png b/taiga/base/static/img/emojis/bride_with_veil.png new file mode 100644 index 00000000..f6739b18 Binary files /dev/null and b/taiga/base/static/img/emojis/bride_with_veil.png differ diff --git a/taiga/base/static/img/emojis/bridge_at_night.png b/taiga/base/static/img/emojis/bridge_at_night.png new file mode 100644 index 00000000..ee47de57 Binary files /dev/null and b/taiga/base/static/img/emojis/bridge_at_night.png differ diff --git a/taiga/base/static/img/emojis/briefcase.png b/taiga/base/static/img/emojis/briefcase.png new file mode 100644 index 00000000..32158b9f Binary files /dev/null and b/taiga/base/static/img/emojis/briefcase.png differ diff --git a/taiga/base/static/img/emojis/broken_heart.png b/taiga/base/static/img/emojis/broken_heart.png new file mode 100644 index 00000000..187c5ecf Binary files /dev/null and b/taiga/base/static/img/emojis/broken_heart.png differ diff --git a/taiga/base/static/img/emojis/bug.png b/taiga/base/static/img/emojis/bug.png new file mode 100644 index 00000000..47f6b85e Binary files /dev/null and b/taiga/base/static/img/emojis/bug.png differ diff --git a/taiga/base/static/img/emojis/bulb.png b/taiga/base/static/img/emojis/bulb.png new file mode 100644 index 00000000..c1238b2d Binary files /dev/null and b/taiga/base/static/img/emojis/bulb.png differ diff --git a/taiga/base/static/img/emojis/bullettrain_front.png b/taiga/base/static/img/emojis/bullettrain_front.png new file mode 100644 index 00000000..29502e51 Binary files /dev/null and b/taiga/base/static/img/emojis/bullettrain_front.png differ diff --git a/taiga/base/static/img/emojis/bullettrain_side.png b/taiga/base/static/img/emojis/bullettrain_side.png new file mode 100644 index 00000000..ed8d31fa Binary files /dev/null and b/taiga/base/static/img/emojis/bullettrain_side.png differ diff --git a/taiga/base/static/img/emojis/bus.png b/taiga/base/static/img/emojis/bus.png new file mode 100644 index 00000000..208a204f Binary files /dev/null and b/taiga/base/static/img/emojis/bus.png differ diff --git a/taiga/base/static/img/emojis/busstop.png b/taiga/base/static/img/emojis/busstop.png new file mode 100644 index 00000000..7c0c168c Binary files /dev/null and b/taiga/base/static/img/emojis/busstop.png differ diff --git a/taiga/base/static/img/emojis/bust_in_silhouette.png b/taiga/base/static/img/emojis/bust_in_silhouette.png new file mode 100644 index 00000000..f02920b2 Binary files /dev/null and b/taiga/base/static/img/emojis/bust_in_silhouette.png differ diff --git a/taiga/base/static/img/emojis/busts_in_silhouette.png b/taiga/base/static/img/emojis/busts_in_silhouette.png new file mode 100644 index 00000000..f11410b6 Binary files /dev/null and b/taiga/base/static/img/emojis/busts_in_silhouette.png differ diff --git a/taiga/base/static/img/emojis/cactus.png b/taiga/base/static/img/emojis/cactus.png new file mode 100644 index 00000000..c0ebf50d Binary files /dev/null and b/taiga/base/static/img/emojis/cactus.png differ diff --git a/taiga/base/static/img/emojis/cake.png b/taiga/base/static/img/emojis/cake.png new file mode 100644 index 00000000..288b7ffb Binary files /dev/null and b/taiga/base/static/img/emojis/cake.png differ diff --git a/taiga/base/static/img/emojis/calendar.png b/taiga/base/static/img/emojis/calendar.png new file mode 100644 index 00000000..e086c41b Binary files /dev/null and b/taiga/base/static/img/emojis/calendar.png differ diff --git a/taiga/base/static/img/emojis/calling.png b/taiga/base/static/img/emojis/calling.png new file mode 100644 index 00000000..d2ee43c0 Binary files /dev/null and b/taiga/base/static/img/emojis/calling.png differ diff --git a/taiga/base/static/img/emojis/camel.png b/taiga/base/static/img/emojis/camel.png new file mode 100644 index 00000000..e674783f Binary files /dev/null and b/taiga/base/static/img/emojis/camel.png differ diff --git a/taiga/base/static/img/emojis/camera.png b/taiga/base/static/img/emojis/camera.png new file mode 100644 index 00000000..211d6e6d Binary files /dev/null and b/taiga/base/static/img/emojis/camera.png differ diff --git a/taiga/base/static/img/emojis/cancer.png b/taiga/base/static/img/emojis/cancer.png new file mode 100644 index 00000000..820a8bc9 Binary files /dev/null and b/taiga/base/static/img/emojis/cancer.png differ diff --git a/taiga/base/static/img/emojis/candy.png b/taiga/base/static/img/emojis/candy.png new file mode 100644 index 00000000..a0d132a0 Binary files /dev/null and b/taiga/base/static/img/emojis/candy.png differ diff --git a/taiga/base/static/img/emojis/capital_abcd.png b/taiga/base/static/img/emojis/capital_abcd.png new file mode 100644 index 00000000..5b5a0485 Binary files /dev/null and b/taiga/base/static/img/emojis/capital_abcd.png differ diff --git a/taiga/base/static/img/emojis/capricorn.png b/taiga/base/static/img/emojis/capricorn.png new file mode 100644 index 00000000..e6f66157 Binary files /dev/null and b/taiga/base/static/img/emojis/capricorn.png differ diff --git a/taiga/base/static/img/emojis/car.png b/taiga/base/static/img/emojis/car.png new file mode 100644 index 00000000..31393f7f Binary files /dev/null and b/taiga/base/static/img/emojis/car.png differ diff --git a/taiga/base/static/img/emojis/card_index.png b/taiga/base/static/img/emojis/card_index.png new file mode 100644 index 00000000..697546ec Binary files /dev/null and b/taiga/base/static/img/emojis/card_index.png differ diff --git a/taiga/base/static/img/emojis/carousel_horse.png b/taiga/base/static/img/emojis/carousel_horse.png new file mode 100644 index 00000000..af960545 Binary files /dev/null and b/taiga/base/static/img/emojis/carousel_horse.png differ diff --git a/taiga/base/static/img/emojis/cat.png b/taiga/base/static/img/emojis/cat.png new file mode 100644 index 00000000..c8307fd0 Binary files /dev/null and b/taiga/base/static/img/emojis/cat.png differ diff --git a/taiga/base/static/img/emojis/cat2.png b/taiga/base/static/img/emojis/cat2.png new file mode 100644 index 00000000..090137ed Binary files /dev/null and b/taiga/base/static/img/emojis/cat2.png differ diff --git a/taiga/base/static/img/emojis/cd.png b/taiga/base/static/img/emojis/cd.png new file mode 100644 index 00000000..c2d5f147 Binary files /dev/null and b/taiga/base/static/img/emojis/cd.png differ diff --git a/taiga/base/static/img/emojis/chart.png b/taiga/base/static/img/emojis/chart.png new file mode 100644 index 00000000..aa527cad Binary files /dev/null and b/taiga/base/static/img/emojis/chart.png differ diff --git a/taiga/base/static/img/emojis/chart_with_downwards_trend.png b/taiga/base/static/img/emojis/chart_with_downwards_trend.png new file mode 100644 index 00000000..50fb4b1e Binary files /dev/null and b/taiga/base/static/img/emojis/chart_with_downwards_trend.png differ diff --git a/taiga/base/static/img/emojis/chart_with_upwards_trend.png b/taiga/base/static/img/emojis/chart_with_upwards_trend.png new file mode 100644 index 00000000..364e792f Binary files /dev/null and b/taiga/base/static/img/emojis/chart_with_upwards_trend.png differ diff --git a/taiga/base/static/img/emojis/checkered_flag.png b/taiga/base/static/img/emojis/checkered_flag.png new file mode 100644 index 00000000..4a4f652f Binary files /dev/null and b/taiga/base/static/img/emojis/checkered_flag.png differ diff --git a/taiga/base/static/img/emojis/cherries.png b/taiga/base/static/img/emojis/cherries.png new file mode 100644 index 00000000..49aa7d62 Binary files /dev/null and b/taiga/base/static/img/emojis/cherries.png differ diff --git a/taiga/base/static/img/emojis/cherry_blossom.png b/taiga/base/static/img/emojis/cherry_blossom.png new file mode 100644 index 00000000..e996cd45 Binary files /dev/null and b/taiga/base/static/img/emojis/cherry_blossom.png differ diff --git a/taiga/base/static/img/emojis/chestnut.png b/taiga/base/static/img/emojis/chestnut.png new file mode 100644 index 00000000..451e2ccb Binary files /dev/null and b/taiga/base/static/img/emojis/chestnut.png differ diff --git a/taiga/base/static/img/emojis/chicken.png b/taiga/base/static/img/emojis/chicken.png new file mode 100644 index 00000000..37bd0f74 Binary files /dev/null and b/taiga/base/static/img/emojis/chicken.png differ diff --git a/taiga/base/static/img/emojis/children_crossing.png b/taiga/base/static/img/emojis/children_crossing.png new file mode 100644 index 00000000..62422ae9 Binary files /dev/null and b/taiga/base/static/img/emojis/children_crossing.png differ diff --git a/taiga/base/static/img/emojis/chocolate_bar.png b/taiga/base/static/img/emojis/chocolate_bar.png new file mode 100644 index 00000000..f7a59bf7 Binary files /dev/null and b/taiga/base/static/img/emojis/chocolate_bar.png differ diff --git a/taiga/base/static/img/emojis/christmas_tree.png b/taiga/base/static/img/emojis/christmas_tree.png new file mode 100644 index 00000000..7ff7b2a3 Binary files /dev/null and b/taiga/base/static/img/emojis/christmas_tree.png differ diff --git a/taiga/base/static/img/emojis/church.png b/taiga/base/static/img/emojis/church.png new file mode 100644 index 00000000..cb16eba6 Binary files /dev/null and b/taiga/base/static/img/emojis/church.png differ diff --git a/taiga/base/static/img/emojis/cinema.png b/taiga/base/static/img/emojis/cinema.png new file mode 100644 index 00000000..e80c1f00 Binary files /dev/null and b/taiga/base/static/img/emojis/cinema.png differ diff --git a/taiga/base/static/img/emojis/circus_tent.png b/taiga/base/static/img/emojis/circus_tent.png new file mode 100644 index 00000000..12a57bfb Binary files /dev/null and b/taiga/base/static/img/emojis/circus_tent.png differ diff --git a/taiga/base/static/img/emojis/city_sunrise.png b/taiga/base/static/img/emojis/city_sunrise.png new file mode 100644 index 00000000..42b64d08 Binary files /dev/null and b/taiga/base/static/img/emojis/city_sunrise.png differ diff --git a/taiga/base/static/img/emojis/city_sunset.png b/taiga/base/static/img/emojis/city_sunset.png new file mode 100644 index 00000000..f262d7cf Binary files /dev/null and b/taiga/base/static/img/emojis/city_sunset.png differ diff --git a/taiga/base/static/img/emojis/cl.png b/taiga/base/static/img/emojis/cl.png new file mode 100644 index 00000000..32c9488b Binary files /dev/null and b/taiga/base/static/img/emojis/cl.png differ diff --git a/taiga/base/static/img/emojis/clap.png b/taiga/base/static/img/emojis/clap.png new file mode 100644 index 00000000..1156223c Binary files /dev/null and b/taiga/base/static/img/emojis/clap.png differ diff --git a/taiga/base/static/img/emojis/clapper.png b/taiga/base/static/img/emojis/clapper.png new file mode 100644 index 00000000..62ce35e8 Binary files /dev/null and b/taiga/base/static/img/emojis/clapper.png differ diff --git a/taiga/base/static/img/emojis/clipboard.png b/taiga/base/static/img/emojis/clipboard.png new file mode 100644 index 00000000..2cbe981b Binary files /dev/null and b/taiga/base/static/img/emojis/clipboard.png differ diff --git a/taiga/base/static/img/emojis/clock1.png b/taiga/base/static/img/emojis/clock1.png new file mode 100644 index 00000000..be673dc1 Binary files /dev/null and b/taiga/base/static/img/emojis/clock1.png differ diff --git a/taiga/base/static/img/emojis/clock10.png b/taiga/base/static/img/emojis/clock10.png new file mode 100644 index 00000000..5d368878 Binary files /dev/null and b/taiga/base/static/img/emojis/clock10.png differ diff --git a/taiga/base/static/img/emojis/clock1030.png b/taiga/base/static/img/emojis/clock1030.png new file mode 100644 index 00000000..a3ed02a1 Binary files /dev/null and b/taiga/base/static/img/emojis/clock1030.png differ diff --git a/taiga/base/static/img/emojis/clock11.png b/taiga/base/static/img/emojis/clock11.png new file mode 100644 index 00000000..4d1ec5d5 Binary files /dev/null and b/taiga/base/static/img/emojis/clock11.png differ diff --git a/taiga/base/static/img/emojis/clock1130.png b/taiga/base/static/img/emojis/clock1130.png new file mode 100644 index 00000000..15262375 Binary files /dev/null and b/taiga/base/static/img/emojis/clock1130.png differ diff --git a/taiga/base/static/img/emojis/clock12.png b/taiga/base/static/img/emojis/clock12.png new file mode 100644 index 00000000..9feeff30 Binary files /dev/null and b/taiga/base/static/img/emojis/clock12.png differ diff --git a/taiga/base/static/img/emojis/clock1230.png b/taiga/base/static/img/emojis/clock1230.png new file mode 100644 index 00000000..41b45371 Binary files /dev/null and b/taiga/base/static/img/emojis/clock1230.png differ diff --git a/taiga/base/static/img/emojis/clock130.png b/taiga/base/static/img/emojis/clock130.png new file mode 100644 index 00000000..aec7a645 Binary files /dev/null and b/taiga/base/static/img/emojis/clock130.png differ diff --git a/taiga/base/static/img/emojis/clock2.png b/taiga/base/static/img/emojis/clock2.png new file mode 100644 index 00000000..7d96e855 Binary files /dev/null and b/taiga/base/static/img/emojis/clock2.png differ diff --git a/taiga/base/static/img/emojis/clock230.png b/taiga/base/static/img/emojis/clock230.png new file mode 100644 index 00000000..9c9208e8 Binary files /dev/null and b/taiga/base/static/img/emojis/clock230.png differ diff --git a/taiga/base/static/img/emojis/clock3.png b/taiga/base/static/img/emojis/clock3.png new file mode 100644 index 00000000..d3342758 Binary files /dev/null and b/taiga/base/static/img/emojis/clock3.png differ diff --git a/taiga/base/static/img/emojis/clock330.png b/taiga/base/static/img/emojis/clock330.png new file mode 100644 index 00000000..b37185df Binary files /dev/null and b/taiga/base/static/img/emojis/clock330.png differ diff --git a/taiga/base/static/img/emojis/clock4.png b/taiga/base/static/img/emojis/clock4.png new file mode 100644 index 00000000..a2991ada Binary files /dev/null and b/taiga/base/static/img/emojis/clock4.png differ diff --git a/taiga/base/static/img/emojis/clock430.png b/taiga/base/static/img/emojis/clock430.png new file mode 100644 index 00000000..e3d1ff51 Binary files /dev/null and b/taiga/base/static/img/emojis/clock430.png differ diff --git a/taiga/base/static/img/emojis/clock5.png b/taiga/base/static/img/emojis/clock5.png new file mode 100644 index 00000000..de728e23 Binary files /dev/null and b/taiga/base/static/img/emojis/clock5.png differ diff --git a/taiga/base/static/img/emojis/clock530.png b/taiga/base/static/img/emojis/clock530.png new file mode 100644 index 00000000..54e4555e Binary files /dev/null and b/taiga/base/static/img/emojis/clock530.png differ diff --git a/taiga/base/static/img/emojis/clock6.png b/taiga/base/static/img/emojis/clock6.png new file mode 100644 index 00000000..38b509e5 Binary files /dev/null and b/taiga/base/static/img/emojis/clock6.png differ diff --git a/taiga/base/static/img/emojis/clock630.png b/taiga/base/static/img/emojis/clock630.png new file mode 100644 index 00000000..f0c311d9 Binary files /dev/null and b/taiga/base/static/img/emojis/clock630.png differ diff --git a/taiga/base/static/img/emojis/clock7.png b/taiga/base/static/img/emojis/clock7.png new file mode 100644 index 00000000..852a73d5 Binary files /dev/null and b/taiga/base/static/img/emojis/clock7.png differ diff --git a/taiga/base/static/img/emojis/clock730.png b/taiga/base/static/img/emojis/clock730.png new file mode 100644 index 00000000..03e30c25 Binary files /dev/null and b/taiga/base/static/img/emojis/clock730.png differ diff --git a/taiga/base/static/img/emojis/clock8.png b/taiga/base/static/img/emojis/clock8.png new file mode 100644 index 00000000..a47559ca Binary files /dev/null and b/taiga/base/static/img/emojis/clock8.png differ diff --git a/taiga/base/static/img/emojis/clock830.png b/taiga/base/static/img/emojis/clock830.png new file mode 100644 index 00000000..b076a5a1 Binary files /dev/null and b/taiga/base/static/img/emojis/clock830.png differ diff --git a/taiga/base/static/img/emojis/clock9.png b/taiga/base/static/img/emojis/clock9.png new file mode 100644 index 00000000..f3003c80 Binary files /dev/null and b/taiga/base/static/img/emojis/clock9.png differ diff --git a/taiga/base/static/img/emojis/clock930.png b/taiga/base/static/img/emojis/clock930.png new file mode 100644 index 00000000..77d56002 Binary files /dev/null and b/taiga/base/static/img/emojis/clock930.png differ diff --git a/taiga/base/static/img/emojis/closed_book.png b/taiga/base/static/img/emojis/closed_book.png new file mode 100644 index 00000000..9e0a9ae2 Binary files /dev/null and b/taiga/base/static/img/emojis/closed_book.png differ diff --git a/taiga/base/static/img/emojis/closed_lock_with_key.png b/taiga/base/static/img/emojis/closed_lock_with_key.png new file mode 100644 index 00000000..00959534 Binary files /dev/null and b/taiga/base/static/img/emojis/closed_lock_with_key.png differ diff --git a/taiga/base/static/img/emojis/closed_umbrella.png b/taiga/base/static/img/emojis/closed_umbrella.png new file mode 100644 index 00000000..314e4853 Binary files /dev/null and b/taiga/base/static/img/emojis/closed_umbrella.png differ diff --git a/taiga/base/static/img/emojis/cloud.png b/taiga/base/static/img/emojis/cloud.png new file mode 100644 index 00000000..5a77db26 Binary files /dev/null and b/taiga/base/static/img/emojis/cloud.png differ diff --git a/taiga/base/static/img/emojis/clubs.png b/taiga/base/static/img/emojis/clubs.png new file mode 100644 index 00000000..88dd644f Binary files /dev/null and b/taiga/base/static/img/emojis/clubs.png differ diff --git a/taiga/base/static/img/emojis/cn.png b/taiga/base/static/img/emojis/cn.png new file mode 100644 index 00000000..941702d6 Binary files /dev/null and b/taiga/base/static/img/emojis/cn.png differ diff --git a/taiga/base/static/img/emojis/cocktail.png b/taiga/base/static/img/emojis/cocktail.png new file mode 100644 index 00000000..2afdef2c Binary files /dev/null and b/taiga/base/static/img/emojis/cocktail.png differ diff --git a/taiga/base/static/img/emojis/coffee.png b/taiga/base/static/img/emojis/coffee.png new file mode 100644 index 00000000..3d6e3f39 Binary files /dev/null and b/taiga/base/static/img/emojis/coffee.png differ diff --git a/taiga/base/static/img/emojis/cold_sweat.png b/taiga/base/static/img/emojis/cold_sweat.png new file mode 100644 index 00000000..7b0223c6 Binary files /dev/null and b/taiga/base/static/img/emojis/cold_sweat.png differ diff --git a/taiga/base/static/img/emojis/collision.png b/taiga/base/static/img/emojis/collision.png new file mode 100644 index 00000000..c7338258 Binary files /dev/null and b/taiga/base/static/img/emojis/collision.png differ diff --git a/taiga/base/static/img/emojis/computer.png b/taiga/base/static/img/emojis/computer.png new file mode 100644 index 00000000..4ac2f8f6 Binary files /dev/null and b/taiga/base/static/img/emojis/computer.png differ diff --git a/taiga/base/static/img/emojis/confetti_ball.png b/taiga/base/static/img/emojis/confetti_ball.png new file mode 100644 index 00000000..b89a0314 Binary files /dev/null and b/taiga/base/static/img/emojis/confetti_ball.png differ diff --git a/taiga/base/static/img/emojis/confounded.png b/taiga/base/static/img/emojis/confounded.png new file mode 100644 index 00000000..6036df79 Binary files /dev/null and b/taiga/base/static/img/emojis/confounded.png differ diff --git a/taiga/base/static/img/emojis/confused.png b/taiga/base/static/img/emojis/confused.png new file mode 100644 index 00000000..6350ffca Binary files /dev/null and b/taiga/base/static/img/emojis/confused.png differ diff --git a/taiga/base/static/img/emojis/congratulations.png b/taiga/base/static/img/emojis/congratulations.png new file mode 100644 index 00000000..42f78080 Binary files /dev/null and b/taiga/base/static/img/emojis/congratulations.png differ diff --git a/taiga/base/static/img/emojis/construction.png b/taiga/base/static/img/emojis/construction.png new file mode 100644 index 00000000..5661e966 Binary files /dev/null and b/taiga/base/static/img/emojis/construction.png differ diff --git a/taiga/base/static/img/emojis/construction_worker.png b/taiga/base/static/img/emojis/construction_worker.png new file mode 100644 index 00000000..bb3f0f8f Binary files /dev/null and b/taiga/base/static/img/emojis/construction_worker.png differ diff --git a/taiga/base/static/img/emojis/convenience_store.png b/taiga/base/static/img/emojis/convenience_store.png new file mode 100644 index 00000000..54812389 Binary files /dev/null and b/taiga/base/static/img/emojis/convenience_store.png differ diff --git a/taiga/base/static/img/emojis/cookie.png b/taiga/base/static/img/emojis/cookie.png new file mode 100644 index 00000000..e0051c90 Binary files /dev/null and b/taiga/base/static/img/emojis/cookie.png differ diff --git a/taiga/base/static/img/emojis/cool.png b/taiga/base/static/img/emojis/cool.png new file mode 100644 index 00000000..30452ecf Binary files /dev/null and b/taiga/base/static/img/emojis/cool.png differ diff --git a/taiga/base/static/img/emojis/cop.png b/taiga/base/static/img/emojis/cop.png new file mode 100644 index 00000000..a6d1f25b Binary files /dev/null and b/taiga/base/static/img/emojis/cop.png differ diff --git a/taiga/base/static/img/emojis/copyright.png b/taiga/base/static/img/emojis/copyright.png new file mode 100644 index 00000000..5fdd5ece Binary files /dev/null and b/taiga/base/static/img/emojis/copyright.png differ diff --git a/taiga/base/static/img/emojis/corn.png b/taiga/base/static/img/emojis/corn.png new file mode 100644 index 00000000..69c1c407 Binary files /dev/null and b/taiga/base/static/img/emojis/corn.png differ diff --git a/taiga/base/static/img/emojis/couple.png b/taiga/base/static/img/emojis/couple.png new file mode 100644 index 00000000..6bd22390 Binary files /dev/null and b/taiga/base/static/img/emojis/couple.png differ diff --git a/taiga/base/static/img/emojis/couple_with_heart.png b/taiga/base/static/img/emojis/couple_with_heart.png new file mode 100644 index 00000000..dc5090b9 Binary files /dev/null and b/taiga/base/static/img/emojis/couple_with_heart.png differ diff --git a/taiga/base/static/img/emojis/couplekiss.png b/taiga/base/static/img/emojis/couplekiss.png new file mode 100644 index 00000000..6e04c6bc Binary files /dev/null and b/taiga/base/static/img/emojis/couplekiss.png differ diff --git a/taiga/base/static/img/emojis/cow.png b/taiga/base/static/img/emojis/cow.png new file mode 100644 index 00000000..9dd0fd6c Binary files /dev/null and b/taiga/base/static/img/emojis/cow.png differ diff --git a/taiga/base/static/img/emojis/cow2.png b/taiga/base/static/img/emojis/cow2.png new file mode 100644 index 00000000..ad246241 Binary files /dev/null and b/taiga/base/static/img/emojis/cow2.png differ diff --git a/taiga/base/static/img/emojis/credit_card.png b/taiga/base/static/img/emojis/credit_card.png new file mode 100644 index 00000000..d3da1665 Binary files /dev/null and b/taiga/base/static/img/emojis/credit_card.png differ diff --git a/taiga/base/static/img/emojis/crocodile.png b/taiga/base/static/img/emojis/crocodile.png new file mode 100644 index 00000000..116395c4 Binary files /dev/null and b/taiga/base/static/img/emojis/crocodile.png differ diff --git a/taiga/base/static/img/emojis/crossed_flags.png b/taiga/base/static/img/emojis/crossed_flags.png new file mode 100644 index 00000000..aacfd9b1 Binary files /dev/null and b/taiga/base/static/img/emojis/crossed_flags.png differ diff --git a/taiga/base/static/img/emojis/crown.png b/taiga/base/static/img/emojis/crown.png new file mode 100644 index 00000000..e86a163a Binary files /dev/null and b/taiga/base/static/img/emojis/crown.png differ diff --git a/taiga/base/static/img/emojis/cry.png b/taiga/base/static/img/emojis/cry.png new file mode 100644 index 00000000..be8eaad6 Binary files /dev/null and b/taiga/base/static/img/emojis/cry.png differ diff --git a/taiga/base/static/img/emojis/crying_cat_face.png b/taiga/base/static/img/emojis/crying_cat_face.png new file mode 100644 index 00000000..ecc41589 Binary files /dev/null and b/taiga/base/static/img/emojis/crying_cat_face.png differ diff --git a/taiga/base/static/img/emojis/crystal_ball.png b/taiga/base/static/img/emojis/crystal_ball.png new file mode 100644 index 00000000..dba2bfeb Binary files /dev/null and b/taiga/base/static/img/emojis/crystal_ball.png differ diff --git a/taiga/base/static/img/emojis/cupid.png b/taiga/base/static/img/emojis/cupid.png new file mode 100644 index 00000000..f4591ef0 Binary files /dev/null and b/taiga/base/static/img/emojis/cupid.png differ diff --git a/taiga/base/static/img/emojis/curly_loop.png b/taiga/base/static/img/emojis/curly_loop.png new file mode 100644 index 00000000..f6563a11 Binary files /dev/null and b/taiga/base/static/img/emojis/curly_loop.png differ diff --git a/taiga/base/static/img/emojis/currency_exchange.png b/taiga/base/static/img/emojis/currency_exchange.png new file mode 100644 index 00000000..c165bc64 Binary files /dev/null and b/taiga/base/static/img/emojis/currency_exchange.png differ diff --git a/taiga/base/static/img/emojis/curry.png b/taiga/base/static/img/emojis/curry.png new file mode 100644 index 00000000..2a8d2cf3 Binary files /dev/null and b/taiga/base/static/img/emojis/curry.png differ diff --git a/taiga/base/static/img/emojis/custard.png b/taiga/base/static/img/emojis/custard.png new file mode 100644 index 00000000..b6f4023c Binary files /dev/null and b/taiga/base/static/img/emojis/custard.png differ diff --git a/taiga/base/static/img/emojis/customs.png b/taiga/base/static/img/emojis/customs.png new file mode 100644 index 00000000..33f975e8 Binary files /dev/null and b/taiga/base/static/img/emojis/customs.png differ diff --git a/taiga/base/static/img/emojis/cyclone.png b/taiga/base/static/img/emojis/cyclone.png new file mode 100644 index 00000000..bc33f5b3 Binary files /dev/null and b/taiga/base/static/img/emojis/cyclone.png differ diff --git a/taiga/base/static/img/emojis/dancer.png b/taiga/base/static/img/emojis/dancer.png new file mode 100644 index 00000000..945aed19 Binary files /dev/null and b/taiga/base/static/img/emojis/dancer.png differ diff --git a/taiga/base/static/img/emojis/dancers.png b/taiga/base/static/img/emojis/dancers.png new file mode 100644 index 00000000..9b78bef3 Binary files /dev/null and b/taiga/base/static/img/emojis/dancers.png differ diff --git a/taiga/base/static/img/emojis/dango.png b/taiga/base/static/img/emojis/dango.png new file mode 100644 index 00000000..01a9d64c Binary files /dev/null and b/taiga/base/static/img/emojis/dango.png differ diff --git a/taiga/base/static/img/emojis/dart.png b/taiga/base/static/img/emojis/dart.png new file mode 100644 index 00000000..2fb58d9f Binary files /dev/null and b/taiga/base/static/img/emojis/dart.png differ diff --git a/taiga/base/static/img/emojis/dash.png b/taiga/base/static/img/emojis/dash.png new file mode 100644 index 00000000..4abae3cb Binary files /dev/null and b/taiga/base/static/img/emojis/dash.png differ diff --git a/taiga/base/static/img/emojis/date.png b/taiga/base/static/img/emojis/date.png new file mode 100644 index 00000000..e607aa75 Binary files /dev/null and b/taiga/base/static/img/emojis/date.png differ diff --git a/taiga/base/static/img/emojis/de.png b/taiga/base/static/img/emojis/de.png new file mode 100644 index 00000000..a0e94149 Binary files /dev/null and b/taiga/base/static/img/emojis/de.png differ diff --git a/taiga/base/static/img/emojis/deciduous_tree.png b/taiga/base/static/img/emojis/deciduous_tree.png new file mode 100644 index 00000000..46eb81ef Binary files /dev/null and b/taiga/base/static/img/emojis/deciduous_tree.png differ diff --git a/taiga/base/static/img/emojis/department_store.png b/taiga/base/static/img/emojis/department_store.png new file mode 100644 index 00000000..168e5f8d Binary files /dev/null and b/taiga/base/static/img/emojis/department_store.png differ diff --git a/taiga/base/static/img/emojis/diamond_shape_with_a_dot_inside.png b/taiga/base/static/img/emojis/diamond_shape_with_a_dot_inside.png new file mode 100644 index 00000000..1ad11be0 Binary files /dev/null and b/taiga/base/static/img/emojis/diamond_shape_with_a_dot_inside.png differ diff --git a/taiga/base/static/img/emojis/diamonds.png b/taiga/base/static/img/emojis/diamonds.png new file mode 100644 index 00000000..cee6d170 Binary files /dev/null and b/taiga/base/static/img/emojis/diamonds.png differ diff --git a/taiga/base/static/img/emojis/disappointed.png b/taiga/base/static/img/emojis/disappointed.png new file mode 100644 index 00000000..5c8500cf Binary files /dev/null and b/taiga/base/static/img/emojis/disappointed.png differ diff --git a/taiga/base/static/img/emojis/disappointed_relieved.png b/taiga/base/static/img/emojis/disappointed_relieved.png new file mode 100644 index 00000000..91b27513 Binary files /dev/null and b/taiga/base/static/img/emojis/disappointed_relieved.png differ diff --git a/taiga/base/static/img/emojis/dizzy.png b/taiga/base/static/img/emojis/dizzy.png new file mode 100644 index 00000000..7acc9e12 Binary files /dev/null and b/taiga/base/static/img/emojis/dizzy.png differ diff --git a/taiga/base/static/img/emojis/dizzy_face.png b/taiga/base/static/img/emojis/dizzy_face.png new file mode 100644 index 00000000..ee617408 Binary files /dev/null and b/taiga/base/static/img/emojis/dizzy_face.png differ diff --git a/taiga/base/static/img/emojis/do_not_litter.png b/taiga/base/static/img/emojis/do_not_litter.png new file mode 100644 index 00000000..b0c4b5ab Binary files /dev/null and b/taiga/base/static/img/emojis/do_not_litter.png differ diff --git a/taiga/base/static/img/emojis/dog.png b/taiga/base/static/img/emojis/dog.png new file mode 100644 index 00000000..62072a79 Binary files /dev/null and b/taiga/base/static/img/emojis/dog.png differ diff --git a/taiga/base/static/img/emojis/dog2.png b/taiga/base/static/img/emojis/dog2.png new file mode 100644 index 00000000..f8f1fda3 Binary files /dev/null and b/taiga/base/static/img/emojis/dog2.png differ diff --git a/taiga/base/static/img/emojis/dollar.png b/taiga/base/static/img/emojis/dollar.png new file mode 100644 index 00000000..49b21d3b Binary files /dev/null and b/taiga/base/static/img/emojis/dollar.png differ diff --git a/taiga/base/static/img/emojis/dolls.png b/taiga/base/static/img/emojis/dolls.png new file mode 100644 index 00000000..d6489d48 Binary files /dev/null and b/taiga/base/static/img/emojis/dolls.png differ diff --git a/taiga/base/static/img/emojis/dolphin.png b/taiga/base/static/img/emojis/dolphin.png new file mode 100644 index 00000000..5bd2543c Binary files /dev/null and b/taiga/base/static/img/emojis/dolphin.png differ diff --git a/taiga/base/static/img/emojis/donut.png b/taiga/base/static/img/emojis/donut.png new file mode 100644 index 00000000..aa6653e3 Binary files /dev/null and b/taiga/base/static/img/emojis/donut.png differ diff --git a/taiga/base/static/img/emojis/door.png b/taiga/base/static/img/emojis/door.png new file mode 100644 index 00000000..7a7b9ae7 Binary files /dev/null and b/taiga/base/static/img/emojis/door.png differ diff --git a/taiga/base/static/img/emojis/doughnut.png b/taiga/base/static/img/emojis/doughnut.png new file mode 100644 index 00000000..aa6653e3 Binary files /dev/null and b/taiga/base/static/img/emojis/doughnut.png differ diff --git a/taiga/base/static/img/emojis/dragon.png b/taiga/base/static/img/emojis/dragon.png new file mode 100644 index 00000000..c563d88d Binary files /dev/null and b/taiga/base/static/img/emojis/dragon.png differ diff --git a/taiga/base/static/img/emojis/dragon_face.png b/taiga/base/static/img/emojis/dragon_face.png new file mode 100644 index 00000000..21cc40d7 Binary files /dev/null and b/taiga/base/static/img/emojis/dragon_face.png differ diff --git a/taiga/base/static/img/emojis/dress.png b/taiga/base/static/img/emojis/dress.png new file mode 100644 index 00000000..08c74f54 Binary files /dev/null and b/taiga/base/static/img/emojis/dress.png differ diff --git a/taiga/base/static/img/emojis/dromedary_camel.png b/taiga/base/static/img/emojis/dromedary_camel.png new file mode 100644 index 00000000..eeb50b01 Binary files /dev/null and b/taiga/base/static/img/emojis/dromedary_camel.png differ diff --git a/taiga/base/static/img/emojis/droplet.png b/taiga/base/static/img/emojis/droplet.png new file mode 100644 index 00000000..353265bc Binary files /dev/null and b/taiga/base/static/img/emojis/droplet.png differ diff --git a/taiga/base/static/img/emojis/dvd.png b/taiga/base/static/img/emojis/dvd.png new file mode 100644 index 00000000..06127724 Binary files /dev/null and b/taiga/base/static/img/emojis/dvd.png differ diff --git a/taiga/base/static/img/emojis/e-mail.png b/taiga/base/static/img/emojis/e-mail.png new file mode 100644 index 00000000..73c51105 Binary files /dev/null and b/taiga/base/static/img/emojis/e-mail.png differ diff --git a/taiga/base/static/img/emojis/ear.png b/taiga/base/static/img/emojis/ear.png new file mode 100644 index 00000000..12b2123f Binary files /dev/null and b/taiga/base/static/img/emojis/ear.png differ diff --git a/taiga/base/static/img/emojis/ear_of_rice.png b/taiga/base/static/img/emojis/ear_of_rice.png new file mode 100644 index 00000000..56185b92 Binary files /dev/null and b/taiga/base/static/img/emojis/ear_of_rice.png differ diff --git a/taiga/base/static/img/emojis/earth_africa.png b/taiga/base/static/img/emojis/earth_africa.png new file mode 100644 index 00000000..f34e82f7 Binary files /dev/null and b/taiga/base/static/img/emojis/earth_africa.png differ diff --git a/taiga/base/static/img/emojis/earth_americas.png b/taiga/base/static/img/emojis/earth_americas.png new file mode 100644 index 00000000..4abbe001 Binary files /dev/null and b/taiga/base/static/img/emojis/earth_americas.png differ diff --git a/taiga/base/static/img/emojis/earth_asia.png b/taiga/base/static/img/emojis/earth_asia.png new file mode 100644 index 00000000..5ce04884 Binary files /dev/null and b/taiga/base/static/img/emojis/earth_asia.png differ diff --git a/taiga/base/static/img/emojis/egg.png b/taiga/base/static/img/emojis/egg.png new file mode 100644 index 00000000..4fc81680 Binary files /dev/null and b/taiga/base/static/img/emojis/egg.png differ diff --git a/taiga/base/static/img/emojis/eggplant.png b/taiga/base/static/img/emojis/eggplant.png new file mode 100644 index 00000000..00fc56e3 Binary files /dev/null and b/taiga/base/static/img/emojis/eggplant.png differ diff --git a/taiga/base/static/img/emojis/eight.png b/taiga/base/static/img/emojis/eight.png new file mode 100644 index 00000000..82ee6c4d Binary files /dev/null and b/taiga/base/static/img/emojis/eight.png differ diff --git a/taiga/base/static/img/emojis/eight_pointed_black_star.png b/taiga/base/static/img/emojis/eight_pointed_black_star.png new file mode 100644 index 00000000..91e7018b Binary files /dev/null and b/taiga/base/static/img/emojis/eight_pointed_black_star.png differ diff --git a/taiga/base/static/img/emojis/eight_spoked_asterisk.png b/taiga/base/static/img/emojis/eight_spoked_asterisk.png new file mode 100644 index 00000000..25309499 Binary files /dev/null and b/taiga/base/static/img/emojis/eight_spoked_asterisk.png differ diff --git a/taiga/base/static/img/emojis/electric_plug.png b/taiga/base/static/img/emojis/electric_plug.png new file mode 100644 index 00000000..d9e14e41 Binary files /dev/null and b/taiga/base/static/img/emojis/electric_plug.png differ diff --git a/taiga/base/static/img/emojis/elephant.png b/taiga/base/static/img/emojis/elephant.png new file mode 100644 index 00000000..27cfc5b7 Binary files /dev/null and b/taiga/base/static/img/emojis/elephant.png differ diff --git a/taiga/base/static/img/emojis/email.png b/taiga/base/static/img/emojis/email.png new file mode 100644 index 00000000..1bc0578b Binary files /dev/null and b/taiga/base/static/img/emojis/email.png differ diff --git a/taiga/base/static/img/emojis/end.png b/taiga/base/static/img/emojis/end.png new file mode 100644 index 00000000..6319ed35 Binary files /dev/null and b/taiga/base/static/img/emojis/end.png differ diff --git a/taiga/base/static/img/emojis/envelope.png b/taiga/base/static/img/emojis/envelope.png new file mode 100644 index 00000000..f2449687 Binary files /dev/null and b/taiga/base/static/img/emojis/envelope.png differ diff --git a/taiga/base/static/img/emojis/es.png b/taiga/base/static/img/emojis/es.png new file mode 100644 index 00000000..20ef411e Binary files /dev/null and b/taiga/base/static/img/emojis/es.png differ diff --git a/taiga/base/static/img/emojis/euro.png b/taiga/base/static/img/emojis/euro.png new file mode 100644 index 00000000..94ac9468 Binary files /dev/null and b/taiga/base/static/img/emojis/euro.png differ diff --git a/taiga/base/static/img/emojis/european_castle.png b/taiga/base/static/img/emojis/european_castle.png new file mode 100644 index 00000000..c6f22b05 Binary files /dev/null and b/taiga/base/static/img/emojis/european_castle.png differ diff --git a/taiga/base/static/img/emojis/european_post_office.png b/taiga/base/static/img/emojis/european_post_office.png new file mode 100644 index 00000000..cb9fbb7f Binary files /dev/null and b/taiga/base/static/img/emojis/european_post_office.png differ diff --git a/taiga/base/static/img/emojis/evergreen_tree.png b/taiga/base/static/img/emojis/evergreen_tree.png new file mode 100644 index 00000000..efa687fc Binary files /dev/null and b/taiga/base/static/img/emojis/evergreen_tree.png differ diff --git a/taiga/base/static/img/emojis/exclamation.png b/taiga/base/static/img/emojis/exclamation.png new file mode 100644 index 00000000..bca3075f Binary files /dev/null and b/taiga/base/static/img/emojis/exclamation.png differ diff --git a/taiga/base/static/img/emojis/expressionless.png b/taiga/base/static/img/emojis/expressionless.png new file mode 100644 index 00000000..88758f01 Binary files /dev/null and b/taiga/base/static/img/emojis/expressionless.png differ diff --git a/taiga/base/static/img/emojis/eyeglasses.png b/taiga/base/static/img/emojis/eyeglasses.png new file mode 100644 index 00000000..115f0941 Binary files /dev/null and b/taiga/base/static/img/emojis/eyeglasses.png differ diff --git a/taiga/base/static/img/emojis/eyes.png b/taiga/base/static/img/emojis/eyes.png new file mode 100644 index 00000000..84d9ff01 Binary files /dev/null and b/taiga/base/static/img/emojis/eyes.png differ diff --git a/taiga/base/static/img/emojis/facepunch.png b/taiga/base/static/img/emojis/facepunch.png new file mode 100644 index 00000000..f817ca3f Binary files /dev/null and b/taiga/base/static/img/emojis/facepunch.png differ diff --git a/taiga/base/static/img/emojis/factory.png b/taiga/base/static/img/emojis/factory.png new file mode 100644 index 00000000..e7082f07 Binary files /dev/null and b/taiga/base/static/img/emojis/factory.png differ diff --git a/taiga/base/static/img/emojis/fallen_leaf.png b/taiga/base/static/img/emojis/fallen_leaf.png new file mode 100644 index 00000000..ad970b25 Binary files /dev/null and b/taiga/base/static/img/emojis/fallen_leaf.png differ diff --git a/taiga/base/static/img/emojis/family.png b/taiga/base/static/img/emojis/family.png new file mode 100644 index 00000000..41566a66 Binary files /dev/null and b/taiga/base/static/img/emojis/family.png differ diff --git a/taiga/base/static/img/emojis/fast_forward.png b/taiga/base/static/img/emojis/fast_forward.png new file mode 100644 index 00000000..084d8d7c Binary files /dev/null and b/taiga/base/static/img/emojis/fast_forward.png differ diff --git a/taiga/base/static/img/emojis/fax.png b/taiga/base/static/img/emojis/fax.png new file mode 100644 index 00000000..cc176a6b Binary files /dev/null and b/taiga/base/static/img/emojis/fax.png differ diff --git a/taiga/base/static/img/emojis/fearful.png b/taiga/base/static/img/emojis/fearful.png new file mode 100644 index 00000000..15f7301a Binary files /dev/null and b/taiga/base/static/img/emojis/fearful.png differ diff --git a/taiga/base/static/img/emojis/feelsgood.png b/taiga/base/static/img/emojis/feelsgood.png new file mode 100644 index 00000000..8910a87a Binary files /dev/null and b/taiga/base/static/img/emojis/feelsgood.png differ diff --git a/taiga/base/static/img/emojis/feet.png b/taiga/base/static/img/emojis/feet.png new file mode 100644 index 00000000..8c52f522 Binary files /dev/null and b/taiga/base/static/img/emojis/feet.png differ diff --git a/taiga/base/static/img/emojis/ferris_wheel.png b/taiga/base/static/img/emojis/ferris_wheel.png new file mode 100644 index 00000000..6bf612d9 Binary files /dev/null and b/taiga/base/static/img/emojis/ferris_wheel.png differ diff --git a/taiga/base/static/img/emojis/file_folder.png b/taiga/base/static/img/emojis/file_folder.png new file mode 100644 index 00000000..2f654936 Binary files /dev/null and b/taiga/base/static/img/emojis/file_folder.png differ diff --git a/taiga/base/static/img/emojis/finnadie.png b/taiga/base/static/img/emojis/finnadie.png new file mode 100644 index 00000000..8f3f2aa3 Binary files /dev/null and b/taiga/base/static/img/emojis/finnadie.png differ diff --git a/taiga/base/static/img/emojis/fire.png b/taiga/base/static/img/emojis/fire.png new file mode 100644 index 00000000..38292b29 Binary files /dev/null and b/taiga/base/static/img/emojis/fire.png differ diff --git a/taiga/base/static/img/emojis/fire_engine.png b/taiga/base/static/img/emojis/fire_engine.png new file mode 100644 index 00000000..8e879e3e Binary files /dev/null and b/taiga/base/static/img/emojis/fire_engine.png differ diff --git a/taiga/base/static/img/emojis/fireworks.png b/taiga/base/static/img/emojis/fireworks.png new file mode 100644 index 00000000..eb53624b Binary files /dev/null and b/taiga/base/static/img/emojis/fireworks.png differ diff --git a/taiga/base/static/img/emojis/first_quarter_moon.png b/taiga/base/static/img/emojis/first_quarter_moon.png new file mode 100644 index 00000000..4ccac406 Binary files /dev/null and b/taiga/base/static/img/emojis/first_quarter_moon.png differ diff --git a/taiga/base/static/img/emojis/first_quarter_moon_with_face.png b/taiga/base/static/img/emojis/first_quarter_moon_with_face.png new file mode 100644 index 00000000..01bf0dc9 Binary files /dev/null and b/taiga/base/static/img/emojis/first_quarter_moon_with_face.png differ diff --git a/taiga/base/static/img/emojis/fish.png b/taiga/base/static/img/emojis/fish.png new file mode 100644 index 00000000..3544ff95 Binary files /dev/null and b/taiga/base/static/img/emojis/fish.png differ diff --git a/taiga/base/static/img/emojis/fish_cake.png b/taiga/base/static/img/emojis/fish_cake.png new file mode 100644 index 00000000..29add6da Binary files /dev/null and b/taiga/base/static/img/emojis/fish_cake.png differ diff --git a/taiga/base/static/img/emojis/fishing_pole_and_fish.png b/taiga/base/static/img/emojis/fishing_pole_and_fish.png new file mode 100644 index 00000000..fe1371e9 Binary files /dev/null and b/taiga/base/static/img/emojis/fishing_pole_and_fish.png differ diff --git a/taiga/base/static/img/emojis/fist.png b/taiga/base/static/img/emojis/fist.png new file mode 100644 index 00000000..7d5fe3f5 Binary files /dev/null and b/taiga/base/static/img/emojis/fist.png differ diff --git a/taiga/base/static/img/emojis/five.png b/taiga/base/static/img/emojis/five.png new file mode 100644 index 00000000..3e9c322e Binary files /dev/null and b/taiga/base/static/img/emojis/five.png differ diff --git a/taiga/base/static/img/emojis/flags.png b/taiga/base/static/img/emojis/flags.png new file mode 100644 index 00000000..0ac33230 Binary files /dev/null and b/taiga/base/static/img/emojis/flags.png differ diff --git a/taiga/base/static/img/emojis/flashlight.png b/taiga/base/static/img/emojis/flashlight.png new file mode 100644 index 00000000..20f3941b Binary files /dev/null and b/taiga/base/static/img/emojis/flashlight.png differ diff --git a/taiga/base/static/img/emojis/floppy_disk.png b/taiga/base/static/img/emojis/floppy_disk.png new file mode 100644 index 00000000..64362a51 Binary files /dev/null and b/taiga/base/static/img/emojis/floppy_disk.png differ diff --git a/taiga/base/static/img/emojis/flower_playing_cards.png b/taiga/base/static/img/emojis/flower_playing_cards.png new file mode 100644 index 00000000..ef3dfbe0 Binary files /dev/null and b/taiga/base/static/img/emojis/flower_playing_cards.png differ diff --git a/taiga/base/static/img/emojis/flushed.png b/taiga/base/static/img/emojis/flushed.png new file mode 100644 index 00000000..5a8933cb Binary files /dev/null and b/taiga/base/static/img/emojis/flushed.png differ diff --git a/taiga/base/static/img/emojis/foggy.png b/taiga/base/static/img/emojis/foggy.png new file mode 100644 index 00000000..d23620c5 Binary files /dev/null and b/taiga/base/static/img/emojis/foggy.png differ diff --git a/taiga/base/static/img/emojis/football.png b/taiga/base/static/img/emojis/football.png new file mode 100644 index 00000000..87e8b061 Binary files /dev/null and b/taiga/base/static/img/emojis/football.png differ diff --git a/taiga/base/static/img/emojis/fork_and_knife.png b/taiga/base/static/img/emojis/fork_and_knife.png new file mode 100644 index 00000000..5155871e Binary files /dev/null and b/taiga/base/static/img/emojis/fork_and_knife.png differ diff --git a/taiga/base/static/img/emojis/fountain.png b/taiga/base/static/img/emojis/fountain.png new file mode 100644 index 00000000..f312d939 Binary files /dev/null and b/taiga/base/static/img/emojis/fountain.png differ diff --git a/taiga/base/static/img/emojis/four.png b/taiga/base/static/img/emojis/four.png new file mode 100644 index 00000000..57c65208 Binary files /dev/null and b/taiga/base/static/img/emojis/four.png differ diff --git a/taiga/base/static/img/emojis/four_leaf_clover.png b/taiga/base/static/img/emojis/four_leaf_clover.png new file mode 100644 index 00000000..9f5b641f Binary files /dev/null and b/taiga/base/static/img/emojis/four_leaf_clover.png differ diff --git a/taiga/base/static/img/emojis/fr.png b/taiga/base/static/img/emojis/fr.png new file mode 100644 index 00000000..f051223d Binary files /dev/null and b/taiga/base/static/img/emojis/fr.png differ diff --git a/taiga/base/static/img/emojis/free.png b/taiga/base/static/img/emojis/free.png new file mode 100644 index 00000000..1c5d612b Binary files /dev/null and b/taiga/base/static/img/emojis/free.png differ diff --git a/taiga/base/static/img/emojis/fried_shrimp.png b/taiga/base/static/img/emojis/fried_shrimp.png new file mode 100644 index 00000000..a65349ac Binary files /dev/null and b/taiga/base/static/img/emojis/fried_shrimp.png differ diff --git a/taiga/base/static/img/emojis/fries.png b/taiga/base/static/img/emojis/fries.png new file mode 100644 index 00000000..b7e535a0 Binary files /dev/null and b/taiga/base/static/img/emojis/fries.png differ diff --git a/taiga/base/static/img/emojis/frog.png b/taiga/base/static/img/emojis/frog.png new file mode 100644 index 00000000..92316aeb Binary files /dev/null and b/taiga/base/static/img/emojis/frog.png differ diff --git a/taiga/base/static/img/emojis/frowning.png b/taiga/base/static/img/emojis/frowning.png new file mode 100644 index 00000000..9f9c188b Binary files /dev/null and b/taiga/base/static/img/emojis/frowning.png differ diff --git a/taiga/base/static/img/emojis/fu.png b/taiga/base/static/img/emojis/fu.png new file mode 100644 index 00000000..ad758495 Binary files /dev/null and b/taiga/base/static/img/emojis/fu.png differ diff --git a/taiga/base/static/img/emojis/fuelpump.png b/taiga/base/static/img/emojis/fuelpump.png new file mode 100644 index 00000000..50464a3b Binary files /dev/null and b/taiga/base/static/img/emojis/fuelpump.png differ diff --git a/taiga/base/static/img/emojis/full_moon.png b/taiga/base/static/img/emojis/full_moon.png new file mode 100644 index 00000000..858ec71f Binary files /dev/null and b/taiga/base/static/img/emojis/full_moon.png differ diff --git a/taiga/base/static/img/emojis/full_moon_with_face.png b/taiga/base/static/img/emojis/full_moon_with_face.png new file mode 100644 index 00000000..410a9d45 Binary files /dev/null and b/taiga/base/static/img/emojis/full_moon_with_face.png differ diff --git a/taiga/base/static/img/emojis/game_die.png b/taiga/base/static/img/emojis/game_die.png new file mode 100644 index 00000000..fa8565af Binary files /dev/null and b/taiga/base/static/img/emojis/game_die.png differ diff --git a/taiga/base/static/img/emojis/gb.png b/taiga/base/static/img/emojis/gb.png new file mode 100644 index 00000000..02553549 Binary files /dev/null and b/taiga/base/static/img/emojis/gb.png differ diff --git a/taiga/base/static/img/emojis/gem.png b/taiga/base/static/img/emojis/gem.png new file mode 100644 index 00000000..d106d2b4 Binary files /dev/null and b/taiga/base/static/img/emojis/gem.png differ diff --git a/taiga/base/static/img/emojis/gemini.png b/taiga/base/static/img/emojis/gemini.png new file mode 100644 index 00000000..686e046c Binary files /dev/null and b/taiga/base/static/img/emojis/gemini.png differ diff --git a/taiga/base/static/img/emojis/ghost.png b/taiga/base/static/img/emojis/ghost.png new file mode 100644 index 00000000..fba8b81e Binary files /dev/null and b/taiga/base/static/img/emojis/ghost.png differ diff --git a/taiga/base/static/img/emojis/gift.png b/taiga/base/static/img/emojis/gift.png new file mode 100644 index 00000000..2210f531 Binary files /dev/null and b/taiga/base/static/img/emojis/gift.png differ diff --git a/taiga/base/static/img/emojis/gift_heart.png b/taiga/base/static/img/emojis/gift_heart.png new file mode 100644 index 00000000..0805adfe Binary files /dev/null and b/taiga/base/static/img/emojis/gift_heart.png differ diff --git a/taiga/base/static/img/emojis/girl.png b/taiga/base/static/img/emojis/girl.png new file mode 100644 index 00000000..56ce6e09 Binary files /dev/null and b/taiga/base/static/img/emojis/girl.png differ diff --git a/taiga/base/static/img/emojis/globe_with_meridians.png b/taiga/base/static/img/emojis/globe_with_meridians.png new file mode 100644 index 00000000..6f93dca0 Binary files /dev/null and b/taiga/base/static/img/emojis/globe_with_meridians.png differ diff --git a/taiga/base/static/img/emojis/goat.png b/taiga/base/static/img/emojis/goat.png new file mode 100644 index 00000000..c87eca27 Binary files /dev/null and b/taiga/base/static/img/emojis/goat.png differ diff --git a/taiga/base/static/img/emojis/goberserk.png b/taiga/base/static/img/emojis/goberserk.png new file mode 100644 index 00000000..38e7f7eb Binary files /dev/null and b/taiga/base/static/img/emojis/goberserk.png differ diff --git a/taiga/base/static/img/emojis/godmode.png b/taiga/base/static/img/emojis/godmode.png new file mode 100644 index 00000000..55e7f7d4 Binary files /dev/null and b/taiga/base/static/img/emojis/godmode.png differ diff --git a/taiga/base/static/img/emojis/golf.png b/taiga/base/static/img/emojis/golf.png new file mode 100644 index 00000000..64193e42 Binary files /dev/null and b/taiga/base/static/img/emojis/golf.png differ diff --git a/taiga/base/static/img/emojis/grapes.png b/taiga/base/static/img/emojis/grapes.png new file mode 100644 index 00000000..1b0b9102 Binary files /dev/null and b/taiga/base/static/img/emojis/grapes.png differ diff --git a/taiga/base/static/img/emojis/green_apple.png b/taiga/base/static/img/emojis/green_apple.png new file mode 100644 index 00000000..264a125f Binary files /dev/null and b/taiga/base/static/img/emojis/green_apple.png differ diff --git a/taiga/base/static/img/emojis/green_book.png b/taiga/base/static/img/emojis/green_book.png new file mode 100644 index 00000000..bae6a552 Binary files /dev/null and b/taiga/base/static/img/emojis/green_book.png differ diff --git a/taiga/base/static/img/emojis/green_heart.png b/taiga/base/static/img/emojis/green_heart.png new file mode 100644 index 00000000..55e25e27 Binary files /dev/null and b/taiga/base/static/img/emojis/green_heart.png differ diff --git a/taiga/base/static/img/emojis/grey_exclamation.png b/taiga/base/static/img/emojis/grey_exclamation.png new file mode 100644 index 00000000..e0d8ff86 Binary files /dev/null and b/taiga/base/static/img/emojis/grey_exclamation.png differ diff --git a/taiga/base/static/img/emojis/grey_question.png b/taiga/base/static/img/emojis/grey_question.png new file mode 100644 index 00000000..3f6acea1 Binary files /dev/null and b/taiga/base/static/img/emojis/grey_question.png differ diff --git a/taiga/base/static/img/emojis/grimacing.png b/taiga/base/static/img/emojis/grimacing.png new file mode 100644 index 00000000..b471487e Binary files /dev/null and b/taiga/base/static/img/emojis/grimacing.png differ diff --git a/taiga/base/static/img/emojis/grin.png b/taiga/base/static/img/emojis/grin.png new file mode 100644 index 00000000..c6a5ef3a Binary files /dev/null and b/taiga/base/static/img/emojis/grin.png differ diff --git a/taiga/base/static/img/emojis/grinning.png b/taiga/base/static/img/emojis/grinning.png new file mode 100644 index 00000000..94ca708b Binary files /dev/null and b/taiga/base/static/img/emojis/grinning.png differ diff --git a/taiga/base/static/img/emojis/guardsman.png b/taiga/base/static/img/emojis/guardsman.png new file mode 100644 index 00000000..e4a66597 Binary files /dev/null and b/taiga/base/static/img/emojis/guardsman.png differ diff --git a/taiga/base/static/img/emojis/guitar.png b/taiga/base/static/img/emojis/guitar.png new file mode 100644 index 00000000..9939d795 Binary files /dev/null and b/taiga/base/static/img/emojis/guitar.png differ diff --git a/taiga/base/static/img/emojis/gun.png b/taiga/base/static/img/emojis/gun.png new file mode 100644 index 00000000..5cea9d85 Binary files /dev/null and b/taiga/base/static/img/emojis/gun.png differ diff --git a/taiga/base/static/img/emojis/haircut.png b/taiga/base/static/img/emojis/haircut.png new file mode 100644 index 00000000..68b011f1 Binary files /dev/null and b/taiga/base/static/img/emojis/haircut.png differ diff --git a/taiga/base/static/img/emojis/hamburger.png b/taiga/base/static/img/emojis/hamburger.png new file mode 100644 index 00000000..864d09aa Binary files /dev/null and b/taiga/base/static/img/emojis/hamburger.png differ diff --git a/taiga/base/static/img/emojis/hammer.png b/taiga/base/static/img/emojis/hammer.png new file mode 100644 index 00000000..ca527213 Binary files /dev/null and b/taiga/base/static/img/emojis/hammer.png differ diff --git a/taiga/base/static/img/emojis/hamster.png b/taiga/base/static/img/emojis/hamster.png new file mode 100644 index 00000000..3e8d47ad Binary files /dev/null and b/taiga/base/static/img/emojis/hamster.png differ diff --git a/taiga/base/static/img/emojis/hand.png b/taiga/base/static/img/emojis/hand.png new file mode 100644 index 00000000..7537b375 Binary files /dev/null and b/taiga/base/static/img/emojis/hand.png differ diff --git a/taiga/base/static/img/emojis/handbag.png b/taiga/base/static/img/emojis/handbag.png new file mode 100644 index 00000000..a46d79be Binary files /dev/null and b/taiga/base/static/img/emojis/handbag.png differ diff --git a/taiga/base/static/img/emojis/hankey.png b/taiga/base/static/img/emojis/hankey.png new file mode 100644 index 00000000..cbd8d185 Binary files /dev/null and b/taiga/base/static/img/emojis/hankey.png differ diff --git a/taiga/base/static/img/emojis/hash.png b/taiga/base/static/img/emojis/hash.png new file mode 100644 index 00000000..4082b982 Binary files /dev/null and b/taiga/base/static/img/emojis/hash.png differ diff --git a/taiga/base/static/img/emojis/hatched_chick.png b/taiga/base/static/img/emojis/hatched_chick.png new file mode 100644 index 00000000..c1726be7 Binary files /dev/null and b/taiga/base/static/img/emojis/hatched_chick.png differ diff --git a/taiga/base/static/img/emojis/hatching_chick.png b/taiga/base/static/img/emojis/hatching_chick.png new file mode 100644 index 00000000..7ecebe7a Binary files /dev/null and b/taiga/base/static/img/emojis/hatching_chick.png differ diff --git a/taiga/base/static/img/emojis/headphones.png b/taiga/base/static/img/emojis/headphones.png new file mode 100644 index 00000000..b56ebcb3 Binary files /dev/null and b/taiga/base/static/img/emojis/headphones.png differ diff --git a/taiga/base/static/img/emojis/hear_no_evil.png b/taiga/base/static/img/emojis/hear_no_evil.png new file mode 100644 index 00000000..560993ce Binary files /dev/null and b/taiga/base/static/img/emojis/hear_no_evil.png differ diff --git a/taiga/base/static/img/emojis/heart.png b/taiga/base/static/img/emojis/heart.png new file mode 100644 index 00000000..43f9b660 Binary files /dev/null and b/taiga/base/static/img/emojis/heart.png differ diff --git a/taiga/base/static/img/emojis/heart_decoration.png b/taiga/base/static/img/emojis/heart_decoration.png new file mode 100644 index 00000000..2600ef1a Binary files /dev/null and b/taiga/base/static/img/emojis/heart_decoration.png differ diff --git a/taiga/base/static/img/emojis/heart_eyes.png b/taiga/base/static/img/emojis/heart_eyes.png new file mode 100644 index 00000000..b2af9da2 Binary files /dev/null and b/taiga/base/static/img/emojis/heart_eyes.png differ diff --git a/taiga/base/static/img/emojis/heart_eyes_cat.png b/taiga/base/static/img/emojis/heart_eyes_cat.png new file mode 100644 index 00000000..26f8bfc6 Binary files /dev/null and b/taiga/base/static/img/emojis/heart_eyes_cat.png differ diff --git a/taiga/base/static/img/emojis/heartbeat.png b/taiga/base/static/img/emojis/heartbeat.png new file mode 100644 index 00000000..608989a5 Binary files /dev/null and b/taiga/base/static/img/emojis/heartbeat.png differ diff --git a/taiga/base/static/img/emojis/heartpulse.png b/taiga/base/static/img/emojis/heartpulse.png new file mode 100644 index 00000000..97dc3ee4 Binary files /dev/null and b/taiga/base/static/img/emojis/heartpulse.png differ diff --git a/taiga/base/static/img/emojis/hearts.png b/taiga/base/static/img/emojis/hearts.png new file mode 100644 index 00000000..fb4e4f7b Binary files /dev/null and b/taiga/base/static/img/emojis/hearts.png differ diff --git a/taiga/base/static/img/emojis/heavy_check_mark.png b/taiga/base/static/img/emojis/heavy_check_mark.png new file mode 100644 index 00000000..59c25db1 Binary files /dev/null and b/taiga/base/static/img/emojis/heavy_check_mark.png differ diff --git a/taiga/base/static/img/emojis/heavy_division_sign.png b/taiga/base/static/img/emojis/heavy_division_sign.png new file mode 100644 index 00000000..27ee9649 Binary files /dev/null and b/taiga/base/static/img/emojis/heavy_division_sign.png differ diff --git a/taiga/base/static/img/emojis/heavy_dollar_sign.png b/taiga/base/static/img/emojis/heavy_dollar_sign.png new file mode 100644 index 00000000..065f96a8 Binary files /dev/null and b/taiga/base/static/img/emojis/heavy_dollar_sign.png differ diff --git a/taiga/base/static/img/emojis/heavy_exclamation_mark.png b/taiga/base/static/img/emojis/heavy_exclamation_mark.png new file mode 100644 index 00000000..a92d1ed0 Binary files /dev/null and b/taiga/base/static/img/emojis/heavy_exclamation_mark.png differ diff --git a/taiga/base/static/img/emojis/heavy_minus_sign.png b/taiga/base/static/img/emojis/heavy_minus_sign.png new file mode 100644 index 00000000..032d0e50 Binary files /dev/null and b/taiga/base/static/img/emojis/heavy_minus_sign.png differ diff --git a/taiga/base/static/img/emojis/heavy_multiplication_x.png b/taiga/base/static/img/emojis/heavy_multiplication_x.png new file mode 100644 index 00000000..4cf30a90 Binary files /dev/null and b/taiga/base/static/img/emojis/heavy_multiplication_x.png differ diff --git a/taiga/base/static/img/emojis/heavy_plus_sign.png b/taiga/base/static/img/emojis/heavy_plus_sign.png new file mode 100644 index 00000000..0a0f2331 Binary files /dev/null and b/taiga/base/static/img/emojis/heavy_plus_sign.png differ diff --git a/taiga/base/static/img/emojis/helicopter.png b/taiga/base/static/img/emojis/helicopter.png new file mode 100644 index 00000000..d40615d0 Binary files /dev/null and b/taiga/base/static/img/emojis/helicopter.png differ diff --git a/taiga/base/static/img/emojis/herb.png b/taiga/base/static/img/emojis/herb.png new file mode 100644 index 00000000..cd151993 Binary files /dev/null and b/taiga/base/static/img/emojis/herb.png differ diff --git a/taiga/base/static/img/emojis/hibiscus.png b/taiga/base/static/img/emojis/hibiscus.png new file mode 100644 index 00000000..6d291b75 Binary files /dev/null and b/taiga/base/static/img/emojis/hibiscus.png differ diff --git a/taiga/base/static/img/emojis/high_brightness.png b/taiga/base/static/img/emojis/high_brightness.png new file mode 100644 index 00000000..931856b7 Binary files /dev/null and b/taiga/base/static/img/emojis/high_brightness.png differ diff --git a/taiga/base/static/img/emojis/high_heel.png b/taiga/base/static/img/emojis/high_heel.png new file mode 100644 index 00000000..d065a29e Binary files /dev/null and b/taiga/base/static/img/emojis/high_heel.png differ diff --git a/taiga/base/static/img/emojis/hocho.png b/taiga/base/static/img/emojis/hocho.png new file mode 100644 index 00000000..5b3cf0f5 Binary files /dev/null and b/taiga/base/static/img/emojis/hocho.png differ diff --git a/taiga/base/static/img/emojis/honey_pot.png b/taiga/base/static/img/emojis/honey_pot.png new file mode 100644 index 00000000..6a30762f Binary files /dev/null and b/taiga/base/static/img/emojis/honey_pot.png differ diff --git a/taiga/base/static/img/emojis/honeybee.png b/taiga/base/static/img/emojis/honeybee.png new file mode 100644 index 00000000..1c5fc5bf Binary files /dev/null and b/taiga/base/static/img/emojis/honeybee.png differ diff --git a/taiga/base/static/img/emojis/horse.png b/taiga/base/static/img/emojis/horse.png new file mode 100644 index 00000000..e0c1f2e8 Binary files /dev/null and b/taiga/base/static/img/emojis/horse.png differ diff --git a/taiga/base/static/img/emojis/horse_racing.png b/taiga/base/static/img/emojis/horse_racing.png new file mode 100644 index 00000000..f9d19d2b Binary files /dev/null and b/taiga/base/static/img/emojis/horse_racing.png differ diff --git a/taiga/base/static/img/emojis/hospital.png b/taiga/base/static/img/emojis/hospital.png new file mode 100644 index 00000000..3d5f71ed Binary files /dev/null and b/taiga/base/static/img/emojis/hospital.png differ diff --git a/taiga/base/static/img/emojis/hotel.png b/taiga/base/static/img/emojis/hotel.png new file mode 100644 index 00000000..ee06286c Binary files /dev/null and b/taiga/base/static/img/emojis/hotel.png differ diff --git a/taiga/base/static/img/emojis/hotsprings.png b/taiga/base/static/img/emojis/hotsprings.png new file mode 100644 index 00000000..c3313269 Binary files /dev/null and b/taiga/base/static/img/emojis/hotsprings.png differ diff --git a/taiga/base/static/img/emojis/hourglass.png b/taiga/base/static/img/emojis/hourglass.png new file mode 100644 index 00000000..e30b6b61 Binary files /dev/null and b/taiga/base/static/img/emojis/hourglass.png differ diff --git a/taiga/base/static/img/emojis/hourglass_flowing_sand.png b/taiga/base/static/img/emojis/hourglass_flowing_sand.png new file mode 100644 index 00000000..9415f644 Binary files /dev/null and b/taiga/base/static/img/emojis/hourglass_flowing_sand.png differ diff --git a/taiga/base/static/img/emojis/house.png b/taiga/base/static/img/emojis/house.png new file mode 100644 index 00000000..372dc576 Binary files /dev/null and b/taiga/base/static/img/emojis/house.png differ diff --git a/taiga/base/static/img/emojis/house_with_garden.png b/taiga/base/static/img/emojis/house_with_garden.png new file mode 100644 index 00000000..51114ea6 Binary files /dev/null and b/taiga/base/static/img/emojis/house_with_garden.png differ diff --git a/taiga/base/static/img/emojis/hurtrealbad.png b/taiga/base/static/img/emojis/hurtrealbad.png new file mode 100644 index 00000000..79c67f50 Binary files /dev/null and b/taiga/base/static/img/emojis/hurtrealbad.png differ diff --git a/taiga/base/static/img/emojis/hushed.png b/taiga/base/static/img/emojis/hushed.png new file mode 100644 index 00000000..75007b6f Binary files /dev/null and b/taiga/base/static/img/emojis/hushed.png differ diff --git a/taiga/base/static/img/emojis/ice_cream.png b/taiga/base/static/img/emojis/ice_cream.png new file mode 100644 index 00000000..8911e16c Binary files /dev/null and b/taiga/base/static/img/emojis/ice_cream.png differ diff --git a/taiga/base/static/img/emojis/icecream.png b/taiga/base/static/img/emojis/icecream.png new file mode 100644 index 00000000..33fde29c Binary files /dev/null and b/taiga/base/static/img/emojis/icecream.png differ diff --git a/taiga/base/static/img/emojis/id.png b/taiga/base/static/img/emojis/id.png new file mode 100644 index 00000000..565735db Binary files /dev/null and b/taiga/base/static/img/emojis/id.png differ diff --git a/taiga/base/static/img/emojis/ideograph_advantage.png b/taiga/base/static/img/emojis/ideograph_advantage.png new file mode 100644 index 00000000..76a52f56 Binary files /dev/null and b/taiga/base/static/img/emojis/ideograph_advantage.png differ diff --git a/taiga/base/static/img/emojis/imp.png b/taiga/base/static/img/emojis/imp.png new file mode 100644 index 00000000..dc8ca586 Binary files /dev/null and b/taiga/base/static/img/emojis/imp.png differ diff --git a/taiga/base/static/img/emojis/inbox_tray.png b/taiga/base/static/img/emojis/inbox_tray.png new file mode 100644 index 00000000..46a67e44 Binary files /dev/null and b/taiga/base/static/img/emojis/inbox_tray.png differ diff --git a/taiga/base/static/img/emojis/incoming_envelope.png b/taiga/base/static/img/emojis/incoming_envelope.png new file mode 100644 index 00000000..c43c1e1b Binary files /dev/null and b/taiga/base/static/img/emojis/incoming_envelope.png differ diff --git a/taiga/base/static/img/emojis/information_desk_person.png b/taiga/base/static/img/emojis/information_desk_person.png new file mode 100644 index 00000000..ad75a6c7 Binary files /dev/null and b/taiga/base/static/img/emojis/information_desk_person.png differ diff --git a/taiga/base/static/img/emojis/information_source.png b/taiga/base/static/img/emojis/information_source.png new file mode 100644 index 00000000..bc601c25 Binary files /dev/null and b/taiga/base/static/img/emojis/information_source.png differ diff --git a/taiga/base/static/img/emojis/innocent.png b/taiga/base/static/img/emojis/innocent.png new file mode 100644 index 00000000..1da31839 Binary files /dev/null and b/taiga/base/static/img/emojis/innocent.png differ diff --git a/taiga/base/static/img/emojis/interrobang.png b/taiga/base/static/img/emojis/interrobang.png new file mode 100644 index 00000000..4159e389 Binary files /dev/null and b/taiga/base/static/img/emojis/interrobang.png differ diff --git a/taiga/base/static/img/emojis/iphone.png b/taiga/base/static/img/emojis/iphone.png new file mode 100644 index 00000000..1a195563 Binary files /dev/null and b/taiga/base/static/img/emojis/iphone.png differ diff --git a/taiga/base/static/img/emojis/it.png b/taiga/base/static/img/emojis/it.png new file mode 100644 index 00000000..93479805 Binary files /dev/null and b/taiga/base/static/img/emojis/it.png differ diff --git a/taiga/base/static/img/emojis/izakaya_lantern.png b/taiga/base/static/img/emojis/izakaya_lantern.png new file mode 100644 index 00000000..daeece4b Binary files /dev/null and b/taiga/base/static/img/emojis/izakaya_lantern.png differ diff --git a/taiga/base/static/img/emojis/jack_o_lantern.png b/taiga/base/static/img/emojis/jack_o_lantern.png new file mode 100644 index 00000000..a565b482 Binary files /dev/null and b/taiga/base/static/img/emojis/jack_o_lantern.png differ diff --git a/taiga/base/static/img/emojis/japan.png b/taiga/base/static/img/emojis/japan.png new file mode 100644 index 00000000..4ff90791 Binary files /dev/null and b/taiga/base/static/img/emojis/japan.png differ diff --git a/taiga/base/static/img/emojis/japanese_castle.png b/taiga/base/static/img/emojis/japanese_castle.png new file mode 100644 index 00000000..4fe4baaa Binary files /dev/null and b/taiga/base/static/img/emojis/japanese_castle.png differ diff --git a/taiga/base/static/img/emojis/japanese_goblin.png b/taiga/base/static/img/emojis/japanese_goblin.png new file mode 100644 index 00000000..5407007c Binary files /dev/null and b/taiga/base/static/img/emojis/japanese_goblin.png differ diff --git a/taiga/base/static/img/emojis/japanese_ogre.png b/taiga/base/static/img/emojis/japanese_ogre.png new file mode 100644 index 00000000..15d319f8 Binary files /dev/null and b/taiga/base/static/img/emojis/japanese_ogre.png differ diff --git a/taiga/base/static/img/emojis/jeans.png b/taiga/base/static/img/emojis/jeans.png new file mode 100644 index 00000000..44916328 Binary files /dev/null and b/taiga/base/static/img/emojis/jeans.png differ diff --git a/taiga/base/static/img/emojis/joy.png b/taiga/base/static/img/emojis/joy.png new file mode 100644 index 00000000..4e7742a0 Binary files /dev/null and b/taiga/base/static/img/emojis/joy.png differ diff --git a/taiga/base/static/img/emojis/joy_cat.png b/taiga/base/static/img/emojis/joy_cat.png new file mode 100644 index 00000000..3b281f69 Binary files /dev/null and b/taiga/base/static/img/emojis/joy_cat.png differ diff --git a/taiga/base/static/img/emojis/jp.png b/taiga/base/static/img/emojis/jp.png new file mode 100644 index 00000000..954b20f2 Binary files /dev/null and b/taiga/base/static/img/emojis/jp.png differ diff --git a/taiga/base/static/img/emojis/key.png b/taiga/base/static/img/emojis/key.png new file mode 100644 index 00000000..c85ceae3 Binary files /dev/null and b/taiga/base/static/img/emojis/key.png differ diff --git a/taiga/base/static/img/emojis/keycap_ten.png b/taiga/base/static/img/emojis/keycap_ten.png new file mode 100644 index 00000000..5bb744a4 Binary files /dev/null and b/taiga/base/static/img/emojis/keycap_ten.png differ diff --git a/taiga/base/static/img/emojis/kimono.png b/taiga/base/static/img/emojis/kimono.png new file mode 100644 index 00000000..d44d66ae Binary files /dev/null and b/taiga/base/static/img/emojis/kimono.png differ diff --git a/taiga/base/static/img/emojis/kiss.png b/taiga/base/static/img/emojis/kiss.png new file mode 100644 index 00000000..b12afaae Binary files /dev/null and b/taiga/base/static/img/emojis/kiss.png differ diff --git a/taiga/base/static/img/emojis/kissing.png b/taiga/base/static/img/emojis/kissing.png new file mode 100644 index 00000000..9b4c4c00 Binary files /dev/null and b/taiga/base/static/img/emojis/kissing.png differ diff --git a/taiga/base/static/img/emojis/kissing_cat.png b/taiga/base/static/img/emojis/kissing_cat.png new file mode 100644 index 00000000..69e24f9f Binary files /dev/null and b/taiga/base/static/img/emojis/kissing_cat.png differ diff --git a/taiga/base/static/img/emojis/kissing_closed_eyes.png b/taiga/base/static/img/emojis/kissing_closed_eyes.png new file mode 100644 index 00000000..d1aaf59b Binary files /dev/null and b/taiga/base/static/img/emojis/kissing_closed_eyes.png differ diff --git a/taiga/base/static/img/emojis/kissing_face.png b/taiga/base/static/img/emojis/kissing_face.png new file mode 100644 index 00000000..d1aaf59b Binary files /dev/null and b/taiga/base/static/img/emojis/kissing_face.png differ diff --git a/taiga/base/static/img/emojis/kissing_heart.png b/taiga/base/static/img/emojis/kissing_heart.png new file mode 100644 index 00000000..9a96154c Binary files /dev/null and b/taiga/base/static/img/emojis/kissing_heart.png differ diff --git a/taiga/base/static/img/emojis/kissing_smiling_eyes.png b/taiga/base/static/img/emojis/kissing_smiling_eyes.png new file mode 100644 index 00000000..ffb5d834 Binary files /dev/null and b/taiga/base/static/img/emojis/kissing_smiling_eyes.png differ diff --git a/taiga/base/static/img/emojis/koala.png b/taiga/base/static/img/emojis/koala.png new file mode 100644 index 00000000..c2500234 Binary files /dev/null and b/taiga/base/static/img/emojis/koala.png differ diff --git a/taiga/base/static/img/emojis/koko.png b/taiga/base/static/img/emojis/koko.png new file mode 100644 index 00000000..65937c9f Binary files /dev/null and b/taiga/base/static/img/emojis/koko.png differ diff --git a/taiga/base/static/img/emojis/kr.png b/taiga/base/static/img/emojis/kr.png new file mode 100644 index 00000000..4dad585e Binary files /dev/null and b/taiga/base/static/img/emojis/kr.png differ diff --git a/taiga/base/static/img/emojis/large_blue_circle.png b/taiga/base/static/img/emojis/large_blue_circle.png new file mode 100644 index 00000000..28518554 Binary files /dev/null and b/taiga/base/static/img/emojis/large_blue_circle.png differ diff --git a/taiga/base/static/img/emojis/large_blue_diamond.png b/taiga/base/static/img/emojis/large_blue_diamond.png new file mode 100644 index 00000000..86ced7ae Binary files /dev/null and b/taiga/base/static/img/emojis/large_blue_diamond.png differ diff --git a/taiga/base/static/img/emojis/large_orange_diamond.png b/taiga/base/static/img/emojis/large_orange_diamond.png new file mode 100644 index 00000000..9c509f8a Binary files /dev/null and b/taiga/base/static/img/emojis/large_orange_diamond.png differ diff --git a/taiga/base/static/img/emojis/last_quarter_moon.png b/taiga/base/static/img/emojis/last_quarter_moon.png new file mode 100644 index 00000000..368be3f0 Binary files /dev/null and b/taiga/base/static/img/emojis/last_quarter_moon.png differ diff --git a/taiga/base/static/img/emojis/last_quarter_moon_with_face.png b/taiga/base/static/img/emojis/last_quarter_moon_with_face.png new file mode 100644 index 00000000..5a890d72 Binary files /dev/null and b/taiga/base/static/img/emojis/last_quarter_moon_with_face.png differ diff --git a/taiga/base/static/img/emojis/laughing.png b/taiga/base/static/img/emojis/laughing.png new file mode 100644 index 00000000..5f0703b3 Binary files /dev/null and b/taiga/base/static/img/emojis/laughing.png differ diff --git a/taiga/base/static/img/emojis/leaves.png b/taiga/base/static/img/emojis/leaves.png new file mode 100644 index 00000000..6b94eee7 Binary files /dev/null and b/taiga/base/static/img/emojis/leaves.png differ diff --git a/taiga/base/static/img/emojis/ledger.png b/taiga/base/static/img/emojis/ledger.png new file mode 100644 index 00000000..006521de Binary files /dev/null and b/taiga/base/static/img/emojis/ledger.png differ diff --git a/taiga/base/static/img/emojis/left_luggage.png b/taiga/base/static/img/emojis/left_luggage.png new file mode 100644 index 00000000..f88e13a4 Binary files /dev/null and b/taiga/base/static/img/emojis/left_luggage.png differ diff --git a/taiga/base/static/img/emojis/left_right_arrow.png b/taiga/base/static/img/emojis/left_right_arrow.png new file mode 100644 index 00000000..e69095a3 Binary files /dev/null and b/taiga/base/static/img/emojis/left_right_arrow.png differ diff --git a/taiga/base/static/img/emojis/leftwards_arrow_with_hook.png b/taiga/base/static/img/emojis/leftwards_arrow_with_hook.png new file mode 100644 index 00000000..9df9981f Binary files /dev/null and b/taiga/base/static/img/emojis/leftwards_arrow_with_hook.png differ diff --git a/taiga/base/static/img/emojis/lemon.png b/taiga/base/static/img/emojis/lemon.png new file mode 100644 index 00000000..8b32e5fc Binary files /dev/null and b/taiga/base/static/img/emojis/lemon.png differ diff --git a/taiga/base/static/img/emojis/leo.png b/taiga/base/static/img/emojis/leo.png new file mode 100644 index 00000000..df943ee4 Binary files /dev/null and b/taiga/base/static/img/emojis/leo.png differ diff --git a/taiga/base/static/img/emojis/leopard.png b/taiga/base/static/img/emojis/leopard.png new file mode 100644 index 00000000..e5fd37b1 Binary files /dev/null and b/taiga/base/static/img/emojis/leopard.png differ diff --git a/taiga/base/static/img/emojis/libra.png b/taiga/base/static/img/emojis/libra.png new file mode 100644 index 00000000..1e31fcbb Binary files /dev/null and b/taiga/base/static/img/emojis/libra.png differ diff --git a/taiga/base/static/img/emojis/light_rail.png b/taiga/base/static/img/emojis/light_rail.png new file mode 100644 index 00000000..67bb5798 Binary files /dev/null and b/taiga/base/static/img/emojis/light_rail.png differ diff --git a/taiga/base/static/img/emojis/link.png b/taiga/base/static/img/emojis/link.png new file mode 100644 index 00000000..4ebf1ca5 Binary files /dev/null and b/taiga/base/static/img/emojis/link.png differ diff --git a/taiga/base/static/img/emojis/lips.png b/taiga/base/static/img/emojis/lips.png new file mode 100644 index 00000000..bbbdec69 Binary files /dev/null and b/taiga/base/static/img/emojis/lips.png differ diff --git a/taiga/base/static/img/emojis/lipstick.png b/taiga/base/static/img/emojis/lipstick.png new file mode 100644 index 00000000..6cd51937 Binary files /dev/null and b/taiga/base/static/img/emojis/lipstick.png differ diff --git a/taiga/base/static/img/emojis/lock.png b/taiga/base/static/img/emojis/lock.png new file mode 100644 index 00000000..1ab34274 Binary files /dev/null and b/taiga/base/static/img/emojis/lock.png differ diff --git a/taiga/base/static/img/emojis/lock_with_ink_pen.png b/taiga/base/static/img/emojis/lock_with_ink_pen.png new file mode 100644 index 00000000..b559b6dd Binary files /dev/null and b/taiga/base/static/img/emojis/lock_with_ink_pen.png differ diff --git a/taiga/base/static/img/emojis/lollipop.png b/taiga/base/static/img/emojis/lollipop.png new file mode 100644 index 00000000..c6b1f3b1 Binary files /dev/null and b/taiga/base/static/img/emojis/lollipop.png differ diff --git a/taiga/base/static/img/emojis/loop.png b/taiga/base/static/img/emojis/loop.png new file mode 100644 index 00000000..9c703423 Binary files /dev/null and b/taiga/base/static/img/emojis/loop.png differ diff --git a/taiga/base/static/img/emojis/loudspeaker.png b/taiga/base/static/img/emojis/loudspeaker.png new file mode 100644 index 00000000..54aa6b2b Binary files /dev/null and b/taiga/base/static/img/emojis/loudspeaker.png differ diff --git a/taiga/base/static/img/emojis/love_hotel.png b/taiga/base/static/img/emojis/love_hotel.png new file mode 100644 index 00000000..4bec1023 Binary files /dev/null and b/taiga/base/static/img/emojis/love_hotel.png differ diff --git a/taiga/base/static/img/emojis/love_letter.png b/taiga/base/static/img/emojis/love_letter.png new file mode 100644 index 00000000..b599a606 Binary files /dev/null and b/taiga/base/static/img/emojis/love_letter.png differ diff --git a/taiga/base/static/img/emojis/low_brightness.png b/taiga/base/static/img/emojis/low_brightness.png new file mode 100644 index 00000000..91dcc0db Binary files /dev/null and b/taiga/base/static/img/emojis/low_brightness.png differ diff --git a/taiga/base/static/img/emojis/m.png b/taiga/base/static/img/emojis/m.png new file mode 100644 index 00000000..2002b774 Binary files /dev/null and b/taiga/base/static/img/emojis/m.png differ diff --git a/taiga/base/static/img/emojis/mag.png b/taiga/base/static/img/emojis/mag.png new file mode 100644 index 00000000..ae981d66 Binary files /dev/null and b/taiga/base/static/img/emojis/mag.png differ diff --git a/taiga/base/static/img/emojis/mag_right.png b/taiga/base/static/img/emojis/mag_right.png new file mode 100644 index 00000000..bf8cf493 Binary files /dev/null and b/taiga/base/static/img/emojis/mag_right.png differ diff --git a/taiga/base/static/img/emojis/mahjong.png b/taiga/base/static/img/emojis/mahjong.png new file mode 100644 index 00000000..0fd6e6d6 Binary files /dev/null and b/taiga/base/static/img/emojis/mahjong.png differ diff --git a/taiga/base/static/img/emojis/mailbox.png b/taiga/base/static/img/emojis/mailbox.png new file mode 100644 index 00000000..5291564e Binary files /dev/null and b/taiga/base/static/img/emojis/mailbox.png differ diff --git a/taiga/base/static/img/emojis/mailbox_closed.png b/taiga/base/static/img/emojis/mailbox_closed.png new file mode 100644 index 00000000..d1b07255 Binary files /dev/null and b/taiga/base/static/img/emojis/mailbox_closed.png differ diff --git a/taiga/base/static/img/emojis/mailbox_with_mail.png b/taiga/base/static/img/emojis/mailbox_with_mail.png new file mode 100644 index 00000000..7cf01711 Binary files /dev/null and b/taiga/base/static/img/emojis/mailbox_with_mail.png differ diff --git a/taiga/base/static/img/emojis/mailbox_with_no_mail.png b/taiga/base/static/img/emojis/mailbox_with_no_mail.png new file mode 100644 index 00000000..b3d41b3c Binary files /dev/null and b/taiga/base/static/img/emojis/mailbox_with_no_mail.png differ diff --git a/taiga/base/static/img/emojis/man.png b/taiga/base/static/img/emojis/man.png new file mode 100644 index 00000000..3829211d Binary files /dev/null and b/taiga/base/static/img/emojis/man.png differ diff --git a/taiga/base/static/img/emojis/man_with_gua_pi_mao.png b/taiga/base/static/img/emojis/man_with_gua_pi_mao.png new file mode 100644 index 00000000..d59ca4dc Binary files /dev/null and b/taiga/base/static/img/emojis/man_with_gua_pi_mao.png differ diff --git a/taiga/base/static/img/emojis/man_with_turban.png b/taiga/base/static/img/emojis/man_with_turban.png new file mode 100644 index 00000000..96d01c63 Binary files /dev/null and b/taiga/base/static/img/emojis/man_with_turban.png differ diff --git a/taiga/base/static/img/emojis/mans_shoe.png b/taiga/base/static/img/emojis/mans_shoe.png new file mode 100644 index 00000000..31459aa9 Binary files /dev/null and b/taiga/base/static/img/emojis/mans_shoe.png differ diff --git a/taiga/base/static/img/emojis/maple_leaf.png b/taiga/base/static/img/emojis/maple_leaf.png new file mode 100644 index 00000000..48cc9b22 Binary files /dev/null and b/taiga/base/static/img/emojis/maple_leaf.png differ diff --git a/taiga/base/static/img/emojis/mask.png b/taiga/base/static/img/emojis/mask.png new file mode 100644 index 00000000..acc4c47c Binary files /dev/null and b/taiga/base/static/img/emojis/mask.png differ diff --git a/taiga/base/static/img/emojis/massage.png b/taiga/base/static/img/emojis/massage.png new file mode 100644 index 00000000..8445b726 Binary files /dev/null and b/taiga/base/static/img/emojis/massage.png differ diff --git a/taiga/base/static/img/emojis/meat_on_bone.png b/taiga/base/static/img/emojis/meat_on_bone.png new file mode 100644 index 00000000..689697cb Binary files /dev/null and b/taiga/base/static/img/emojis/meat_on_bone.png differ diff --git a/taiga/base/static/img/emojis/mega.png b/taiga/base/static/img/emojis/mega.png new file mode 100644 index 00000000..c41ef717 Binary files /dev/null and b/taiga/base/static/img/emojis/mega.png differ diff --git a/taiga/base/static/img/emojis/melon.png b/taiga/base/static/img/emojis/melon.png new file mode 100644 index 00000000..3dcce4ed Binary files /dev/null and b/taiga/base/static/img/emojis/melon.png differ diff --git a/taiga/base/static/img/emojis/memo.png b/taiga/base/static/img/emojis/memo.png new file mode 100644 index 00000000..e0e7b956 Binary files /dev/null and b/taiga/base/static/img/emojis/memo.png differ diff --git a/taiga/base/static/img/emojis/mens.png b/taiga/base/static/img/emojis/mens.png new file mode 100644 index 00000000..1ece8be8 Binary files /dev/null and b/taiga/base/static/img/emojis/mens.png differ diff --git a/taiga/base/static/img/emojis/metal.png b/taiga/base/static/img/emojis/metal.png new file mode 100644 index 00000000..bc27d0a0 Binary files /dev/null and b/taiga/base/static/img/emojis/metal.png differ diff --git a/taiga/base/static/img/emojis/metro.png b/taiga/base/static/img/emojis/metro.png new file mode 100644 index 00000000..095268c8 Binary files /dev/null and b/taiga/base/static/img/emojis/metro.png differ diff --git a/taiga/base/static/img/emojis/microphone.png b/taiga/base/static/img/emojis/microphone.png new file mode 100644 index 00000000..95518a17 Binary files /dev/null and b/taiga/base/static/img/emojis/microphone.png differ diff --git a/taiga/base/static/img/emojis/microscope.png b/taiga/base/static/img/emojis/microscope.png new file mode 100644 index 00000000..e2514a18 Binary files /dev/null and b/taiga/base/static/img/emojis/microscope.png differ diff --git a/taiga/base/static/img/emojis/milky_way.png b/taiga/base/static/img/emojis/milky_way.png new file mode 100644 index 00000000..7597c5f1 Binary files /dev/null and b/taiga/base/static/img/emojis/milky_way.png differ diff --git a/taiga/base/static/img/emojis/minibus.png b/taiga/base/static/img/emojis/minibus.png new file mode 100644 index 00000000..8c3b91c1 Binary files /dev/null and b/taiga/base/static/img/emojis/minibus.png differ diff --git a/taiga/base/static/img/emojis/minidisc.png b/taiga/base/static/img/emojis/minidisc.png new file mode 100644 index 00000000..fc885dbe Binary files /dev/null and b/taiga/base/static/img/emojis/minidisc.png differ diff --git a/taiga/base/static/img/emojis/mobile_phone_off.png b/taiga/base/static/img/emojis/mobile_phone_off.png new file mode 100644 index 00000000..d103b4a9 Binary files /dev/null and b/taiga/base/static/img/emojis/mobile_phone_off.png differ diff --git a/taiga/base/static/img/emojis/money_with_wings.png b/taiga/base/static/img/emojis/money_with_wings.png new file mode 100644 index 00000000..f3c286f2 Binary files /dev/null and b/taiga/base/static/img/emojis/money_with_wings.png differ diff --git a/taiga/base/static/img/emojis/moneybag.png b/taiga/base/static/img/emojis/moneybag.png new file mode 100644 index 00000000..8d6ceb88 Binary files /dev/null and b/taiga/base/static/img/emojis/moneybag.png differ diff --git a/taiga/base/static/img/emojis/monkey.png b/taiga/base/static/img/emojis/monkey.png new file mode 100644 index 00000000..6778857e Binary files /dev/null and b/taiga/base/static/img/emojis/monkey.png differ diff --git a/taiga/base/static/img/emojis/monkey_face.png b/taiga/base/static/img/emojis/monkey_face.png new file mode 100644 index 00000000..c6762613 Binary files /dev/null and b/taiga/base/static/img/emojis/monkey_face.png differ diff --git a/taiga/base/static/img/emojis/monorail.png b/taiga/base/static/img/emojis/monorail.png new file mode 100644 index 00000000..6fb2b483 Binary files /dev/null and b/taiga/base/static/img/emojis/monorail.png differ diff --git a/taiga/base/static/img/emojis/moon.png b/taiga/base/static/img/emojis/moon.png new file mode 100644 index 00000000..53abe6a4 Binary files /dev/null and b/taiga/base/static/img/emojis/moon.png differ diff --git a/taiga/base/static/img/emojis/mortar_board.png b/taiga/base/static/img/emojis/mortar_board.png new file mode 100644 index 00000000..4173c9ae Binary files /dev/null and b/taiga/base/static/img/emojis/mortar_board.png differ diff --git a/taiga/base/static/img/emojis/mount_fuji.png b/taiga/base/static/img/emojis/mount_fuji.png new file mode 100644 index 00000000..6b4004c5 Binary files /dev/null and b/taiga/base/static/img/emojis/mount_fuji.png differ diff --git a/taiga/base/static/img/emojis/mountain_bicyclist.png b/taiga/base/static/img/emojis/mountain_bicyclist.png new file mode 100644 index 00000000..9a212679 Binary files /dev/null and b/taiga/base/static/img/emojis/mountain_bicyclist.png differ diff --git a/taiga/base/static/img/emojis/mountain_cableway.png b/taiga/base/static/img/emojis/mountain_cableway.png new file mode 100644 index 00000000..947fcd85 Binary files /dev/null and b/taiga/base/static/img/emojis/mountain_cableway.png differ diff --git a/taiga/base/static/img/emojis/mountain_railway.png b/taiga/base/static/img/emojis/mountain_railway.png new file mode 100644 index 00000000..b252c0cc Binary files /dev/null and b/taiga/base/static/img/emojis/mountain_railway.png differ diff --git a/taiga/base/static/img/emojis/mouse.png b/taiga/base/static/img/emojis/mouse.png new file mode 100644 index 00000000..38cbc079 Binary files /dev/null and b/taiga/base/static/img/emojis/mouse.png differ diff --git a/taiga/base/static/img/emojis/mouse2.png b/taiga/base/static/img/emojis/mouse2.png new file mode 100644 index 00000000..45122ed2 Binary files /dev/null and b/taiga/base/static/img/emojis/mouse2.png differ diff --git a/taiga/base/static/img/emojis/movie_camera.png b/taiga/base/static/img/emojis/movie_camera.png new file mode 100644 index 00000000..bffa60d9 Binary files /dev/null and b/taiga/base/static/img/emojis/movie_camera.png differ diff --git a/taiga/base/static/img/emojis/moyai.png b/taiga/base/static/img/emojis/moyai.png new file mode 100644 index 00000000..e788b256 Binary files /dev/null and b/taiga/base/static/img/emojis/moyai.png differ diff --git a/taiga/base/static/img/emojis/muscle.png b/taiga/base/static/img/emojis/muscle.png new file mode 100644 index 00000000..884d289d Binary files /dev/null and b/taiga/base/static/img/emojis/muscle.png differ diff --git a/taiga/base/static/img/emojis/mushroom.png b/taiga/base/static/img/emojis/mushroom.png new file mode 100644 index 00000000..0bed51b2 Binary files /dev/null and b/taiga/base/static/img/emojis/mushroom.png differ diff --git a/taiga/base/static/img/emojis/musical_keyboard.png b/taiga/base/static/img/emojis/musical_keyboard.png new file mode 100644 index 00000000..aad745ad Binary files /dev/null and b/taiga/base/static/img/emojis/musical_keyboard.png differ diff --git a/taiga/base/static/img/emojis/musical_note.png b/taiga/base/static/img/emojis/musical_note.png new file mode 100644 index 00000000..a78737de Binary files /dev/null and b/taiga/base/static/img/emojis/musical_note.png differ diff --git a/taiga/base/static/img/emojis/musical_score.png b/taiga/base/static/img/emojis/musical_score.png new file mode 100644 index 00000000..082c2b2a Binary files /dev/null and b/taiga/base/static/img/emojis/musical_score.png differ diff --git a/taiga/base/static/img/emojis/mute.png b/taiga/base/static/img/emojis/mute.png new file mode 100644 index 00000000..5638596f Binary files /dev/null and b/taiga/base/static/img/emojis/mute.png differ diff --git a/taiga/base/static/img/emojis/nail_care.png b/taiga/base/static/img/emojis/nail_care.png new file mode 100644 index 00000000..2734aee7 Binary files /dev/null and b/taiga/base/static/img/emojis/nail_care.png differ diff --git a/taiga/base/static/img/emojis/name_badge.png b/taiga/base/static/img/emojis/name_badge.png new file mode 100644 index 00000000..ffa60459 Binary files /dev/null and b/taiga/base/static/img/emojis/name_badge.png differ diff --git a/taiga/base/static/img/emojis/neckbeard.png b/taiga/base/static/img/emojis/neckbeard.png new file mode 100644 index 00000000..b52ce29f Binary files /dev/null and b/taiga/base/static/img/emojis/neckbeard.png differ diff --git a/taiga/base/static/img/emojis/necktie.png b/taiga/base/static/img/emojis/necktie.png new file mode 100644 index 00000000..52cd5997 Binary files /dev/null and b/taiga/base/static/img/emojis/necktie.png differ diff --git a/taiga/base/static/img/emojis/negative_squared_cross_mark.png b/taiga/base/static/img/emojis/negative_squared_cross_mark.png new file mode 100644 index 00000000..3c2f7e46 Binary files /dev/null and b/taiga/base/static/img/emojis/negative_squared_cross_mark.png differ diff --git a/taiga/base/static/img/emojis/neutral_face.png b/taiga/base/static/img/emojis/neutral_face.png new file mode 100644 index 00000000..cad1039f Binary files /dev/null and b/taiga/base/static/img/emojis/neutral_face.png differ diff --git a/taiga/base/static/img/emojis/new.png b/taiga/base/static/img/emojis/new.png new file mode 100644 index 00000000..363a1758 Binary files /dev/null and b/taiga/base/static/img/emojis/new.png differ diff --git a/taiga/base/static/img/emojis/new_moon.png b/taiga/base/static/img/emojis/new_moon.png new file mode 100644 index 00000000..93859c36 Binary files /dev/null and b/taiga/base/static/img/emojis/new_moon.png differ diff --git a/taiga/base/static/img/emojis/new_moon_with_face.png b/taiga/base/static/img/emojis/new_moon_with_face.png new file mode 100644 index 00000000..3184116d Binary files /dev/null and b/taiga/base/static/img/emojis/new_moon_with_face.png differ diff --git a/taiga/base/static/img/emojis/newspaper.png b/taiga/base/static/img/emojis/newspaper.png new file mode 100644 index 00000000..b181864e Binary files /dev/null and b/taiga/base/static/img/emojis/newspaper.png differ diff --git a/taiga/base/static/img/emojis/ng.png b/taiga/base/static/img/emojis/ng.png new file mode 100644 index 00000000..b1ed5ab0 Binary files /dev/null and b/taiga/base/static/img/emojis/ng.png differ diff --git a/taiga/base/static/img/emojis/nine.png b/taiga/base/static/img/emojis/nine.png new file mode 100644 index 00000000..c7de1bc2 Binary files /dev/null and b/taiga/base/static/img/emojis/nine.png differ diff --git a/taiga/base/static/img/emojis/no_bell.png b/taiga/base/static/img/emojis/no_bell.png new file mode 100644 index 00000000..f8dec782 Binary files /dev/null and b/taiga/base/static/img/emojis/no_bell.png differ diff --git a/taiga/base/static/img/emojis/no_bicycles.png b/taiga/base/static/img/emojis/no_bicycles.png new file mode 100644 index 00000000..f5d714f8 Binary files /dev/null and b/taiga/base/static/img/emojis/no_bicycles.png differ diff --git a/taiga/base/static/img/emojis/no_entry.png b/taiga/base/static/img/emojis/no_entry.png new file mode 100644 index 00000000..62dd70f0 Binary files /dev/null and b/taiga/base/static/img/emojis/no_entry.png differ diff --git a/taiga/base/static/img/emojis/no_entry_sign.png b/taiga/base/static/img/emojis/no_entry_sign.png new file mode 100644 index 00000000..f2e7374b Binary files /dev/null and b/taiga/base/static/img/emojis/no_entry_sign.png differ diff --git a/taiga/base/static/img/emojis/no_good.png b/taiga/base/static/img/emojis/no_good.png new file mode 100644 index 00000000..6f0e472a Binary files /dev/null and b/taiga/base/static/img/emojis/no_good.png differ diff --git a/taiga/base/static/img/emojis/no_mobile_phones.png b/taiga/base/static/img/emojis/no_mobile_phones.png new file mode 100644 index 00000000..353e6269 Binary files /dev/null and b/taiga/base/static/img/emojis/no_mobile_phones.png differ diff --git a/taiga/base/static/img/emojis/no_mouth.png b/taiga/base/static/img/emojis/no_mouth.png new file mode 100644 index 00000000..27897a98 Binary files /dev/null and b/taiga/base/static/img/emojis/no_mouth.png differ diff --git a/taiga/base/static/img/emojis/no_pedestrians.png b/taiga/base/static/img/emojis/no_pedestrians.png new file mode 100644 index 00000000..feca9fe8 Binary files /dev/null and b/taiga/base/static/img/emojis/no_pedestrians.png differ diff --git a/taiga/base/static/img/emojis/no_smoking.png b/taiga/base/static/img/emojis/no_smoking.png new file mode 100644 index 00000000..7d0d13ea Binary files /dev/null and b/taiga/base/static/img/emojis/no_smoking.png differ diff --git a/taiga/base/static/img/emojis/non-potable_water.png b/taiga/base/static/img/emojis/non-potable_water.png new file mode 100644 index 00000000..430fa60c Binary files /dev/null and b/taiga/base/static/img/emojis/non-potable_water.png differ diff --git a/taiga/base/static/img/emojis/nose.png b/taiga/base/static/img/emojis/nose.png new file mode 100644 index 00000000..567ff49a Binary files /dev/null and b/taiga/base/static/img/emojis/nose.png differ diff --git a/taiga/base/static/img/emojis/notebook.png b/taiga/base/static/img/emojis/notebook.png new file mode 100644 index 00000000..554b4760 Binary files /dev/null and b/taiga/base/static/img/emojis/notebook.png differ diff --git a/taiga/base/static/img/emojis/notebook_with_decorative_cover.png b/taiga/base/static/img/emojis/notebook_with_decorative_cover.png new file mode 100644 index 00000000..7c95dae4 Binary files /dev/null and b/taiga/base/static/img/emojis/notebook_with_decorative_cover.png differ diff --git a/taiga/base/static/img/emojis/notes.png b/taiga/base/static/img/emojis/notes.png new file mode 100644 index 00000000..5b072615 Binary files /dev/null and b/taiga/base/static/img/emojis/notes.png differ diff --git a/taiga/base/static/img/emojis/nut_and_bolt.png b/taiga/base/static/img/emojis/nut_and_bolt.png new file mode 100644 index 00000000..dd0f75a1 Binary files /dev/null and b/taiga/base/static/img/emojis/nut_and_bolt.png differ diff --git a/taiga/base/static/img/emojis/o.png b/taiga/base/static/img/emojis/o.png new file mode 100644 index 00000000..2814dd73 Binary files /dev/null and b/taiga/base/static/img/emojis/o.png differ diff --git a/taiga/base/static/img/emojis/o2.png b/taiga/base/static/img/emojis/o2.png new file mode 100644 index 00000000..6377cb13 Binary files /dev/null and b/taiga/base/static/img/emojis/o2.png differ diff --git a/taiga/base/static/img/emojis/ocean.png b/taiga/base/static/img/emojis/ocean.png new file mode 100644 index 00000000..7b095332 Binary files /dev/null and b/taiga/base/static/img/emojis/ocean.png differ diff --git a/taiga/base/static/img/emojis/octocat.png b/taiga/base/static/img/emojis/octocat.png new file mode 100644 index 00000000..bf699257 Binary files /dev/null and b/taiga/base/static/img/emojis/octocat.png differ diff --git a/taiga/base/static/img/emojis/octopus.png b/taiga/base/static/img/emojis/octopus.png new file mode 100644 index 00000000..1422bf2a Binary files /dev/null and b/taiga/base/static/img/emojis/octopus.png differ diff --git a/taiga/base/static/img/emojis/oden.png b/taiga/base/static/img/emojis/oden.png new file mode 100644 index 00000000..49f1200c Binary files /dev/null and b/taiga/base/static/img/emojis/oden.png differ diff --git a/taiga/base/static/img/emojis/office.png b/taiga/base/static/img/emojis/office.png new file mode 100644 index 00000000..897cbcc4 Binary files /dev/null and b/taiga/base/static/img/emojis/office.png differ diff --git a/taiga/base/static/img/emojis/ok.png b/taiga/base/static/img/emojis/ok.png new file mode 100644 index 00000000..e53905ad Binary files /dev/null and b/taiga/base/static/img/emojis/ok.png differ diff --git a/taiga/base/static/img/emojis/ok_hand.png b/taiga/base/static/img/emojis/ok_hand.png new file mode 100644 index 00000000..aaa5a873 Binary files /dev/null and b/taiga/base/static/img/emojis/ok_hand.png differ diff --git a/taiga/base/static/img/emojis/ok_woman.png b/taiga/base/static/img/emojis/ok_woman.png new file mode 100644 index 00000000..83a61949 Binary files /dev/null and b/taiga/base/static/img/emojis/ok_woman.png differ diff --git a/taiga/base/static/img/emojis/older_man.png b/taiga/base/static/img/emojis/older_man.png new file mode 100644 index 00000000..723ec0fb Binary files /dev/null and b/taiga/base/static/img/emojis/older_man.png differ diff --git a/taiga/base/static/img/emojis/older_woman.png b/taiga/base/static/img/emojis/older_woman.png new file mode 100644 index 00000000..379069f0 Binary files /dev/null and b/taiga/base/static/img/emojis/older_woman.png differ diff --git a/taiga/base/static/img/emojis/on.png b/taiga/base/static/img/emojis/on.png new file mode 100644 index 00000000..667baba5 Binary files /dev/null and b/taiga/base/static/img/emojis/on.png differ diff --git a/taiga/base/static/img/emojis/oncoming_automobile.png b/taiga/base/static/img/emojis/oncoming_automobile.png new file mode 100644 index 00000000..9a47ada5 Binary files /dev/null and b/taiga/base/static/img/emojis/oncoming_automobile.png differ diff --git a/taiga/base/static/img/emojis/oncoming_bus.png b/taiga/base/static/img/emojis/oncoming_bus.png new file mode 100644 index 00000000..a0be27a7 Binary files /dev/null and b/taiga/base/static/img/emojis/oncoming_bus.png differ diff --git a/taiga/base/static/img/emojis/oncoming_police_car.png b/taiga/base/static/img/emojis/oncoming_police_car.png new file mode 100644 index 00000000..9e322b4c Binary files /dev/null and b/taiga/base/static/img/emojis/oncoming_police_car.png differ diff --git a/taiga/base/static/img/emojis/oncoming_taxi.png b/taiga/base/static/img/emojis/oncoming_taxi.png new file mode 100644 index 00000000..3b2fe37c Binary files /dev/null and b/taiga/base/static/img/emojis/oncoming_taxi.png differ diff --git a/taiga/base/static/img/emojis/one.png b/taiga/base/static/img/emojis/one.png new file mode 100644 index 00000000..b95c8fec Binary files /dev/null and b/taiga/base/static/img/emojis/one.png differ diff --git a/taiga/base/static/img/emojis/open_file_folder.png b/taiga/base/static/img/emojis/open_file_folder.png new file mode 100644 index 00000000..efc3943f Binary files /dev/null and b/taiga/base/static/img/emojis/open_file_folder.png differ diff --git a/taiga/base/static/img/emojis/open_hands.png b/taiga/base/static/img/emojis/open_hands.png new file mode 100644 index 00000000..3a99a3c8 Binary files /dev/null and b/taiga/base/static/img/emojis/open_hands.png differ diff --git a/taiga/base/static/img/emojis/open_mouth.png b/taiga/base/static/img/emojis/open_mouth.png new file mode 100644 index 00000000..203d4668 Binary files /dev/null and b/taiga/base/static/img/emojis/open_mouth.png differ diff --git a/taiga/base/static/img/emojis/ophiuchus.png b/taiga/base/static/img/emojis/ophiuchus.png new file mode 100644 index 00000000..10e6372a Binary files /dev/null and b/taiga/base/static/img/emojis/ophiuchus.png differ diff --git a/taiga/base/static/img/emojis/orange_book.png b/taiga/base/static/img/emojis/orange_book.png new file mode 100644 index 00000000..18fa5f83 Binary files /dev/null and b/taiga/base/static/img/emojis/orange_book.png differ diff --git a/taiga/base/static/img/emojis/outbox_tray.png b/taiga/base/static/img/emojis/outbox_tray.png new file mode 100644 index 00000000..50e7788f Binary files /dev/null and b/taiga/base/static/img/emojis/outbox_tray.png differ diff --git a/taiga/base/static/img/emojis/ox.png b/taiga/base/static/img/emojis/ox.png new file mode 100644 index 00000000..901276d8 Binary files /dev/null and b/taiga/base/static/img/emojis/ox.png differ diff --git a/taiga/base/static/img/emojis/page_facing_up.png b/taiga/base/static/img/emojis/page_facing_up.png new file mode 100644 index 00000000..87067325 Binary files /dev/null and b/taiga/base/static/img/emojis/page_facing_up.png differ diff --git a/taiga/base/static/img/emojis/page_with_curl.png b/taiga/base/static/img/emojis/page_with_curl.png new file mode 100644 index 00000000..9c78559c Binary files /dev/null and b/taiga/base/static/img/emojis/page_with_curl.png differ diff --git a/taiga/base/static/img/emojis/pager.png b/taiga/base/static/img/emojis/pager.png new file mode 100644 index 00000000..514e06fe Binary files /dev/null and b/taiga/base/static/img/emojis/pager.png differ diff --git a/taiga/base/static/img/emojis/palm_tree.png b/taiga/base/static/img/emojis/palm_tree.png new file mode 100644 index 00000000..b0c6728c Binary files /dev/null and b/taiga/base/static/img/emojis/palm_tree.png differ diff --git a/taiga/base/static/img/emojis/panda_face.png b/taiga/base/static/img/emojis/panda_face.png new file mode 100644 index 00000000..f8e350af Binary files /dev/null and b/taiga/base/static/img/emojis/panda_face.png differ diff --git a/taiga/base/static/img/emojis/paperclip.png b/taiga/base/static/img/emojis/paperclip.png new file mode 100644 index 00000000..c58f7879 Binary files /dev/null and b/taiga/base/static/img/emojis/paperclip.png differ diff --git a/taiga/base/static/img/emojis/parking.png b/taiga/base/static/img/emojis/parking.png new file mode 100644 index 00000000..7f5244c8 Binary files /dev/null and b/taiga/base/static/img/emojis/parking.png differ diff --git a/taiga/base/static/img/emojis/part_alternation_mark.png b/taiga/base/static/img/emojis/part_alternation_mark.png new file mode 100644 index 00000000..51ebc42a Binary files /dev/null and b/taiga/base/static/img/emojis/part_alternation_mark.png differ diff --git a/taiga/base/static/img/emojis/partly_sunny.png b/taiga/base/static/img/emojis/partly_sunny.png new file mode 100644 index 00000000..f64b8619 Binary files /dev/null and b/taiga/base/static/img/emojis/partly_sunny.png differ diff --git a/taiga/base/static/img/emojis/passport_control.png b/taiga/base/static/img/emojis/passport_control.png new file mode 100644 index 00000000..be212c09 Binary files /dev/null and b/taiga/base/static/img/emojis/passport_control.png differ diff --git a/taiga/base/static/img/emojis/paw_prints.png b/taiga/base/static/img/emojis/paw_prints.png new file mode 100644 index 00000000..bbefe6b0 Binary files /dev/null and b/taiga/base/static/img/emojis/paw_prints.png differ diff --git a/taiga/base/static/img/emojis/peach.png b/taiga/base/static/img/emojis/peach.png new file mode 100644 index 00000000..b38ffa12 Binary files /dev/null and b/taiga/base/static/img/emojis/peach.png differ diff --git a/taiga/base/static/img/emojis/pear.png b/taiga/base/static/img/emojis/pear.png new file mode 100644 index 00000000..b4bda473 Binary files /dev/null and b/taiga/base/static/img/emojis/pear.png differ diff --git a/taiga/base/static/img/emojis/pencil.png b/taiga/base/static/img/emojis/pencil.png new file mode 100644 index 00000000..e0e7b956 Binary files /dev/null and b/taiga/base/static/img/emojis/pencil.png differ diff --git a/taiga/base/static/img/emojis/pencil2.png b/taiga/base/static/img/emojis/pencil2.png new file mode 100644 index 00000000..15f056c1 Binary files /dev/null and b/taiga/base/static/img/emojis/pencil2.png differ diff --git a/taiga/base/static/img/emojis/penguin.png b/taiga/base/static/img/emojis/penguin.png new file mode 100644 index 00000000..26924685 Binary files /dev/null and b/taiga/base/static/img/emojis/penguin.png differ diff --git a/taiga/base/static/img/emojis/pensive.png b/taiga/base/static/img/emojis/pensive.png new file mode 100644 index 00000000..91834a9e Binary files /dev/null and b/taiga/base/static/img/emojis/pensive.png differ diff --git a/taiga/base/static/img/emojis/performing_arts.png b/taiga/base/static/img/emojis/performing_arts.png new file mode 100644 index 00000000..79b62aba Binary files /dev/null and b/taiga/base/static/img/emojis/performing_arts.png differ diff --git a/taiga/base/static/img/emojis/persevere.png b/taiga/base/static/img/emojis/persevere.png new file mode 100644 index 00000000..e6546a5e Binary files /dev/null and b/taiga/base/static/img/emojis/persevere.png differ diff --git a/taiga/base/static/img/emojis/person_frowning.png b/taiga/base/static/img/emojis/person_frowning.png new file mode 100644 index 00000000..0147f35a Binary files /dev/null and b/taiga/base/static/img/emojis/person_frowning.png differ diff --git a/taiga/base/static/img/emojis/person_with_blond_hair.png b/taiga/base/static/img/emojis/person_with_blond_hair.png new file mode 100644 index 00000000..6a39504d Binary files /dev/null and b/taiga/base/static/img/emojis/person_with_blond_hair.png differ diff --git a/taiga/base/static/img/emojis/person_with_pouting_face.png b/taiga/base/static/img/emojis/person_with_pouting_face.png new file mode 100644 index 00000000..2f5dc2ea Binary files /dev/null and b/taiga/base/static/img/emojis/person_with_pouting_face.png differ diff --git a/taiga/base/static/img/emojis/phone.png b/taiga/base/static/img/emojis/phone.png new file mode 100644 index 00000000..ce0bc5df Binary files /dev/null and b/taiga/base/static/img/emojis/phone.png differ diff --git a/taiga/base/static/img/emojis/pig.png b/taiga/base/static/img/emojis/pig.png new file mode 100644 index 00000000..1170a54e Binary files /dev/null and b/taiga/base/static/img/emojis/pig.png differ diff --git a/taiga/base/static/img/emojis/pig2.png b/taiga/base/static/img/emojis/pig2.png new file mode 100644 index 00000000..d041aaf4 Binary files /dev/null and b/taiga/base/static/img/emojis/pig2.png differ diff --git a/taiga/base/static/img/emojis/pig_nose.png b/taiga/base/static/img/emojis/pig_nose.png new file mode 100644 index 00000000..6b1a3ed9 Binary files /dev/null and b/taiga/base/static/img/emojis/pig_nose.png differ diff --git a/taiga/base/static/img/emojis/pill.png b/taiga/base/static/img/emojis/pill.png new file mode 100644 index 00000000..8bb7d6af Binary files /dev/null and b/taiga/base/static/img/emojis/pill.png differ diff --git a/taiga/base/static/img/emojis/pineapple.png b/taiga/base/static/img/emojis/pineapple.png new file mode 100644 index 00000000..23b8790b Binary files /dev/null and b/taiga/base/static/img/emojis/pineapple.png differ diff --git a/taiga/base/static/img/emojis/pisces.png b/taiga/base/static/img/emojis/pisces.png new file mode 100644 index 00000000..994faa24 Binary files /dev/null and b/taiga/base/static/img/emojis/pisces.png differ diff --git a/taiga/base/static/img/emojis/pizza.png b/taiga/base/static/img/emojis/pizza.png new file mode 100644 index 00000000..7748847f Binary files /dev/null and b/taiga/base/static/img/emojis/pizza.png differ diff --git a/taiga/base/static/img/emojis/plus1.png b/taiga/base/static/img/emojis/plus1.png new file mode 100644 index 00000000..be57e612 Binary files /dev/null and b/taiga/base/static/img/emojis/plus1.png differ diff --git a/taiga/base/static/img/emojis/point_down.png b/taiga/base/static/img/emojis/point_down.png new file mode 100644 index 00000000..2cdab2c3 Binary files /dev/null and b/taiga/base/static/img/emojis/point_down.png differ diff --git a/taiga/base/static/img/emojis/point_left.png b/taiga/base/static/img/emojis/point_left.png new file mode 100644 index 00000000..31e10d21 Binary files /dev/null and b/taiga/base/static/img/emojis/point_left.png differ diff --git a/taiga/base/static/img/emojis/point_right.png b/taiga/base/static/img/emojis/point_right.png new file mode 100644 index 00000000..702ca9f7 Binary files /dev/null and b/taiga/base/static/img/emojis/point_right.png differ diff --git a/taiga/base/static/img/emojis/point_up.png b/taiga/base/static/img/emojis/point_up.png new file mode 100644 index 00000000..cae59446 Binary files /dev/null and b/taiga/base/static/img/emojis/point_up.png differ diff --git a/taiga/base/static/img/emojis/point_up_2.png b/taiga/base/static/img/emojis/point_up_2.png new file mode 100644 index 00000000..91ad1883 Binary files /dev/null and b/taiga/base/static/img/emojis/point_up_2.png differ diff --git a/taiga/base/static/img/emojis/police_car.png b/taiga/base/static/img/emojis/police_car.png new file mode 100644 index 00000000..120f17e3 Binary files /dev/null and b/taiga/base/static/img/emojis/police_car.png differ diff --git a/taiga/base/static/img/emojis/poodle.png b/taiga/base/static/img/emojis/poodle.png new file mode 100644 index 00000000..334812dd Binary files /dev/null and b/taiga/base/static/img/emojis/poodle.png differ diff --git a/taiga/base/static/img/emojis/poop.png b/taiga/base/static/img/emojis/poop.png new file mode 100644 index 00000000..cbd8d185 Binary files /dev/null and b/taiga/base/static/img/emojis/poop.png differ diff --git a/taiga/base/static/img/emojis/post_office.png b/taiga/base/static/img/emojis/post_office.png new file mode 100644 index 00000000..504b4c6d Binary files /dev/null and b/taiga/base/static/img/emojis/post_office.png differ diff --git a/taiga/base/static/img/emojis/postal_horn.png b/taiga/base/static/img/emojis/postal_horn.png new file mode 100644 index 00000000..75f64cd5 Binary files /dev/null and b/taiga/base/static/img/emojis/postal_horn.png differ diff --git a/taiga/base/static/img/emojis/postbox.png b/taiga/base/static/img/emojis/postbox.png new file mode 100644 index 00000000..44e441c1 Binary files /dev/null and b/taiga/base/static/img/emojis/postbox.png differ diff --git a/taiga/base/static/img/emojis/potable_water.png b/taiga/base/static/img/emojis/potable_water.png new file mode 100644 index 00000000..5ab2446b Binary files /dev/null and b/taiga/base/static/img/emojis/potable_water.png differ diff --git a/taiga/base/static/img/emojis/pouch.png b/taiga/base/static/img/emojis/pouch.png new file mode 100644 index 00000000..9a172784 Binary files /dev/null and b/taiga/base/static/img/emojis/pouch.png differ diff --git a/taiga/base/static/img/emojis/poultry_leg.png b/taiga/base/static/img/emojis/poultry_leg.png new file mode 100644 index 00000000..912b2e36 Binary files /dev/null and b/taiga/base/static/img/emojis/poultry_leg.png differ diff --git a/taiga/base/static/img/emojis/pound.png b/taiga/base/static/img/emojis/pound.png new file mode 100644 index 00000000..0c9a6133 Binary files /dev/null and b/taiga/base/static/img/emojis/pound.png differ diff --git a/taiga/base/static/img/emojis/pouting_cat.png b/taiga/base/static/img/emojis/pouting_cat.png new file mode 100644 index 00000000..b595de7b Binary files /dev/null and b/taiga/base/static/img/emojis/pouting_cat.png differ diff --git a/taiga/base/static/img/emojis/pray.png b/taiga/base/static/img/emojis/pray.png new file mode 100644 index 00000000..c6fb57f8 Binary files /dev/null and b/taiga/base/static/img/emojis/pray.png differ diff --git a/taiga/base/static/img/emojis/princess.png b/taiga/base/static/img/emojis/princess.png new file mode 100644 index 00000000..6ffb8005 Binary files /dev/null and b/taiga/base/static/img/emojis/princess.png differ diff --git a/taiga/base/static/img/emojis/punch.png b/taiga/base/static/img/emojis/punch.png new file mode 100644 index 00000000..f817ca3f Binary files /dev/null and b/taiga/base/static/img/emojis/punch.png differ diff --git a/taiga/base/static/img/emojis/purple_heart.png b/taiga/base/static/img/emojis/purple_heart.png new file mode 100644 index 00000000..b146cb89 Binary files /dev/null and b/taiga/base/static/img/emojis/purple_heart.png differ diff --git a/taiga/base/static/img/emojis/purse.png b/taiga/base/static/img/emojis/purse.png new file mode 100644 index 00000000..28f68779 Binary files /dev/null and b/taiga/base/static/img/emojis/purse.png differ diff --git a/taiga/base/static/img/emojis/pushpin.png b/taiga/base/static/img/emojis/pushpin.png new file mode 100644 index 00000000..68b05b07 Binary files /dev/null and b/taiga/base/static/img/emojis/pushpin.png differ diff --git a/taiga/base/static/img/emojis/put_litter_in_its_place.png b/taiga/base/static/img/emojis/put_litter_in_its_place.png new file mode 100644 index 00000000..bafb8fb4 Binary files /dev/null and b/taiga/base/static/img/emojis/put_litter_in_its_place.png differ diff --git a/taiga/base/static/img/emojis/question.png b/taiga/base/static/img/emojis/question.png new file mode 100644 index 00000000..eeaa3026 Binary files /dev/null and b/taiga/base/static/img/emojis/question.png differ diff --git a/taiga/base/static/img/emojis/rabbit.png b/taiga/base/static/img/emojis/rabbit.png new file mode 100644 index 00000000..e85cd6cd Binary files /dev/null and b/taiga/base/static/img/emojis/rabbit.png differ diff --git a/taiga/base/static/img/emojis/rabbit2.png b/taiga/base/static/img/emojis/rabbit2.png new file mode 100644 index 00000000..69cf71ea Binary files /dev/null and b/taiga/base/static/img/emojis/rabbit2.png differ diff --git a/taiga/base/static/img/emojis/racehorse.png b/taiga/base/static/img/emojis/racehorse.png new file mode 100644 index 00000000..0e773c99 Binary files /dev/null and b/taiga/base/static/img/emojis/racehorse.png differ diff --git a/taiga/base/static/img/emojis/radio.png b/taiga/base/static/img/emojis/radio.png new file mode 100644 index 00000000..65c5b881 Binary files /dev/null and b/taiga/base/static/img/emojis/radio.png differ diff --git a/taiga/base/static/img/emojis/radio_button.png b/taiga/base/static/img/emojis/radio_button.png new file mode 100644 index 00000000..379b0bc5 Binary files /dev/null and b/taiga/base/static/img/emojis/radio_button.png differ diff --git a/taiga/base/static/img/emojis/rage.png b/taiga/base/static/img/emojis/rage.png new file mode 100644 index 00000000..3d6468aa Binary files /dev/null and b/taiga/base/static/img/emojis/rage.png differ diff --git a/taiga/base/static/img/emojis/rage1.png b/taiga/base/static/img/emojis/rage1.png new file mode 100644 index 00000000..9ad4d9ee Binary files /dev/null and b/taiga/base/static/img/emojis/rage1.png differ diff --git a/taiga/base/static/img/emojis/rage2.png b/taiga/base/static/img/emojis/rage2.png new file mode 100644 index 00000000..4d8adb2b Binary files /dev/null and b/taiga/base/static/img/emojis/rage2.png differ diff --git a/taiga/base/static/img/emojis/rage3.png b/taiga/base/static/img/emojis/rage3.png new file mode 100644 index 00000000..2061f992 Binary files /dev/null and b/taiga/base/static/img/emojis/rage3.png differ diff --git a/taiga/base/static/img/emojis/rage4.png b/taiga/base/static/img/emojis/rage4.png new file mode 100644 index 00000000..769816f2 Binary files /dev/null and b/taiga/base/static/img/emojis/rage4.png differ diff --git a/taiga/base/static/img/emojis/railway_car.png b/taiga/base/static/img/emojis/railway_car.png new file mode 100644 index 00000000..48a1c44e Binary files /dev/null and b/taiga/base/static/img/emojis/railway_car.png differ diff --git a/taiga/base/static/img/emojis/rainbow.png b/taiga/base/static/img/emojis/rainbow.png new file mode 100644 index 00000000..21cb89c8 Binary files /dev/null and b/taiga/base/static/img/emojis/rainbow.png differ diff --git a/taiga/base/static/img/emojis/raised_hand.png b/taiga/base/static/img/emojis/raised_hand.png new file mode 100644 index 00000000..7537b375 Binary files /dev/null and b/taiga/base/static/img/emojis/raised_hand.png differ diff --git a/taiga/base/static/img/emojis/raised_hands.png b/taiga/base/static/img/emojis/raised_hands.png new file mode 100644 index 00000000..47843f0b Binary files /dev/null and b/taiga/base/static/img/emojis/raised_hands.png differ diff --git a/taiga/base/static/img/emojis/raising_hand.png b/taiga/base/static/img/emojis/raising_hand.png new file mode 100644 index 00000000..bd35abc5 Binary files /dev/null and b/taiga/base/static/img/emojis/raising_hand.png differ diff --git a/taiga/base/static/img/emojis/ram.png b/taiga/base/static/img/emojis/ram.png new file mode 100644 index 00000000..e6ba49f0 Binary files /dev/null and b/taiga/base/static/img/emojis/ram.png differ diff --git a/taiga/base/static/img/emojis/ramen.png b/taiga/base/static/img/emojis/ramen.png new file mode 100644 index 00000000..03a81fa8 Binary files /dev/null and b/taiga/base/static/img/emojis/ramen.png differ diff --git a/taiga/base/static/img/emojis/rat.png b/taiga/base/static/img/emojis/rat.png new file mode 100644 index 00000000..30905b34 Binary files /dev/null and b/taiga/base/static/img/emojis/rat.png differ diff --git a/taiga/base/static/img/emojis/recycle.png b/taiga/base/static/img/emojis/recycle.png new file mode 100644 index 00000000..4f592910 Binary files /dev/null and b/taiga/base/static/img/emojis/recycle.png differ diff --git a/taiga/base/static/img/emojis/red_car.png b/taiga/base/static/img/emojis/red_car.png new file mode 100644 index 00000000..31393f7f Binary files /dev/null and b/taiga/base/static/img/emojis/red_car.png differ diff --git a/taiga/base/static/img/emojis/red_circle.png b/taiga/base/static/img/emojis/red_circle.png new file mode 100644 index 00000000..cafcb6ea Binary files /dev/null and b/taiga/base/static/img/emojis/red_circle.png differ diff --git a/taiga/base/static/img/emojis/registered.png b/taiga/base/static/img/emojis/registered.png new file mode 100644 index 00000000..8eaa0bd8 Binary files /dev/null and b/taiga/base/static/img/emojis/registered.png differ diff --git a/taiga/base/static/img/emojis/relaxed.png b/taiga/base/static/img/emojis/relaxed.png new file mode 100644 index 00000000..c69f82dc Binary files /dev/null and b/taiga/base/static/img/emojis/relaxed.png differ diff --git a/taiga/base/static/img/emojis/relieved.png b/taiga/base/static/img/emojis/relieved.png new file mode 100644 index 00000000..cfe42c53 Binary files /dev/null and b/taiga/base/static/img/emojis/relieved.png differ diff --git a/taiga/base/static/img/emojis/repeat.png b/taiga/base/static/img/emojis/repeat.png new file mode 100644 index 00000000..e20fdaa8 Binary files /dev/null and b/taiga/base/static/img/emojis/repeat.png differ diff --git a/taiga/base/static/img/emojis/repeat_one.png b/taiga/base/static/img/emojis/repeat_one.png new file mode 100644 index 00000000..e192e0e8 Binary files /dev/null and b/taiga/base/static/img/emojis/repeat_one.png differ diff --git a/taiga/base/static/img/emojis/restroom.png b/taiga/base/static/img/emojis/restroom.png new file mode 100644 index 00000000..74a0335d Binary files /dev/null and b/taiga/base/static/img/emojis/restroom.png differ diff --git a/taiga/base/static/img/emojis/revolving_hearts.png b/taiga/base/static/img/emojis/revolving_hearts.png new file mode 100644 index 00000000..82506b5a Binary files /dev/null and b/taiga/base/static/img/emojis/revolving_hearts.png differ diff --git a/taiga/base/static/img/emojis/rewind.png b/taiga/base/static/img/emojis/rewind.png new file mode 100644 index 00000000..a699e83b Binary files /dev/null and b/taiga/base/static/img/emojis/rewind.png differ diff --git a/taiga/base/static/img/emojis/ribbon.png b/taiga/base/static/img/emojis/ribbon.png new file mode 100644 index 00000000..bf4e85cb Binary files /dev/null and b/taiga/base/static/img/emojis/ribbon.png differ diff --git a/taiga/base/static/img/emojis/rice.png b/taiga/base/static/img/emojis/rice.png new file mode 100644 index 00000000..4c941d87 Binary files /dev/null and b/taiga/base/static/img/emojis/rice.png differ diff --git a/taiga/base/static/img/emojis/rice_ball.png b/taiga/base/static/img/emojis/rice_ball.png new file mode 100644 index 00000000..923ecf54 Binary files /dev/null and b/taiga/base/static/img/emojis/rice_ball.png differ diff --git a/taiga/base/static/img/emojis/rice_cracker.png b/taiga/base/static/img/emojis/rice_cracker.png new file mode 100644 index 00000000..cbb5ce7f Binary files /dev/null and b/taiga/base/static/img/emojis/rice_cracker.png differ diff --git a/taiga/base/static/img/emojis/rice_scene.png b/taiga/base/static/img/emojis/rice_scene.png new file mode 100644 index 00000000..edb7b3ab Binary files /dev/null and b/taiga/base/static/img/emojis/rice_scene.png differ diff --git a/taiga/base/static/img/emojis/ring.png b/taiga/base/static/img/emojis/ring.png new file mode 100644 index 00000000..5e0daaa2 Binary files /dev/null and b/taiga/base/static/img/emojis/ring.png differ diff --git a/taiga/base/static/img/emojis/rocket.png b/taiga/base/static/img/emojis/rocket.png new file mode 100644 index 00000000..5bfdfa3c Binary files /dev/null and b/taiga/base/static/img/emojis/rocket.png differ diff --git a/taiga/base/static/img/emojis/roller_coaster.png b/taiga/base/static/img/emojis/roller_coaster.png new file mode 100644 index 00000000..9ad1f8d9 Binary files /dev/null and b/taiga/base/static/img/emojis/roller_coaster.png differ diff --git a/taiga/base/static/img/emojis/rooster.png b/taiga/base/static/img/emojis/rooster.png new file mode 100644 index 00000000..f57aaa55 Binary files /dev/null and b/taiga/base/static/img/emojis/rooster.png differ diff --git a/taiga/base/static/img/emojis/rose.png b/taiga/base/static/img/emojis/rose.png new file mode 100644 index 00000000..2c9eeb00 Binary files /dev/null and b/taiga/base/static/img/emojis/rose.png differ diff --git a/taiga/base/static/img/emojis/rotating_light.png b/taiga/base/static/img/emojis/rotating_light.png new file mode 100644 index 00000000..2615880f Binary files /dev/null and b/taiga/base/static/img/emojis/rotating_light.png differ diff --git a/taiga/base/static/img/emojis/round_pushpin.png b/taiga/base/static/img/emojis/round_pushpin.png new file mode 100644 index 00000000..68777d7f Binary files /dev/null and b/taiga/base/static/img/emojis/round_pushpin.png differ diff --git a/taiga/base/static/img/emojis/rowboat.png b/taiga/base/static/img/emojis/rowboat.png new file mode 100644 index 00000000..9179acbd Binary files /dev/null and b/taiga/base/static/img/emojis/rowboat.png differ diff --git a/taiga/base/static/img/emojis/ru.png b/taiga/base/static/img/emojis/ru.png new file mode 100644 index 00000000..55a13282 Binary files /dev/null and b/taiga/base/static/img/emojis/ru.png differ diff --git a/taiga/base/static/img/emojis/rugby_football.png b/taiga/base/static/img/emojis/rugby_football.png new file mode 100644 index 00000000..a574841e Binary files /dev/null and b/taiga/base/static/img/emojis/rugby_football.png differ diff --git a/taiga/base/static/img/emojis/runner.png b/taiga/base/static/img/emojis/runner.png new file mode 100644 index 00000000..5a804cc5 Binary files /dev/null and b/taiga/base/static/img/emojis/runner.png differ diff --git a/taiga/base/static/img/emojis/running.png b/taiga/base/static/img/emojis/running.png new file mode 100644 index 00000000..5a804cc5 Binary files /dev/null and b/taiga/base/static/img/emojis/running.png differ diff --git a/taiga/base/static/img/emojis/running_shirt_with_sash.png b/taiga/base/static/img/emojis/running_shirt_with_sash.png new file mode 100644 index 00000000..8f8d63db Binary files /dev/null and b/taiga/base/static/img/emojis/running_shirt_with_sash.png differ diff --git a/taiga/base/static/img/emojis/sa.png b/taiga/base/static/img/emojis/sa.png new file mode 100644 index 00000000..01d63421 Binary files /dev/null and b/taiga/base/static/img/emojis/sa.png differ diff --git a/taiga/base/static/img/emojis/sagittarius.png b/taiga/base/static/img/emojis/sagittarius.png new file mode 100644 index 00000000..ac9a122a Binary files /dev/null and b/taiga/base/static/img/emojis/sagittarius.png differ diff --git a/taiga/base/static/img/emojis/sailboat.png b/taiga/base/static/img/emojis/sailboat.png new file mode 100644 index 00000000..ab65ccc4 Binary files /dev/null and b/taiga/base/static/img/emojis/sailboat.png differ diff --git a/taiga/base/static/img/emojis/sake.png b/taiga/base/static/img/emojis/sake.png new file mode 100644 index 00000000..54e05a06 Binary files /dev/null and b/taiga/base/static/img/emojis/sake.png differ diff --git a/taiga/base/static/img/emojis/sandal.png b/taiga/base/static/img/emojis/sandal.png new file mode 100644 index 00000000..d5b8f3b0 Binary files /dev/null and b/taiga/base/static/img/emojis/sandal.png differ diff --git a/taiga/base/static/img/emojis/santa.png b/taiga/base/static/img/emojis/santa.png new file mode 100644 index 00000000..2155ed7d Binary files /dev/null and b/taiga/base/static/img/emojis/santa.png differ diff --git a/taiga/base/static/img/emojis/satellite.png b/taiga/base/static/img/emojis/satellite.png new file mode 100644 index 00000000..0f9c5285 Binary files /dev/null and b/taiga/base/static/img/emojis/satellite.png differ diff --git a/taiga/base/static/img/emojis/satisfied.png b/taiga/base/static/img/emojis/satisfied.png new file mode 100644 index 00000000..5f0703b3 Binary files /dev/null and b/taiga/base/static/img/emojis/satisfied.png differ diff --git a/taiga/base/static/img/emojis/saxophone.png b/taiga/base/static/img/emojis/saxophone.png new file mode 100644 index 00000000..70b7f554 Binary files /dev/null and b/taiga/base/static/img/emojis/saxophone.png differ diff --git a/taiga/base/static/img/emojis/school.png b/taiga/base/static/img/emojis/school.png new file mode 100644 index 00000000..6f5d062f Binary files /dev/null and b/taiga/base/static/img/emojis/school.png differ diff --git a/taiga/base/static/img/emojis/school_satchel.png b/taiga/base/static/img/emojis/school_satchel.png new file mode 100644 index 00000000..2eb54d4e Binary files /dev/null and b/taiga/base/static/img/emojis/school_satchel.png differ diff --git a/taiga/base/static/img/emojis/scissors.png b/taiga/base/static/img/emojis/scissors.png new file mode 100644 index 00000000..d8178c79 Binary files /dev/null and b/taiga/base/static/img/emojis/scissors.png differ diff --git a/taiga/base/static/img/emojis/scorpius.png b/taiga/base/static/img/emojis/scorpius.png new file mode 100644 index 00000000..4285976b Binary files /dev/null and b/taiga/base/static/img/emojis/scorpius.png differ diff --git a/taiga/base/static/img/emojis/scream.png b/taiga/base/static/img/emojis/scream.png new file mode 100644 index 00000000..e565dd14 Binary files /dev/null and b/taiga/base/static/img/emojis/scream.png differ diff --git a/taiga/base/static/img/emojis/scream_cat.png b/taiga/base/static/img/emojis/scream_cat.png new file mode 100644 index 00000000..5d9688e4 Binary files /dev/null and b/taiga/base/static/img/emojis/scream_cat.png differ diff --git a/taiga/base/static/img/emojis/scroll.png b/taiga/base/static/img/emojis/scroll.png new file mode 100644 index 00000000..82aaf972 Binary files /dev/null and b/taiga/base/static/img/emojis/scroll.png differ diff --git a/taiga/base/static/img/emojis/seat.png b/taiga/base/static/img/emojis/seat.png new file mode 100644 index 00000000..652387e0 Binary files /dev/null and b/taiga/base/static/img/emojis/seat.png differ diff --git a/taiga/base/static/img/emojis/secret.png b/taiga/base/static/img/emojis/secret.png new file mode 100644 index 00000000..e0cedfa5 Binary files /dev/null and b/taiga/base/static/img/emojis/secret.png differ diff --git a/taiga/base/static/img/emojis/see_no_evil.png b/taiga/base/static/img/emojis/see_no_evil.png new file mode 100644 index 00000000..8f287532 Binary files /dev/null and b/taiga/base/static/img/emojis/see_no_evil.png differ diff --git a/taiga/base/static/img/emojis/seedling.png b/taiga/base/static/img/emojis/seedling.png new file mode 100644 index 00000000..741f0c75 Binary files /dev/null and b/taiga/base/static/img/emojis/seedling.png differ diff --git a/taiga/base/static/img/emojis/seven.png b/taiga/base/static/img/emojis/seven.png new file mode 100644 index 00000000..5be9b6e9 Binary files /dev/null and b/taiga/base/static/img/emojis/seven.png differ diff --git a/taiga/base/static/img/emojis/shaved_ice.png b/taiga/base/static/img/emojis/shaved_ice.png new file mode 100644 index 00000000..c19c52c8 Binary files /dev/null and b/taiga/base/static/img/emojis/shaved_ice.png differ diff --git a/taiga/base/static/img/emojis/sheep.png b/taiga/base/static/img/emojis/sheep.png new file mode 100644 index 00000000..10e36725 Binary files /dev/null and b/taiga/base/static/img/emojis/sheep.png differ diff --git a/taiga/base/static/img/emojis/shell.png b/taiga/base/static/img/emojis/shell.png new file mode 100644 index 00000000..88654d83 Binary files /dev/null and b/taiga/base/static/img/emojis/shell.png differ diff --git a/taiga/base/static/img/emojis/ship.png b/taiga/base/static/img/emojis/ship.png new file mode 100644 index 00000000..086ba04d Binary files /dev/null and b/taiga/base/static/img/emojis/ship.png differ diff --git a/taiga/base/static/img/emojis/shipit.png b/taiga/base/static/img/emojis/shipit.png new file mode 100644 index 00000000..452bdeeb Binary files /dev/null and b/taiga/base/static/img/emojis/shipit.png differ diff --git a/taiga/base/static/img/emojis/shirt.png b/taiga/base/static/img/emojis/shirt.png new file mode 100644 index 00000000..d725451a Binary files /dev/null and b/taiga/base/static/img/emojis/shirt.png differ diff --git a/taiga/base/static/img/emojis/shit.png b/taiga/base/static/img/emojis/shit.png new file mode 100644 index 00000000..cbd8d185 Binary files /dev/null and b/taiga/base/static/img/emojis/shit.png differ diff --git a/taiga/base/static/img/emojis/shoe.png b/taiga/base/static/img/emojis/shoe.png new file mode 100644 index 00000000..f24be573 Binary files /dev/null and b/taiga/base/static/img/emojis/shoe.png differ diff --git a/taiga/base/static/img/emojis/shower.png b/taiga/base/static/img/emojis/shower.png new file mode 100644 index 00000000..3c1fcdd7 Binary files /dev/null and b/taiga/base/static/img/emojis/shower.png differ diff --git a/taiga/base/static/img/emojis/signal_strength.png b/taiga/base/static/img/emojis/signal_strength.png new file mode 100644 index 00000000..18781137 Binary files /dev/null and b/taiga/base/static/img/emojis/signal_strength.png differ diff --git a/taiga/base/static/img/emojis/six.png b/taiga/base/static/img/emojis/six.png new file mode 100644 index 00000000..cd099b3e Binary files /dev/null and b/taiga/base/static/img/emojis/six.png differ diff --git a/taiga/base/static/img/emojis/six_pointed_star.png b/taiga/base/static/img/emojis/six_pointed_star.png new file mode 100644 index 00000000..2dcdf017 Binary files /dev/null and b/taiga/base/static/img/emojis/six_pointed_star.png differ diff --git a/taiga/base/static/img/emojis/ski.png b/taiga/base/static/img/emojis/ski.png new file mode 100644 index 00000000..f7f1b756 Binary files /dev/null and b/taiga/base/static/img/emojis/ski.png differ diff --git a/taiga/base/static/img/emojis/skull.png b/taiga/base/static/img/emojis/skull.png new file mode 100644 index 00000000..94858041 Binary files /dev/null and b/taiga/base/static/img/emojis/skull.png differ diff --git a/taiga/base/static/img/emojis/sleeping.png b/taiga/base/static/img/emojis/sleeping.png new file mode 100644 index 00000000..98fe02f9 Binary files /dev/null and b/taiga/base/static/img/emojis/sleeping.png differ diff --git a/taiga/base/static/img/emojis/sleepy.png b/taiga/base/static/img/emojis/sleepy.png new file mode 100644 index 00000000..c980161b Binary files /dev/null and b/taiga/base/static/img/emojis/sleepy.png differ diff --git a/taiga/base/static/img/emojis/slot_machine.png b/taiga/base/static/img/emojis/slot_machine.png new file mode 100644 index 00000000..eed00662 Binary files /dev/null and b/taiga/base/static/img/emojis/slot_machine.png differ diff --git a/taiga/base/static/img/emojis/small_blue_diamond.png b/taiga/base/static/img/emojis/small_blue_diamond.png new file mode 100644 index 00000000..cb75ddc1 Binary files /dev/null and b/taiga/base/static/img/emojis/small_blue_diamond.png differ diff --git a/taiga/base/static/img/emojis/small_orange_diamond.png b/taiga/base/static/img/emojis/small_orange_diamond.png new file mode 100644 index 00000000..6fc3e29d Binary files /dev/null and b/taiga/base/static/img/emojis/small_orange_diamond.png differ diff --git a/taiga/base/static/img/emojis/small_red_triangle.png b/taiga/base/static/img/emojis/small_red_triangle.png new file mode 100644 index 00000000..088bb465 Binary files /dev/null and b/taiga/base/static/img/emojis/small_red_triangle.png differ diff --git a/taiga/base/static/img/emojis/small_red_triangle_down.png b/taiga/base/static/img/emojis/small_red_triangle_down.png new file mode 100644 index 00000000..4ef9f008 Binary files /dev/null and b/taiga/base/static/img/emojis/small_red_triangle_down.png differ diff --git a/taiga/base/static/img/emojis/smile.png b/taiga/base/static/img/emojis/smile.png new file mode 100644 index 00000000..aaa5fd36 Binary files /dev/null and b/taiga/base/static/img/emojis/smile.png differ diff --git a/taiga/base/static/img/emojis/smile_cat.png b/taiga/base/static/img/emojis/smile_cat.png new file mode 100644 index 00000000..7e9a474f Binary files /dev/null and b/taiga/base/static/img/emojis/smile_cat.png differ diff --git a/taiga/base/static/img/emojis/smiley.png b/taiga/base/static/img/emojis/smiley.png new file mode 100644 index 00000000..1d46b561 Binary files /dev/null and b/taiga/base/static/img/emojis/smiley.png differ diff --git a/taiga/base/static/img/emojis/smiley_cat.png b/taiga/base/static/img/emojis/smiley_cat.png new file mode 100644 index 00000000..b1e37671 Binary files /dev/null and b/taiga/base/static/img/emojis/smiley_cat.png differ diff --git a/taiga/base/static/img/emojis/smiling_imp.png b/taiga/base/static/img/emojis/smiling_imp.png new file mode 100644 index 00000000..b19174b6 Binary files /dev/null and b/taiga/base/static/img/emojis/smiling_imp.png differ diff --git a/taiga/base/static/img/emojis/smirk.png b/taiga/base/static/img/emojis/smirk.png new file mode 100644 index 00000000..c8c2860b Binary files /dev/null and b/taiga/base/static/img/emojis/smirk.png differ diff --git a/taiga/base/static/img/emojis/smirk_cat.png b/taiga/base/static/img/emojis/smirk_cat.png new file mode 100644 index 00000000..67f18db7 Binary files /dev/null and b/taiga/base/static/img/emojis/smirk_cat.png differ diff --git a/taiga/base/static/img/emojis/smoking.png b/taiga/base/static/img/emojis/smoking.png new file mode 100644 index 00000000..c3cbcace Binary files /dev/null and b/taiga/base/static/img/emojis/smoking.png differ diff --git a/taiga/base/static/img/emojis/snail.png b/taiga/base/static/img/emojis/snail.png new file mode 100644 index 00000000..86c289d2 Binary files /dev/null and b/taiga/base/static/img/emojis/snail.png differ diff --git a/taiga/base/static/img/emojis/snake.png b/taiga/base/static/img/emojis/snake.png new file mode 100644 index 00000000..00189648 Binary files /dev/null and b/taiga/base/static/img/emojis/snake.png differ diff --git a/taiga/base/static/img/emojis/snowboarder.png b/taiga/base/static/img/emojis/snowboarder.png new file mode 100644 index 00000000..1768b72d Binary files /dev/null and b/taiga/base/static/img/emojis/snowboarder.png differ diff --git a/taiga/base/static/img/emojis/snowflake.png b/taiga/base/static/img/emojis/snowflake.png new file mode 100644 index 00000000..80ee0a96 Binary files /dev/null and b/taiga/base/static/img/emojis/snowflake.png differ diff --git a/taiga/base/static/img/emojis/snowman.png b/taiga/base/static/img/emojis/snowman.png new file mode 100644 index 00000000..d11a05b8 Binary files /dev/null and b/taiga/base/static/img/emojis/snowman.png differ diff --git a/taiga/base/static/img/emojis/sob.png b/taiga/base/static/img/emojis/sob.png new file mode 100644 index 00000000..88f0c5da Binary files /dev/null and b/taiga/base/static/img/emojis/sob.png differ diff --git a/taiga/base/static/img/emojis/soccer.png b/taiga/base/static/img/emojis/soccer.png new file mode 100644 index 00000000..da80057c Binary files /dev/null and b/taiga/base/static/img/emojis/soccer.png differ diff --git a/taiga/base/static/img/emojis/soon.png b/taiga/base/static/img/emojis/soon.png new file mode 100644 index 00000000..fc8703b9 Binary files /dev/null and b/taiga/base/static/img/emojis/soon.png differ diff --git a/taiga/base/static/img/emojis/sos.png b/taiga/base/static/img/emojis/sos.png new file mode 100644 index 00000000..cf400854 Binary files /dev/null and b/taiga/base/static/img/emojis/sos.png differ diff --git a/taiga/base/static/img/emojis/sound.png b/taiga/base/static/img/emojis/sound.png new file mode 100644 index 00000000..bff0b921 Binary files /dev/null and b/taiga/base/static/img/emojis/sound.png differ diff --git a/taiga/base/static/img/emojis/space_invader.png b/taiga/base/static/img/emojis/space_invader.png new file mode 100644 index 00000000..d93fa4c9 Binary files /dev/null and b/taiga/base/static/img/emojis/space_invader.png differ diff --git a/taiga/base/static/img/emojis/spades.png b/taiga/base/static/img/emojis/spades.png new file mode 100644 index 00000000..f630a8fb Binary files /dev/null and b/taiga/base/static/img/emojis/spades.png differ diff --git a/taiga/base/static/img/emojis/spaghetti.png b/taiga/base/static/img/emojis/spaghetti.png new file mode 100644 index 00000000..bd555df7 Binary files /dev/null and b/taiga/base/static/img/emojis/spaghetti.png differ diff --git a/taiga/base/static/img/emojis/sparkler.png b/taiga/base/static/img/emojis/sparkler.png new file mode 100644 index 00000000..eea06365 Binary files /dev/null and b/taiga/base/static/img/emojis/sparkler.png differ diff --git a/taiga/base/static/img/emojis/sparkles.png b/taiga/base/static/img/emojis/sparkles.png new file mode 100644 index 00000000..ece42023 Binary files /dev/null and b/taiga/base/static/img/emojis/sparkles.png differ diff --git a/taiga/base/static/img/emojis/sparkling_heart.png b/taiga/base/static/img/emojis/sparkling_heart.png new file mode 100644 index 00000000..b5e8d124 Binary files /dev/null and b/taiga/base/static/img/emojis/sparkling_heart.png differ diff --git a/taiga/base/static/img/emojis/speak_no_evil.png b/taiga/base/static/img/emojis/speak_no_evil.png new file mode 100644 index 00000000..d9a2086e Binary files /dev/null and b/taiga/base/static/img/emojis/speak_no_evil.png differ diff --git a/taiga/base/static/img/emojis/speaker.png b/taiga/base/static/img/emojis/speaker.png new file mode 100644 index 00000000..4c9cd48b Binary files /dev/null and b/taiga/base/static/img/emojis/speaker.png differ diff --git a/taiga/base/static/img/emojis/speech_balloon.png b/taiga/base/static/img/emojis/speech_balloon.png new file mode 100644 index 00000000..13b663ec Binary files /dev/null and b/taiga/base/static/img/emojis/speech_balloon.png differ diff --git a/taiga/base/static/img/emojis/speedboat.png b/taiga/base/static/img/emojis/speedboat.png new file mode 100644 index 00000000..68b677eb Binary files /dev/null and b/taiga/base/static/img/emojis/speedboat.png differ diff --git a/taiga/base/static/img/emojis/squirrel.png b/taiga/base/static/img/emojis/squirrel.png new file mode 100644 index 00000000..452bdeeb Binary files /dev/null and b/taiga/base/static/img/emojis/squirrel.png differ diff --git a/taiga/base/static/img/emojis/star.png b/taiga/base/static/img/emojis/star.png new file mode 100644 index 00000000..e1e48b06 Binary files /dev/null and b/taiga/base/static/img/emojis/star.png differ diff --git a/taiga/base/static/img/emojis/star2.png b/taiga/base/static/img/emojis/star2.png new file mode 100644 index 00000000..75343a6c Binary files /dev/null and b/taiga/base/static/img/emojis/star2.png differ diff --git a/taiga/base/static/img/emojis/stars.png b/taiga/base/static/img/emojis/stars.png new file mode 100644 index 00000000..ee318114 Binary files /dev/null and b/taiga/base/static/img/emojis/stars.png differ diff --git a/taiga/base/static/img/emojis/station.png b/taiga/base/static/img/emojis/station.png new file mode 100644 index 00000000..26eb1336 Binary files /dev/null and b/taiga/base/static/img/emojis/station.png differ diff --git a/taiga/base/static/img/emojis/statue_of_liberty.png b/taiga/base/static/img/emojis/statue_of_liberty.png new file mode 100644 index 00000000..bf5395a0 Binary files /dev/null and b/taiga/base/static/img/emojis/statue_of_liberty.png differ diff --git a/taiga/base/static/img/emojis/steam_locomotive.png b/taiga/base/static/img/emojis/steam_locomotive.png new file mode 100644 index 00000000..f5224d84 Binary files /dev/null and b/taiga/base/static/img/emojis/steam_locomotive.png differ diff --git a/taiga/base/static/img/emojis/stew.png b/taiga/base/static/img/emojis/stew.png new file mode 100644 index 00000000..9d0e58f5 Binary files /dev/null and b/taiga/base/static/img/emojis/stew.png differ diff --git a/taiga/base/static/img/emojis/straight_ruler.png b/taiga/base/static/img/emojis/straight_ruler.png new file mode 100644 index 00000000..88bbfb17 Binary files /dev/null and b/taiga/base/static/img/emojis/straight_ruler.png differ diff --git a/taiga/base/static/img/emojis/strawberry.png b/taiga/base/static/img/emojis/strawberry.png new file mode 100644 index 00000000..9f746b52 Binary files /dev/null and b/taiga/base/static/img/emojis/strawberry.png differ diff --git a/taiga/base/static/img/emojis/stuck_out_tongue.png b/taiga/base/static/img/emojis/stuck_out_tongue.png new file mode 100644 index 00000000..e093225c Binary files /dev/null and b/taiga/base/static/img/emojis/stuck_out_tongue.png differ diff --git a/taiga/base/static/img/emojis/stuck_out_tongue_closed_eyes.png b/taiga/base/static/img/emojis/stuck_out_tongue_closed_eyes.png new file mode 100644 index 00000000..585978b3 Binary files /dev/null and b/taiga/base/static/img/emojis/stuck_out_tongue_closed_eyes.png differ diff --git a/taiga/base/static/img/emojis/stuck_out_tongue_winking_eye.png b/taiga/base/static/img/emojis/stuck_out_tongue_winking_eye.png new file mode 100644 index 00000000..2d325fdd Binary files /dev/null and b/taiga/base/static/img/emojis/stuck_out_tongue_winking_eye.png differ diff --git a/taiga/base/static/img/emojis/sun_with_face.png b/taiga/base/static/img/emojis/sun_with_face.png new file mode 100644 index 00000000..d72115b2 Binary files /dev/null and b/taiga/base/static/img/emojis/sun_with_face.png differ diff --git a/taiga/base/static/img/emojis/sunflower.png b/taiga/base/static/img/emojis/sunflower.png new file mode 100644 index 00000000..5bdd66e5 Binary files /dev/null and b/taiga/base/static/img/emojis/sunflower.png differ diff --git a/taiga/base/static/img/emojis/sunglasses.png b/taiga/base/static/img/emojis/sunglasses.png new file mode 100644 index 00000000..0def8c43 Binary files /dev/null and b/taiga/base/static/img/emojis/sunglasses.png differ diff --git a/taiga/base/static/img/emojis/sunny.png b/taiga/base/static/img/emojis/sunny.png new file mode 100644 index 00000000..504eab73 Binary files /dev/null and b/taiga/base/static/img/emojis/sunny.png differ diff --git a/taiga/base/static/img/emojis/sunrise.png b/taiga/base/static/img/emojis/sunrise.png new file mode 100644 index 00000000..e4906c7f Binary files /dev/null and b/taiga/base/static/img/emojis/sunrise.png differ diff --git a/taiga/base/static/img/emojis/sunrise_over_mountains.png b/taiga/base/static/img/emojis/sunrise_over_mountains.png new file mode 100644 index 00000000..05e34bb3 Binary files /dev/null and b/taiga/base/static/img/emojis/sunrise_over_mountains.png differ diff --git a/taiga/base/static/img/emojis/surfer.png b/taiga/base/static/img/emojis/surfer.png new file mode 100644 index 00000000..237730d1 Binary files /dev/null and b/taiga/base/static/img/emojis/surfer.png differ diff --git a/taiga/base/static/img/emojis/sushi.png b/taiga/base/static/img/emojis/sushi.png new file mode 100644 index 00000000..29b29b91 Binary files /dev/null and b/taiga/base/static/img/emojis/sushi.png differ diff --git a/taiga/base/static/img/emojis/suspect.png b/taiga/base/static/img/emojis/suspect.png new file mode 100644 index 00000000..ef1e7e3b Binary files /dev/null and b/taiga/base/static/img/emojis/suspect.png differ diff --git a/taiga/base/static/img/emojis/suspension_railway.png b/taiga/base/static/img/emojis/suspension_railway.png new file mode 100644 index 00000000..e18d9f08 Binary files /dev/null and b/taiga/base/static/img/emojis/suspension_railway.png differ diff --git a/taiga/base/static/img/emojis/sweat.png b/taiga/base/static/img/emojis/sweat.png new file mode 100644 index 00000000..93cfa91b Binary files /dev/null and b/taiga/base/static/img/emojis/sweat.png differ diff --git a/taiga/base/static/img/emojis/sweat_drops.png b/taiga/base/static/img/emojis/sweat_drops.png new file mode 100644 index 00000000..8e882710 Binary files /dev/null and b/taiga/base/static/img/emojis/sweat_drops.png differ diff --git a/taiga/base/static/img/emojis/sweat_smile.png b/taiga/base/static/img/emojis/sweat_smile.png new file mode 100644 index 00000000..85cab920 Binary files /dev/null and b/taiga/base/static/img/emojis/sweat_smile.png differ diff --git a/taiga/base/static/img/emojis/sweet_potato.png b/taiga/base/static/img/emojis/sweet_potato.png new file mode 100644 index 00000000..7f8ebb39 Binary files /dev/null and b/taiga/base/static/img/emojis/sweet_potato.png differ diff --git a/taiga/base/static/img/emojis/swimmer.png b/taiga/base/static/img/emojis/swimmer.png new file mode 100644 index 00000000..dc1b98ab Binary files /dev/null and b/taiga/base/static/img/emojis/swimmer.png differ diff --git a/taiga/base/static/img/emojis/symbols.png b/taiga/base/static/img/emojis/symbols.png new file mode 100644 index 00000000..f49fda06 Binary files /dev/null and b/taiga/base/static/img/emojis/symbols.png differ diff --git a/taiga/base/static/img/emojis/syringe.png b/taiga/base/static/img/emojis/syringe.png new file mode 100644 index 00000000..f2183abb Binary files /dev/null and b/taiga/base/static/img/emojis/syringe.png differ diff --git a/taiga/base/static/img/emojis/tada.png b/taiga/base/static/img/emojis/tada.png new file mode 100644 index 00000000..7c422796 Binary files /dev/null and b/taiga/base/static/img/emojis/tada.png differ diff --git a/taiga/base/static/img/emojis/tanabata_tree.png b/taiga/base/static/img/emojis/tanabata_tree.png new file mode 100644 index 00000000..df64983d Binary files /dev/null and b/taiga/base/static/img/emojis/tanabata_tree.png differ diff --git a/taiga/base/static/img/emojis/tangerine.png b/taiga/base/static/img/emojis/tangerine.png new file mode 100644 index 00000000..4c71ea83 Binary files /dev/null and b/taiga/base/static/img/emojis/tangerine.png differ diff --git a/taiga/base/static/img/emojis/taurus.png b/taiga/base/static/img/emojis/taurus.png new file mode 100644 index 00000000..b5c22c42 Binary files /dev/null and b/taiga/base/static/img/emojis/taurus.png differ diff --git a/taiga/base/static/img/emojis/taxi.png b/taiga/base/static/img/emojis/taxi.png new file mode 100644 index 00000000..467e5e53 Binary files /dev/null and b/taiga/base/static/img/emojis/taxi.png differ diff --git a/taiga/base/static/img/emojis/tea.png b/taiga/base/static/img/emojis/tea.png new file mode 100644 index 00000000..1e55c9b5 Binary files /dev/null and b/taiga/base/static/img/emojis/tea.png differ diff --git a/taiga/base/static/img/emojis/telephone.png b/taiga/base/static/img/emojis/telephone.png new file mode 100644 index 00000000..ce0bc5df Binary files /dev/null and b/taiga/base/static/img/emojis/telephone.png differ diff --git a/taiga/base/static/img/emojis/telephone_receiver.png b/taiga/base/static/img/emojis/telephone_receiver.png new file mode 100644 index 00000000..a620eb45 Binary files /dev/null and b/taiga/base/static/img/emojis/telephone_receiver.png differ diff --git a/taiga/base/static/img/emojis/telescope.png b/taiga/base/static/img/emojis/telescope.png new file mode 100644 index 00000000..da6a45f8 Binary files /dev/null and b/taiga/base/static/img/emojis/telescope.png differ diff --git a/taiga/base/static/img/emojis/tennis.png b/taiga/base/static/img/emojis/tennis.png new file mode 100644 index 00000000..e27e7f14 Binary files /dev/null and b/taiga/base/static/img/emojis/tennis.png differ diff --git a/taiga/base/static/img/emojis/tent.png b/taiga/base/static/img/emojis/tent.png new file mode 100644 index 00000000..64b7a709 Binary files /dev/null and b/taiga/base/static/img/emojis/tent.png differ diff --git a/taiga/base/static/img/emojis/thought_balloon.png b/taiga/base/static/img/emojis/thought_balloon.png new file mode 100644 index 00000000..fc6fd0fc Binary files /dev/null and b/taiga/base/static/img/emojis/thought_balloon.png differ diff --git a/taiga/base/static/img/emojis/three.png b/taiga/base/static/img/emojis/three.png new file mode 100644 index 00000000..514ed48a Binary files /dev/null and b/taiga/base/static/img/emojis/three.png differ diff --git a/taiga/base/static/img/emojis/thumbsdown.png b/taiga/base/static/img/emojis/thumbsdown.png new file mode 100644 index 00000000..32c79443 Binary files /dev/null and b/taiga/base/static/img/emojis/thumbsdown.png differ diff --git a/taiga/base/static/img/emojis/thumbsup.png b/taiga/base/static/img/emojis/thumbsup.png new file mode 100644 index 00000000..be57e612 Binary files /dev/null and b/taiga/base/static/img/emojis/thumbsup.png differ diff --git a/taiga/base/static/img/emojis/ticket.png b/taiga/base/static/img/emojis/ticket.png new file mode 100644 index 00000000..e98577a4 Binary files /dev/null and b/taiga/base/static/img/emojis/ticket.png differ diff --git a/taiga/base/static/img/emojis/tiger.png b/taiga/base/static/img/emojis/tiger.png new file mode 100644 index 00000000..0b29a50e Binary files /dev/null and b/taiga/base/static/img/emojis/tiger.png differ diff --git a/taiga/base/static/img/emojis/tiger2.png b/taiga/base/static/img/emojis/tiger2.png new file mode 100644 index 00000000..4e34d507 Binary files /dev/null and b/taiga/base/static/img/emojis/tiger2.png differ diff --git a/taiga/base/static/img/emojis/tired_face.png b/taiga/base/static/img/emojis/tired_face.png new file mode 100644 index 00000000..df0dfce7 Binary files /dev/null and b/taiga/base/static/img/emojis/tired_face.png differ diff --git a/taiga/base/static/img/emojis/tm.png b/taiga/base/static/img/emojis/tm.png new file mode 100644 index 00000000..fd01dbf8 Binary files /dev/null and b/taiga/base/static/img/emojis/tm.png differ diff --git a/taiga/base/static/img/emojis/toilet.png b/taiga/base/static/img/emojis/toilet.png new file mode 100644 index 00000000..8daa9547 Binary files /dev/null and b/taiga/base/static/img/emojis/toilet.png differ diff --git a/taiga/base/static/img/emojis/tokyo_tower.png b/taiga/base/static/img/emojis/tokyo_tower.png new file mode 100644 index 00000000..f0785183 Binary files /dev/null and b/taiga/base/static/img/emojis/tokyo_tower.png differ diff --git a/taiga/base/static/img/emojis/tomato.png b/taiga/base/static/img/emojis/tomato.png new file mode 100644 index 00000000..bfb666ff Binary files /dev/null and b/taiga/base/static/img/emojis/tomato.png differ diff --git a/taiga/base/static/img/emojis/tongue.png b/taiga/base/static/img/emojis/tongue.png new file mode 100644 index 00000000..94b8b4b7 Binary files /dev/null and b/taiga/base/static/img/emojis/tongue.png differ diff --git a/taiga/base/static/img/emojis/top.png b/taiga/base/static/img/emojis/top.png new file mode 100644 index 00000000..060488dd Binary files /dev/null and b/taiga/base/static/img/emojis/top.png differ diff --git a/taiga/base/static/img/emojis/tophat.png b/taiga/base/static/img/emojis/tophat.png new file mode 100644 index 00000000..12ce7729 Binary files /dev/null and b/taiga/base/static/img/emojis/tophat.png differ diff --git a/taiga/base/static/img/emojis/tractor.png b/taiga/base/static/img/emojis/tractor.png new file mode 100644 index 00000000..1eac3e92 Binary files /dev/null and b/taiga/base/static/img/emojis/tractor.png differ diff --git a/taiga/base/static/img/emojis/traffic_light.png b/taiga/base/static/img/emojis/traffic_light.png new file mode 100644 index 00000000..c6f289b9 Binary files /dev/null and b/taiga/base/static/img/emojis/traffic_light.png differ diff --git a/taiga/base/static/img/emojis/train.png b/taiga/base/static/img/emojis/train.png new file mode 100644 index 00000000..67c6a849 Binary files /dev/null and b/taiga/base/static/img/emojis/train.png differ diff --git a/taiga/base/static/img/emojis/train2.png b/taiga/base/static/img/emojis/train2.png new file mode 100644 index 00000000..d94482e1 Binary files /dev/null and b/taiga/base/static/img/emojis/train2.png differ diff --git a/taiga/base/static/img/emojis/tram.png b/taiga/base/static/img/emojis/tram.png new file mode 100644 index 00000000..cb58a058 Binary files /dev/null and b/taiga/base/static/img/emojis/tram.png differ diff --git a/taiga/base/static/img/emojis/triangular_flag_on_post.png b/taiga/base/static/img/emojis/triangular_flag_on_post.png new file mode 100644 index 00000000..c62b930c Binary files /dev/null and b/taiga/base/static/img/emojis/triangular_flag_on_post.png differ diff --git a/taiga/base/static/img/emojis/triangular_ruler.png b/taiga/base/static/img/emojis/triangular_ruler.png new file mode 100644 index 00000000..18ce44cc Binary files /dev/null and b/taiga/base/static/img/emojis/triangular_ruler.png differ diff --git a/taiga/base/static/img/emojis/trident.png b/taiga/base/static/img/emojis/trident.png new file mode 100644 index 00000000..a9fbcca7 Binary files /dev/null and b/taiga/base/static/img/emojis/trident.png differ diff --git a/taiga/base/static/img/emojis/triumph.png b/taiga/base/static/img/emojis/triumph.png new file mode 100644 index 00000000..e333f882 Binary files /dev/null and b/taiga/base/static/img/emojis/triumph.png differ diff --git a/taiga/base/static/img/emojis/trolleybus.png b/taiga/base/static/img/emojis/trolleybus.png new file mode 100644 index 00000000..040fe254 Binary files /dev/null and b/taiga/base/static/img/emojis/trolleybus.png differ diff --git a/taiga/base/static/img/emojis/trollface.png b/taiga/base/static/img/emojis/trollface.png new file mode 100644 index 00000000..c8ef48b3 Binary files /dev/null and b/taiga/base/static/img/emojis/trollface.png differ diff --git a/taiga/base/static/img/emojis/trophy.png b/taiga/base/static/img/emojis/trophy.png new file mode 100644 index 00000000..f2e3d677 Binary files /dev/null and b/taiga/base/static/img/emojis/trophy.png differ diff --git a/taiga/base/static/img/emojis/tropical_drink.png b/taiga/base/static/img/emojis/tropical_drink.png new file mode 100644 index 00000000..7ecf2467 Binary files /dev/null and b/taiga/base/static/img/emojis/tropical_drink.png differ diff --git a/taiga/base/static/img/emojis/tropical_fish.png b/taiga/base/static/img/emojis/tropical_fish.png new file mode 100644 index 00000000..989efecc Binary files /dev/null and b/taiga/base/static/img/emojis/tropical_fish.png differ diff --git a/taiga/base/static/img/emojis/truck.png b/taiga/base/static/img/emojis/truck.png new file mode 100644 index 00000000..9f730469 Binary files /dev/null and b/taiga/base/static/img/emojis/truck.png differ diff --git a/taiga/base/static/img/emojis/trumpet.png b/taiga/base/static/img/emojis/trumpet.png new file mode 100644 index 00000000..4411b6e9 Binary files /dev/null and b/taiga/base/static/img/emojis/trumpet.png differ diff --git a/taiga/base/static/img/emojis/tshirt.png b/taiga/base/static/img/emojis/tshirt.png new file mode 100644 index 00000000..d725451a Binary files /dev/null and b/taiga/base/static/img/emojis/tshirt.png differ diff --git a/taiga/base/static/img/emojis/tulip.png b/taiga/base/static/img/emojis/tulip.png new file mode 100644 index 00000000..57707d3a Binary files /dev/null and b/taiga/base/static/img/emojis/tulip.png differ diff --git a/taiga/base/static/img/emojis/turtle.png b/taiga/base/static/img/emojis/turtle.png new file mode 100644 index 00000000..eef5a7c3 Binary files /dev/null and b/taiga/base/static/img/emojis/turtle.png differ diff --git a/taiga/base/static/img/emojis/tv.png b/taiga/base/static/img/emojis/tv.png new file mode 100644 index 00000000..9be28a24 Binary files /dev/null and b/taiga/base/static/img/emojis/tv.png differ diff --git a/taiga/base/static/img/emojis/twisted_rightwards_arrows.png b/taiga/base/static/img/emojis/twisted_rightwards_arrows.png new file mode 100644 index 00000000..215fe1bd Binary files /dev/null and b/taiga/base/static/img/emojis/twisted_rightwards_arrows.png differ diff --git a/taiga/base/static/img/emojis/two.png b/taiga/base/static/img/emojis/two.png new file mode 100644 index 00000000..81cda08e Binary files /dev/null and b/taiga/base/static/img/emojis/two.png differ diff --git a/taiga/base/static/img/emojis/two_hearts.png b/taiga/base/static/img/emojis/two_hearts.png new file mode 100644 index 00000000..06b07ffc Binary files /dev/null and b/taiga/base/static/img/emojis/two_hearts.png differ diff --git a/taiga/base/static/img/emojis/two_men_holding_hands.png b/taiga/base/static/img/emojis/two_men_holding_hands.png new file mode 100644 index 00000000..3571952f Binary files /dev/null and b/taiga/base/static/img/emojis/two_men_holding_hands.png differ diff --git a/taiga/base/static/img/emojis/two_women_holding_hands.png b/taiga/base/static/img/emojis/two_women_holding_hands.png new file mode 100644 index 00000000..50b18107 Binary files /dev/null and b/taiga/base/static/img/emojis/two_women_holding_hands.png differ diff --git a/taiga/base/static/img/emojis/u5272.png b/taiga/base/static/img/emojis/u5272.png new file mode 100644 index 00000000..c8655f0d Binary files /dev/null and b/taiga/base/static/img/emojis/u5272.png differ diff --git a/taiga/base/static/img/emojis/u5408.png b/taiga/base/static/img/emojis/u5408.png new file mode 100644 index 00000000..0372587a Binary files /dev/null and b/taiga/base/static/img/emojis/u5408.png differ diff --git a/taiga/base/static/img/emojis/u55b6.png b/taiga/base/static/img/emojis/u55b6.png new file mode 100644 index 00000000..0ff799e4 Binary files /dev/null and b/taiga/base/static/img/emojis/u55b6.png differ diff --git a/taiga/base/static/img/emojis/u6307.png b/taiga/base/static/img/emojis/u6307.png new file mode 100644 index 00000000..8c1943fa Binary files /dev/null and b/taiga/base/static/img/emojis/u6307.png differ diff --git a/taiga/base/static/img/emojis/u6708.png b/taiga/base/static/img/emojis/u6708.png new file mode 100644 index 00000000..749417b7 Binary files /dev/null and b/taiga/base/static/img/emojis/u6708.png differ diff --git a/taiga/base/static/img/emojis/u6709.png b/taiga/base/static/img/emojis/u6709.png new file mode 100644 index 00000000..5c7ef0b6 Binary files /dev/null and b/taiga/base/static/img/emojis/u6709.png differ diff --git a/taiga/base/static/img/emojis/u6e80.png b/taiga/base/static/img/emojis/u6e80.png new file mode 100644 index 00000000..25b0a3fa Binary files /dev/null and b/taiga/base/static/img/emojis/u6e80.png differ diff --git a/taiga/base/static/img/emojis/u7121.png b/taiga/base/static/img/emojis/u7121.png new file mode 100644 index 00000000..205b28ec Binary files /dev/null and b/taiga/base/static/img/emojis/u7121.png differ diff --git a/taiga/base/static/img/emojis/u7533.png b/taiga/base/static/img/emojis/u7533.png new file mode 100644 index 00000000..46598048 Binary files /dev/null and b/taiga/base/static/img/emojis/u7533.png differ diff --git a/taiga/base/static/img/emojis/u7981.png b/taiga/base/static/img/emojis/u7981.png new file mode 100644 index 00000000..ec44c5f8 Binary files /dev/null and b/taiga/base/static/img/emojis/u7981.png differ diff --git a/taiga/base/static/img/emojis/u7a7a.png b/taiga/base/static/img/emojis/u7a7a.png new file mode 100644 index 00000000..9c11bc5b Binary files /dev/null and b/taiga/base/static/img/emojis/u7a7a.png differ diff --git a/taiga/base/static/img/emojis/uk.png b/taiga/base/static/img/emojis/uk.png new file mode 100644 index 00000000..02553549 Binary files /dev/null and b/taiga/base/static/img/emojis/uk.png differ diff --git a/taiga/base/static/img/emojis/umbrella.png b/taiga/base/static/img/emojis/umbrella.png new file mode 100644 index 00000000..14946f65 Binary files /dev/null and b/taiga/base/static/img/emojis/umbrella.png differ diff --git a/taiga/base/static/img/emojis/unamused.png b/taiga/base/static/img/emojis/unamused.png new file mode 100644 index 00000000..4c92ac5f Binary files /dev/null and b/taiga/base/static/img/emojis/unamused.png differ diff --git a/taiga/base/static/img/emojis/underage.png b/taiga/base/static/img/emojis/underage.png new file mode 100644 index 00000000..93e1a8ec Binary files /dev/null and b/taiga/base/static/img/emojis/underage.png differ diff --git a/taiga/base/static/img/emojis/unlock.png b/taiga/base/static/img/emojis/unlock.png new file mode 100644 index 00000000..891aa4ab Binary files /dev/null and b/taiga/base/static/img/emojis/unlock.png differ diff --git a/taiga/base/static/img/emojis/up.png b/taiga/base/static/img/emojis/up.png new file mode 100644 index 00000000..a07225c7 Binary files /dev/null and b/taiga/base/static/img/emojis/up.png differ diff --git a/taiga/base/static/img/emojis/us.png b/taiga/base/static/img/emojis/us.png new file mode 100644 index 00000000..e7d07308 Binary files /dev/null and b/taiga/base/static/img/emojis/us.png differ diff --git a/taiga/base/static/img/emojis/v.png b/taiga/base/static/img/emojis/v.png new file mode 100644 index 00000000..59478c7a Binary files /dev/null and b/taiga/base/static/img/emojis/v.png differ diff --git a/taiga/base/static/img/emojis/vertical_traffic_light.png b/taiga/base/static/img/emojis/vertical_traffic_light.png new file mode 100644 index 00000000..d2035fd8 Binary files /dev/null and b/taiga/base/static/img/emojis/vertical_traffic_light.png differ diff --git a/taiga/base/static/img/emojis/vhs.png b/taiga/base/static/img/emojis/vhs.png new file mode 100644 index 00000000..e43f425f Binary files /dev/null and b/taiga/base/static/img/emojis/vhs.png differ diff --git a/taiga/base/static/img/emojis/vibration_mode.png b/taiga/base/static/img/emojis/vibration_mode.png new file mode 100644 index 00000000..71b0d167 Binary files /dev/null and b/taiga/base/static/img/emojis/vibration_mode.png differ diff --git a/taiga/base/static/img/emojis/video_camera.png b/taiga/base/static/img/emojis/video_camera.png new file mode 100644 index 00000000..64b118a4 Binary files /dev/null and b/taiga/base/static/img/emojis/video_camera.png differ diff --git a/taiga/base/static/img/emojis/video_game.png b/taiga/base/static/img/emojis/video_game.png new file mode 100644 index 00000000..1a599e7c Binary files /dev/null and b/taiga/base/static/img/emojis/video_game.png differ diff --git a/taiga/base/static/img/emojis/violin.png b/taiga/base/static/img/emojis/violin.png new file mode 100644 index 00000000..83313bb5 Binary files /dev/null and b/taiga/base/static/img/emojis/violin.png differ diff --git a/taiga/base/static/img/emojis/virgo.png b/taiga/base/static/img/emojis/virgo.png new file mode 100644 index 00000000..467cd5f9 Binary files /dev/null and b/taiga/base/static/img/emojis/virgo.png differ diff --git a/taiga/base/static/img/emojis/volcano.png b/taiga/base/static/img/emojis/volcano.png new file mode 100644 index 00000000..b4e0819e Binary files /dev/null and b/taiga/base/static/img/emojis/volcano.png differ diff --git a/taiga/base/static/img/emojis/vs.png b/taiga/base/static/img/emojis/vs.png new file mode 100644 index 00000000..cdbc3ffa Binary files /dev/null and b/taiga/base/static/img/emojis/vs.png differ diff --git a/taiga/base/static/img/emojis/walking.png b/taiga/base/static/img/emojis/walking.png new file mode 100644 index 00000000..c26b386f Binary files /dev/null and b/taiga/base/static/img/emojis/walking.png differ diff --git a/taiga/base/static/img/emojis/waning_crescent_moon.png b/taiga/base/static/img/emojis/waning_crescent_moon.png new file mode 100644 index 00000000..cbf16b7c Binary files /dev/null and b/taiga/base/static/img/emojis/waning_crescent_moon.png differ diff --git a/taiga/base/static/img/emojis/waning_gibbous_moon.png b/taiga/base/static/img/emojis/waning_gibbous_moon.png new file mode 100644 index 00000000..40b3827d Binary files /dev/null and b/taiga/base/static/img/emojis/waning_gibbous_moon.png differ diff --git a/taiga/base/static/img/emojis/warning.png b/taiga/base/static/img/emojis/warning.png new file mode 100644 index 00000000..69e6ae18 Binary files /dev/null and b/taiga/base/static/img/emojis/warning.png differ diff --git a/taiga/base/static/img/emojis/watch.png b/taiga/base/static/img/emojis/watch.png new file mode 100644 index 00000000..f5e05c6b Binary files /dev/null and b/taiga/base/static/img/emojis/watch.png differ diff --git a/taiga/base/static/img/emojis/water_buffalo.png b/taiga/base/static/img/emojis/water_buffalo.png new file mode 100644 index 00000000..176ec139 Binary files /dev/null and b/taiga/base/static/img/emojis/water_buffalo.png differ diff --git a/taiga/base/static/img/emojis/watermelon.png b/taiga/base/static/img/emojis/watermelon.png new file mode 100644 index 00000000..79d2db39 Binary files /dev/null and b/taiga/base/static/img/emojis/watermelon.png differ diff --git a/taiga/base/static/img/emojis/wave.png b/taiga/base/static/img/emojis/wave.png new file mode 100644 index 00000000..67bd0aff Binary files /dev/null and b/taiga/base/static/img/emojis/wave.png differ diff --git a/taiga/base/static/img/emojis/wavy_dash.png b/taiga/base/static/img/emojis/wavy_dash.png new file mode 100644 index 00000000..7b862a7b Binary files /dev/null and b/taiga/base/static/img/emojis/wavy_dash.png differ diff --git a/taiga/base/static/img/emojis/waxing_crescent_moon.png b/taiga/base/static/img/emojis/waxing_crescent_moon.png new file mode 100644 index 00000000..b7ce6eb5 Binary files /dev/null and b/taiga/base/static/img/emojis/waxing_crescent_moon.png differ diff --git a/taiga/base/static/img/emojis/waxing_gibbous_moon.png b/taiga/base/static/img/emojis/waxing_gibbous_moon.png new file mode 100644 index 00000000..761e8b0e Binary files /dev/null and b/taiga/base/static/img/emojis/waxing_gibbous_moon.png differ diff --git a/taiga/base/static/img/emojis/wc.png b/taiga/base/static/img/emojis/wc.png new file mode 100644 index 00000000..c176e0e7 Binary files /dev/null and b/taiga/base/static/img/emojis/wc.png differ diff --git a/taiga/base/static/img/emojis/weary.png b/taiga/base/static/img/emojis/weary.png new file mode 100644 index 00000000..507bf293 Binary files /dev/null and b/taiga/base/static/img/emojis/weary.png differ diff --git a/taiga/base/static/img/emojis/wedding.png b/taiga/base/static/img/emojis/wedding.png new file mode 100644 index 00000000..96162312 Binary files /dev/null and b/taiga/base/static/img/emojis/wedding.png differ diff --git a/taiga/base/static/img/emojis/whale.png b/taiga/base/static/img/emojis/whale.png new file mode 100644 index 00000000..ed017253 Binary files /dev/null and b/taiga/base/static/img/emojis/whale.png differ diff --git a/taiga/base/static/img/emojis/whale2.png b/taiga/base/static/img/emojis/whale2.png new file mode 100644 index 00000000..9a7bd620 Binary files /dev/null and b/taiga/base/static/img/emojis/whale2.png differ diff --git a/taiga/base/static/img/emojis/wheelchair.png b/taiga/base/static/img/emojis/wheelchair.png new file mode 100644 index 00000000..70896039 Binary files /dev/null and b/taiga/base/static/img/emojis/wheelchair.png differ diff --git a/taiga/base/static/img/emojis/white_check_mark.png b/taiga/base/static/img/emojis/white_check_mark.png new file mode 100644 index 00000000..92a3d5db Binary files /dev/null and b/taiga/base/static/img/emojis/white_check_mark.png differ diff --git a/taiga/base/static/img/emojis/white_circle.png b/taiga/base/static/img/emojis/white_circle.png new file mode 100644 index 00000000..5184662b Binary files /dev/null and b/taiga/base/static/img/emojis/white_circle.png differ diff --git a/taiga/base/static/img/emojis/white_flower.png b/taiga/base/static/img/emojis/white_flower.png new file mode 100644 index 00000000..9b73257a Binary files /dev/null and b/taiga/base/static/img/emojis/white_flower.png differ diff --git a/taiga/base/static/img/emojis/white_square.png b/taiga/base/static/img/emojis/white_square.png new file mode 100644 index 00000000..00bcb405 Binary files /dev/null and b/taiga/base/static/img/emojis/white_square.png differ diff --git a/taiga/base/static/img/emojis/white_square_button.png b/taiga/base/static/img/emojis/white_square_button.png new file mode 100644 index 00000000..c02751f3 Binary files /dev/null and b/taiga/base/static/img/emojis/white_square_button.png differ diff --git a/taiga/base/static/img/emojis/wind_chime.png b/taiga/base/static/img/emojis/wind_chime.png new file mode 100644 index 00000000..4dcab90a Binary files /dev/null and b/taiga/base/static/img/emojis/wind_chime.png differ diff --git a/taiga/base/static/img/emojis/wine_glass.png b/taiga/base/static/img/emojis/wine_glass.png new file mode 100644 index 00000000..f5ee0e73 Binary files /dev/null and b/taiga/base/static/img/emojis/wine_glass.png differ diff --git a/taiga/base/static/img/emojis/wink.png b/taiga/base/static/img/emojis/wink.png new file mode 100644 index 00000000..b75959b1 Binary files /dev/null and b/taiga/base/static/img/emojis/wink.png differ diff --git a/taiga/base/static/img/emojis/wolf.png b/taiga/base/static/img/emojis/wolf.png new file mode 100644 index 00000000..0e9564ab Binary files /dev/null and b/taiga/base/static/img/emojis/wolf.png differ diff --git a/taiga/base/static/img/emojis/woman.png b/taiga/base/static/img/emojis/woman.png new file mode 100644 index 00000000..3333b504 Binary files /dev/null and b/taiga/base/static/img/emojis/woman.png differ diff --git a/taiga/base/static/img/emojis/womans_clothes.png b/taiga/base/static/img/emojis/womans_clothes.png new file mode 100644 index 00000000..03420fdc Binary files /dev/null and b/taiga/base/static/img/emojis/womans_clothes.png differ diff --git a/taiga/base/static/img/emojis/womans_hat.png b/taiga/base/static/img/emojis/womans_hat.png new file mode 100644 index 00000000..2470cb61 Binary files /dev/null and b/taiga/base/static/img/emojis/womans_hat.png differ diff --git a/taiga/base/static/img/emojis/womens.png b/taiga/base/static/img/emojis/womens.png new file mode 100644 index 00000000..35fe2dff Binary files /dev/null and b/taiga/base/static/img/emojis/womens.png differ diff --git a/taiga/base/static/img/emojis/worried.png b/taiga/base/static/img/emojis/worried.png new file mode 100644 index 00000000..869755b8 Binary files /dev/null and b/taiga/base/static/img/emojis/worried.png differ diff --git a/taiga/base/static/img/emojis/wrench.png b/taiga/base/static/img/emojis/wrench.png new file mode 100644 index 00000000..42220825 Binary files /dev/null and b/taiga/base/static/img/emojis/wrench.png differ diff --git a/taiga/base/static/img/emojis/x.png b/taiga/base/static/img/emojis/x.png new file mode 100644 index 00000000..50c8b1d5 Binary files /dev/null and b/taiga/base/static/img/emojis/x.png differ diff --git a/taiga/base/static/img/emojis/yellow_heart.png b/taiga/base/static/img/emojis/yellow_heart.png new file mode 100644 index 00000000..47a9449f Binary files /dev/null and b/taiga/base/static/img/emojis/yellow_heart.png differ diff --git a/taiga/base/static/img/emojis/yen.png b/taiga/base/static/img/emojis/yen.png new file mode 100644 index 00000000..a241ab42 Binary files /dev/null and b/taiga/base/static/img/emojis/yen.png differ diff --git a/taiga/base/static/img/emojis/yum.png b/taiga/base/static/img/emojis/yum.png new file mode 100644 index 00000000..cb602eee Binary files /dev/null and b/taiga/base/static/img/emojis/yum.png differ diff --git a/taiga/base/static/img/emojis/zap.png b/taiga/base/static/img/emojis/zap.png new file mode 100644 index 00000000..af0a9562 Binary files /dev/null and b/taiga/base/static/img/emojis/zap.png differ diff --git a/taiga/base/static/img/emojis/zero.png b/taiga/base/static/img/emojis/zero.png new file mode 100644 index 00000000..f12f2a75 Binary files /dev/null and b/taiga/base/static/img/emojis/zero.png differ diff --git a/taiga/base/static/img/emojis/zzz.png b/taiga/base/static/img/emojis/zzz.png new file mode 100644 index 00000000..edb464c6 Binary files /dev/null and b/taiga/base/static/img/emojis/zzz.png differ diff --git a/taiga/mdrender/__init__.py b/taiga/mdrender/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/taiga/mdrender/gfm/__init__.py b/taiga/mdrender/gfm/__init__.py new file mode 100644 index 00000000..48f85fde --- /dev/null +++ b/taiga/mdrender/gfm/__init__.py @@ -0,0 +1,17 @@ +# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +from . import autolink +from . import automail +from . import hidden_hilite +from . import semi_sane_lists +from . import spaced_link +from . import strikethrough + +AutolinkExtension = autolink.AutolinkExtension +AutomailExtension = automail.AutomailExtension +HiddenHiliteExtension = hidden_hilite.HiddenHiliteExtension +SemiSaneListExtension = semi_sane_lists.SemiSaneListExtension +SpacedLinkExtension = spaced_link.SpacedLinkExtension +StrikethroughExtension = strikethrough.StrikethroughExtension diff --git a/taiga/mdrender/gfm/autolink.py b/taiga/mdrender/gfm/autolink.py new file mode 100644 index 00000000..1dbf2b98 --- /dev/null +++ b/taiga/mdrender/gfm/autolink.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +import re +import markdown + +# We can't re-use the built-in AutolinkPattern because we need to add protocols +# to links without them. +class AutolinkPattern(markdown.inlinepatterns.Pattern): + def handleMatch(self, m): + el = markdown.util.etree.Element("a") + + href = m.group(2) + if not re.match('^(ftp|https?)://', href, flags=re.IGNORECASE): + href = 'http://%s' % href + el.set('href', self.unescape(href)) + + el.text = markdown.util.AtomicString(m.group(2)) + return el + +class AutolinkExtension(markdown.Extension): + """An extension that turns all URLs into links. + + This is based on the web-only URL regex by John Gruber that's listed on + http://daringfireball.net/2010/07/improved_regex_for_matching_urls (which is + in the public domain). + + This regex seems to line up pretty closely with GitHub's URL matching. There + are only two cases I've found where they differ. In both cases, I've + modified the regex slightly to bring it in line with GitHub's parsing: + + * GitHub accepts FTP-protocol URLs. + * GitHub only accepts URLs with protocols or "www.", whereas Gruber's regex + accepts things like "foo.com/bar". + """ + + def extendMarkdown(self, md, md_globals): + url_re = r'(?i)\b((?:(?:ftp|https?)://|www\d{0,3}[.])(?:[^\s()<>]+|' + \ + r'\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()' + \ + r'<>]+\)))*\)|[^\s`!()\[\]{};:' + r"'" + r'".,<>?«»“”‘’]))' + autolink = AutolinkPattern(url_re, md) + md.inlinePatterns.add('gfm-autolink', autolink, '_end') diff --git a/taiga/mdrender/gfm/automail.py b/taiga/mdrender/gfm/automail.py new file mode 100644 index 00000000..f8c65f77 --- /dev/null +++ b/taiga/mdrender/gfm/automail.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +import re +import markdown + +# We can't re-use the built-in AutomailPattern because we need to add mailto:. +# We also don't care about HTML-encoding the email. +class AutomailPattern(markdown.inlinepatterns.Pattern): + def handleMatch(self, m): + el = markdown.util.etree.Element("a") + el.set('href', self.unescape('mailto:' + m.group(2))) + el.text = markdown.util.AtomicString(m.group(2)) + return el + +class AutomailExtension(markdown.Extension): + """An extension that turns all email addresses into links.""" + + def extendMarkdown(self, md, md_globals): + mail_re = r'\b(?i)([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]+)\b' + automail = AutomailPattern(mail_re, md) + md.inlinePatterns.add('gfm-automail', automail, '_end') diff --git a/taiga/mdrender/gfm/hidden_hilite.py b/taiga/mdrender/gfm/hidden_hilite.py new file mode 100644 index 00000000..b1fe036c --- /dev/null +++ b/taiga/mdrender/gfm/hidden_hilite.py @@ -0,0 +1,16 @@ +# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +from markdown.extensions.codehilite import CodeHiliteExtension + +class HiddenHiliteExtension(CodeHiliteExtension): + """A subclass of CodeHiliteExtension that doesn't highlight on its own. + + This just enables the fenced code extension to use syntax highlighting, + without adding syntax highlighting or line numbers to any additional code + blocks. + """ + + def extendMarkdown(self, md, md_globals): + md.registerExtension(self) diff --git a/taiga/mdrender/gfm/semi_sane_lists.py b/taiga/mdrender/gfm/semi_sane_lists.py new file mode 100644 index 00000000..477b8ef7 --- /dev/null +++ b/taiga/mdrender/gfm/semi_sane_lists.py @@ -0,0 +1,30 @@ +# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +import re +import markdown + +class SemiSaneOListProcessor(markdown.blockprocessors.OListProcessor): + SIBLING_TAGS = ['ol'] + +class SemiSaneUListProcessor(markdown.blockprocessors.UListProcessor): + SIBLING_TAGS = ['ul'] + +class SemiSaneListExtension(markdown.Extension): + """An extension that causes lists to be treated the same way GitHub does. + + Like the sane_lists extension, GitHub considers a list to end if it's + separated by multiple newlines from another list of a different type. Unlike + the sane_lists extension, GitHub will mix list types if they're not + separated by multiple newlines. + + Github also recognizes lists that start in the middle of a paragraph. This + is currently not supported by this extension, since the Python parser has a + deeply-ingrained belief that blocks are always separated by multiple + newlines. + """ + + def extendMarkdown(self, md, md_globals): + md.parser.blockprocessors['olist'] = SemiSaneOListProcessor(md.parser) + md.parser.blockprocessors['ulist'] = SemiSaneUListProcessor(md.parser) diff --git a/taiga/mdrender/gfm/spaced_link.py b/taiga/mdrender/gfm/spaced_link.py new file mode 100644 index 00000000..c0d08d09 --- /dev/null +++ b/taiga/mdrender/gfm/spaced_link.py @@ -0,0 +1,41 @@ +# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +import markdown + +BRK = markdown.inlinepatterns.BRK +NOIMG = markdown.inlinepatterns.NOIMG +SPACE = r"(?:\s*(?:\r\n|\r|\n)?\s*)" + +SPACED_LINK_RE = markdown.inlinepatterns.LINK_RE.replace( + NOIMG + BRK, NOIMG + BRK + SPACE) + +SPACED_REFERENCE_RE = markdown.inlinepatterns.REFERENCE_RE.replace( + NOIMG + BRK, NOIMG + BRK + SPACE) + +SPACED_IMAGE_LINK_RE = markdown.inlinepatterns.IMAGE_LINK_RE.replace( + r'\!' + BRK, r'\!' + BRK + SPACE) + +SPACED_IMAGE_REFERENCE_RE = markdown.inlinepatterns.IMAGE_REFERENCE_RE.replace( + r'\!' + BRK, r'\!' + BRK + SPACE) + +class SpacedLinkExtension(markdown.Extension): + """An extension that supports links and images with additional whitespace. + + GitHub's Markdown engine allows links and images to have whitespace -- + including a single newline -- between the first set of brackets and the + second (e.g. ``[text] (href)``). Python-Markdown does not, but this + extension adds such support. + """ + + def extendMarkdown(self, md, md_globals): + md.inlinePatterns["link"] = \ + markdown.inlinepatterns.LinkPattern(SPACED_LINK_RE, md) + md.inlinePatterns["reference"] = \ + markdown.inlinepatterns.ReferencePattern(SPACED_REFERENCE_RE, md) + md.inlinePatterns["image_link"] = \ + markdown.inlinepatterns.ImagePattern(SPACED_IMAGE_LINK_RE, md) + md.inlinePatterns["image_reference"] = \ + markdown.inlinepatterns.ImageReferencePattern( + SPACED_IMAGE_REFERENCE_RE, md) diff --git a/taiga/mdrender/gfm/strikethrough.py b/taiga/mdrender/gfm/strikethrough.py new file mode 100644 index 00000000..eabf87d2 --- /dev/null +++ b/taiga/mdrender/gfm/strikethrough.py @@ -0,0 +1,17 @@ +# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +import markdown + +STRIKE_RE = r'(~{2})(.+?)(~{2})' # ~~strike~~ + +class StrikethroughExtension(markdown.Extension): + """An extension that supports PHP-Markdown style strikethrough. + + For example: ``~~strike~~``. + """ + + def extendMarkdown(self, md, md_globals): + pattern = markdown.inlinepatterns.SimpleTagPattern(STRIKE_RE, 'del') + md.inlinePatterns.add('gfm-strikethrough', pattern, '_end') diff --git a/taiga/mdrender/processors/__init__.py b/taiga/mdrender/processors/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/taiga/mdrender/processors/emoji.py b/taiga/mdrender/processors/emoji.py new file mode 100644 index 00000000..c12f9eaa --- /dev/null +++ b/taiga/mdrender/processors/emoji.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (c) 2012, lepture.com +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of the author nor the names of its contributors +# may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import re + + +emoji_url = 'http://localhost:8000/static/img/emojis/' +emoji_list = [ + "-1", "0", "1", "109", "2", "3", "4", "5", "6", "7", "8", "8ball", "9", + "a", "ab", "airplane", "alien", "ambulance", "angel", "anger", "angry", + "apple", "aquarius", "aries", "arrow_backward", "arrow_down", + "arrow_forward", "arrow_left", "arrow_lower_left", "arrow_lower_right", + "arrow_right", "arrow_up", "arrow_upper_left", "arrow_upper_right", + "art", "astonished", "atm", "b", "baby", "baby_chick", "baby_symbol", + "balloon", "bamboo", "bank", "barber", "baseball", "basketball", "bath", + "bear", "beer", "beers", "beginner", "bell", "bento", "bike", "bikini", + "bird", "birthday", "black_square", "blue_car", "blue_heart", "blush", + "boar", "boat", "bomb", "book", "boot", "bouquet", "bow", "bowtie", + "boy", "bread", "briefcase", "broken_heart", "bug", "bulb", + "bullettrain_front", "bullettrain_side", "bus", "busstop", "cactus", + "cake", "calling", "camel", "camera", "cancer", "capricorn", "car", + "cat", "cd", "chart", "checkered_flag", "cherry_blossom", "chicken", + "christmas_tree", "church", "cinema", "city_sunrise", "city_sunset", + "clap", "clapper", "clock1", "clock10", "clock11", "clock12", "clock2", + "clock3", "clock4", "clock5", "clock6", "clock7", "clock8", "clock9", + "closed_umbrella", "cloud", "clubs", "cn", "cocktail", "coffee", + "cold_sweat", "computer", "confounded", "congratulations", + "construction", "construction_worker", "convenience_store", "cool", + "cop", "copyright", "couple", "couple_with_heart", "couplekiss", "cow", + "crossed_flags", "crown", "cry", "cupid", "currency_exchange", "curry", + "cyclone", "dancer", "dancers", "dango", "dart", "dash", "de", + "department_store", "diamonds", "disappointed", "dog", "dolls", + "dolphin", "dress", "dvd", "ear", "ear_of_rice", "egg", "eggplant", + "egplant", "eight_pointed_black_star", "eight_spoked_asterisk", + "elephant", "email", "es", "european_castle", "exclamation", "eyes", + "factory", "fallen_leaf", "fast_forward", "fax", "fearful", "feelsgood", + "feet", "ferris_wheel", "finnadie", "fire", "fire_engine", "fireworks", + "fish", "fist", "flags", "flushed", "football", "fork_and_knife", + "fountain", "four_leaf_clover", "fr", "fries", "frog", "fuelpump", "gb", + "gem", "gemini", "ghost", "gift", "gift_heart", "girl", "goberserk", + "godmode", "golf", "green_heart", "grey_exclamation", "grey_question", + "grin", "guardsman", "guitar", "gun", "haircut", "hamburger", "hammer", + "hamster", "hand", "handbag", "hankey", "hash", "headphones", "heart", + "heart_decoration", "heart_eyes", "heartbeat", "heartpulse", "hearts", + "hibiscus", "high_heel", "horse", "hospital", "hotel", "hotsprings", + "house", "hurtrealbad", "icecream", "id", "ideograph_advantage", "imp", + "information_desk_person", "iphone", "it", "jack_o_lantern", + "japanese_castle", "joy", "jp", "key", "kimono", "kiss", "kissing_face", + "kissing_heart", "koala", "koko", "kr", "leaves", "leo", "libra", "lips", + "lipstick", "lock", "loop", "loudspeaker", "love_hotel", "mag", + "mahjong", "mailbox", "man", "man_with_gua_pi_mao", "man_with_turban", + "maple_leaf", "mask", "massage", "mega", "memo", "mens", "metal", + "metro", "microphone", "minidisc", "mobile_phone_off", "moneybag", + "monkey", "monkey_face", "moon", "mortar_board", "mount_fuji", "mouse", + "movie_camera", "muscle", "musical_note", "nail_care", "necktie", "new", + "no_good", "no_smoking", "nose", "notes", "o", "o2", "ocean", "octocat", + "octopus", "oden", "office", "ok", "ok_hand", "ok_woman", "older_man", + "older_woman", "open_hands", "ophiuchus", "palm_tree", "parking", + "part_alternation_mark", "pencil", "penguin", "pensive", "persevere", + "person_with_blond_hair", "phone", "pig", "pill", "pisces", "plus1", + "point_down", "point_left", "point_right", "point_up", "point_up_2", + "police_car", "poop", "post_office", "postbox", "pray", "princess", + "punch", "purple_heart", "question", "rabbit", "racehorse", "radio", + "rage", "rage1", "rage2", "rage3", "rage4", "rainbow", "raised_hands", + "ramen", "red_car", "red_circle", "registered", "relaxed", "relieved", + "restroom", "rewind", "ribbon", "rice", "rice_ball", "rice_cracker", + "rice_scene", "ring", "rocket", "roller_coaster", "rose", "ru", "runner", + "sa", "sagittarius", "sailboat", "sake", "sandal", "santa", "satellite", + "satisfied", "saxophone", "school", "school_satchel", "scissors", + "scorpius", "scream", "seat", "secret", "shaved_ice", "sheep", "shell", + "ship", "shipit", "shirt", "shit", "shoe", "signal_strength", + "six_pointed_star", "ski", "skull", "sleepy", "slot_machine", "smile", + "smiley", "smirk", "smoking", "snake", "snowman", "sob", "soccer", + "space_invader", "spades", "spaghetti", "sparkler", "sparkles", + "speaker", "speedboat", "squirrel", "star", "star2", "stars", "station", + "statue_of_liberty", "stew", "strawberry", "sunflower", "sunny", + "sunrise", "sunrise_over_mountains", "surfer", "sushi", "suspect", + "sweat", "sweat_drops", "swimmer", "syringe", "tada", "tangerine", + "taurus", "taxi", "tea", "telephone", "tennis", "tent", "thumbsdown", + "thumbsup", "ticket", "tiger", "tm", "toilet", "tokyo_tower", "tomato", + "tongue", "top", "tophat", "traffic_light", "train", "trident", + "trollface", "trophy", "tropical_fish", "truck", "trumpet", "tshirt", + "tulip", "tv", "u5272", "u55b6", "u6307", "u6708", "u6709", "u6e80", + "u7121", "u7533", "u7a7a", "umbrella", "unamused", "underage", "unlock", + "up", "us", "v", "vhs", "vibration_mode", "virgo", "vs", "walking", + "warning", "watermelon", "wave", "wc", "wedding", "whale", "wheelchair", + "white_square", "wind_chime", "wink", "wink2", "wolf", "woman", + "womans_hat", "womens", "x", "yellow_heart", "zap", "zzz", "+1" +] + + +def emoji(text): + pattern = re.compile(':([a-z0-9\+\-_]+):') + + def make_emoji(m): + name = m.group(1) + if name not in emoji_list: + return ':%s:' % name + tpl = ('%(name)s') + return tpl % {'name': name, 'url': emoji_url} + + text = pattern.sub(make_emoji, text) + return text + +__all__ = ['emoji'] diff --git a/taiga/mdrender/processors/mentions.py b/taiga/mdrender/processors/mentions.py new file mode 100644 index 00000000..4d65a527 --- /dev/null +++ b/taiga/mdrender/processors/mentions.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (c) 2012, lepture.com +# Copyright (c) 2014, taiga.io +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of the author nor the names of its contributors +# may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import re + +from taiga.users.models import User + +def mentions(text): + pattern = re.compile('(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9]+)') + + def make_mention_link(m): + name = m.group(1) + + if not User.objects.filter(username=name): + return "@{name}".format(name=name) + + tpl = ('[@{name}](/#/profile/{name} "@{name}")') + return tpl.format(name=name) + + text = pattern.sub(make_mention_link, text) + return text + +__all__ = ['mentions'] diff --git a/taiga/mdrender/processors/references.py b/taiga/mdrender/processors/references.py new file mode 100644 index 00000000..820be9e9 --- /dev/null +++ b/taiga/mdrender/processors/references.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (c) 2012, lepture.com +# Copyright (c) 2014, taiga.io +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of the author nor the names of its contributors +# may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import re + +from taiga.projects.userstories.models import UserStory +from taiga.projects.issues.models import Issue +from taiga.projects.tasks.models import Task + + +def references(project, text): + pattern = re.compile('(?<=^|(?<=[^a-zA-Z0-9-]))#(us|issue|task)(\d+)') + + def make_reference_link(m): + obj_type = m.group(1) + obj_ref = m.group(2) + + if obj_type == "us": + model = UserStory + obj_section = "user-story" + elif obj_type == "issue": + model = Issue + obj_section = "issues" + elif obj_type == "task": + model = Task + obj_section = "tasks" + + instances = model.objects.filter(project_id=project.id, ref=obj_ref) + if not instances: + return "#{type}{ref}".format(type=obj_type, ref=obj_ref) + + subject = instances[0].subject + + return '[#{type}{ref}](/#/project/{project_slug}/{section}/{ref} "{subject}")'.format( + type=obj_type, + section=obj_section, + ref=obj_ref, + project_slug=project.slug, + subject=subject + ) + + text = pattern.sub(make_reference_link, text) + return text + +__all__ = ['references'] diff --git a/taiga/mdrender/service.py b/taiga/mdrender/service.py new file mode 100644 index 00000000..a0fda0bd --- /dev/null +++ b/taiga/mdrender/service.py @@ -0,0 +1,58 @@ +import hashlib +from django.core.cache import cache +from django.utils.encoding import force_bytes +from markdown import markdown +from markdown.extensions.wikilinks import WikiLinkExtension +from .gfm import (AutolinkExtension, AutomailExtension, HiddenHiliteExtension, + SemiSaneListExtension, SpacedLinkExtension, + StrikethroughExtension) +from .processors.emoji import emoji +from .processors.mentions import mentions +from .processors.references import references + +from fn import F + +def cache_by_sha(func): + def _decorator(project, text): + sha1_hash = hashlib.sha1(force_bytes(text)).hexdigest() + key = "{}-{}".format(sha1_hash, project.id) + + # Try to get it from the cache + cached = cache.get(key) + if cached is not None: + return cached + + returned_value = func(text) + + cache.set(key, returned_value, timeout=None) + return returned_value + + return _decorator + +def _render_markdown(project, text): + wikilinks_config = { + "base_url": "#/project/{}/wiki/".format(project.slug), + "end_url": "" + } + return markdown(text, extensions=[ + AutolinkExtension(), AutomailExtension(), + SemiSaneListExtension(), SpacedLinkExtension(), + StrikethroughExtension(), WikiLinkExtension(wikilinks_config), "extra", + "codehilite" + ]) + +def _preprocessors(project, text): + pre = F() >> mentions >> F(references, project) + return pre(text) + +def _postprocessors(project, html): + post = F() >> emoji + return post(html) + +#@cache_by_sha +def render(project, text): + renderer = F() >> F(_preprocessors, project) >> F(_render_markdown, project) >> F(_postprocessors, project) + + return renderer(text) + +__all__ = ['render'] diff --git a/taiga/projects/issues/serializers.py b/taiga/projects/issues/serializers.py index 31c464d5..ec258ba8 100644 --- a/taiga/projects/issues/serializers.py +++ b/taiga/projects/issues/serializers.py @@ -19,6 +19,7 @@ from rest_framework import serializers from taiga.base.serializers import PickleField, NeighborsSerializerMixin from taiga.projects.attachments.serializers import AttachmentSerializer from taiga.projects.mixins.notifications import WatcherValidationSerializerMixin +from taiga.mdrender.service import render as mdrender from . import models @@ -34,6 +35,8 @@ class IssueSerializer(WatcherValidationSerializerMixin, serializers.ModelSeriali comment = serializers.SerializerMethodField("get_comment") attachments = IssueAttachmentSerializer(many=True, read_only=True) generated_user_stories = serializers.SerializerMethodField("get_generated_user_stories") + blocked_note_html = serializers.SerializerMethodField("get_blocked_note_html") + description_html = serializers.SerializerMethodField("get_description_html") class Meta: model = models.Issue @@ -45,6 +48,12 @@ class IssueSerializer(WatcherValidationSerializerMixin, serializers.ModelSeriali def get_generated_user_stories(self, obj): return obj.generated_user_stories.values("id", "ref", "subject") + def get_blocked_note_html(self, obj): + return mdrender(obj.project, obj.blocked_note) + + def get_description_html(self, obj): + return mdrender(obj.project, obj.description) + class IssueNeighborsSerializer(NeighborsSerializerMixin, IssueSerializer): diff --git a/taiga/projects/tasks/serializers.py b/taiga/projects/tasks/serializers.py index fabee54a..1e3d2ea8 100644 --- a/taiga/projects/tasks/serializers.py +++ b/taiga/projects/tasks/serializers.py @@ -25,6 +25,8 @@ class TaskSerializer(serializers.ModelSerializer): tags = PickleField(required=False, default=[]) comment = serializers.SerializerMethodField("get_comment") milestone_slug = serializers.SerializerMethodField("get_milestone_slug") + blocked_note_html = serializers.SerializerMethodField("get_blocked_note_html") + description_html = serializers.SerializerMethodField("get_description_html") class Meta: model = models.Task @@ -37,3 +39,9 @@ class TaskSerializer(serializers.ModelSerializer): return obj.milestone.slug else: return None + + def get_blocked_note_html(self, obj): + return mdrender(obj.project, obj.blocked_note) + + def get_description_html(self, obj): + return mdrender(obj.project, obj.description) diff --git a/taiga/projects/userstories/serializers.py b/taiga/projects/userstories/serializers.py index 0db8aef7..8418c6f6 100644 --- a/taiga/projects/userstories/serializers.py +++ b/taiga/projects/userstories/serializers.py @@ -19,6 +19,7 @@ from django.db.models import get_model from rest_framework import serializers from taiga.base.serializers import PickleField, NeighborsSerializerMixin +from taiga.mdrender.service import render as mdrender from . import models @@ -41,6 +42,8 @@ class UserStorySerializer(serializers.ModelSerializer): milestone_slug = serializers.SerializerMethodField("get_milestone_slug") milestone_name = serializers.SerializerMethodField("get_milestone_name") origin_issue = serializers.SerializerMethodField("get_origin_issue") + blocked_note_html = serializers.SerializerMethodField("get_blocked_note_html") + description_html = serializers.SerializerMethodField("get_description_html") class Meta: model = models.UserStory @@ -88,6 +91,12 @@ class UserStorySerializer(serializers.ModelSerializer): } return None + def get_blocked_note_html(self, obj): + return mdrender(obj.project, obj.blocked_note) + + def get_description_html(self, obj): + return mdrender(obj.project, obj.description) + class UserStoryNeighborsSerializer(NeighborsSerializerMixin, UserStorySerializer): diff --git a/taiga/projects/wiki/serializers.py b/taiga/projects/wiki/serializers.py index 24272c17..73d13387 100644 --- a/taiga/projects/wiki/serializers.py +++ b/taiga/projects/wiki/serializers.py @@ -18,7 +18,14 @@ from rest_framework import serializers from . import models +from taiga.mdrender.service import render as mdrender + class WikiPageSerializer(serializers.ModelSerializer): + html = serializers.SerializerMethodField("get_html") + class Meta: model = models.WikiPage + + def get_html(self, obj): + return mdrender(obj.project, obj.content) diff --git a/tests/unit/test_mdrender.py b/tests/unit/test_mdrender.py new file mode 100644 index 00000000..7d325200 --- /dev/null +++ b/tests/unit/test_mdrender.py @@ -0,0 +1,158 @@ +from unittest import mock + +import pytest + +import taiga.base +from taiga.mdrender.processors import emoji +from taiga.mdrender.processors import mentions +from taiga.mdrender.processors import references + +class DummyClass: + pass + +def test_proccessor_valid_emoji(): + result = emoji.emoji(":smile:") + assert result == 'smile' + +def test_proccessor_invalid_emoji(): + result = emoji.emoji(":notvalidemoji:") + assert result == ":notvalidemoji:" + +def test_proccessor_valid_user_mention(): + DummyModel = DummyClass() + DummyModel.objects = DummyClass() + DummyModel.objects.filter = lambda username: ["test"] + + mentions.User = DummyModel + + result = mentions.mentions("**@user1**") + assert result == '**[@user1](/#/profile/user1 "@user1")**' + +def test_proccessor_invalid_user_mention(): + DummyModel = DummyClass() + DummyModel.objects = DummyClass() + DummyModel.objects.filter = lambda username: [] + + mentions.User = DummyModel + + result = mentions.mentions("**@notvaliduser**") + assert result == '**@notvaliduser**' + + +def test_proccessor_valid_us_reference(): + class MockModelWithInstance: + class objects: + def filter(*args, **kwargs): + dummy_instance = DummyClass() + dummy_instance.subject = "test-subject" + return [dummy_instance] + UserStoryBack = references.UserStory + references.UserStory = MockModelWithInstance + + DummyProject = DummyClass() + DummyProject.id = 1 + DummyProject.slug = "test" + + result = references.references(DummyProject, "**#us1**") + assert result == '**[#us1](/#/project/test/user-story/1 "test-subject")**' + + references.UserStory = UserStoryBack + + +def test_proccessor_invalid_us_reference(): + class MockModelEmpty: + class objects: + def filter(*args, **kwargs): + return [] + + DummyProject = DummyClass() + DummyProject.id = 1 + DummyProject.slug = "test" + + UserStoryBack = references.UserStory + references.UserStory = MockModelEmpty + + result = references.references(DummyProject, "**#us1**") + assert result == "**#us1**" + + references.UserStory = UserStoryBack + +def test_proccessor_valid_issue_reference(): + class MockModelWithInstance: + class objects: + def filter(*args, **kwargs): + dummy_instance = DummyClass() + dummy_instance.subject = "test-subject" + return [dummy_instance] + IssueBack = references.Issue + references.Issue = MockModelWithInstance + + DummyProject = DummyClass() + DummyProject.id = 1 + DummyProject.slug = "test" + + result = references.references(DummyProject, "**#issue1**") + assert result == '**[#issue1](/#/project/test/issues/1 "test-subject")**' + + references.Issue = IssueBack + + +def test_proccessor_invalid_issue_reference(): + class MockModelEmpty: + class objects: + def filter(*args, **kwargs): + return [] + + DummyProject = DummyClass() + DummyProject.id = 1 + DummyProject.slug = "test" + + IssueBack = references.Issue + references.Issue = MockModelEmpty + + result = references.references(DummyProject, "**#issue1**") + assert result == "**#issue1**" + + references.Issue = IssueBack + +def test_proccessor_valid_task_reference(): + class MockModelWithInstance: + class objects: + def filter(*args, **kwargs): + dummy_instance = DummyClass() + dummy_instance.subject = "test-subject" + return [dummy_instance] + TaskBack = references.Task + references.Task = MockModelWithInstance + + DummyProject = DummyClass() + DummyProject.id = 1 + DummyProject.slug = "test" + + result = references.references(DummyProject, "**#task1**") + assert result == '**[#task1](/#/project/test/tasks/1 "test-subject")**' + + references.Task = TaskBack + + +def test_proccessor_invalid_task_reference(): + class MockModelEmpty: + class objects: + def filter(*args, **kwargs): + return [] + + DummyProject = DummyClass() + DummyProject.id = 1 + DummyProject.slug = "test" + + TaskBack = references.Task + references.Task = MockModelEmpty + + result = references.references(DummyProject, "**#task1**") + assert result == "**#task1**" + + references.Task = TaskBack + +def test_proccessor_invalid_type_reference(): + result = references.references(None, "**#invalid1**") + assert result == "**#invalid1**"