From 2c4e80aab3946e6a16b0768d45723f4ff8e47f72 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Fri, 29 Mar 2019 11:49:32 -0400
Subject: [PATCH 01/81] #101 - add emoji selector basic mockup

---
 src/components/emoji-input/emoji-input.js     |  5 ++
 src/components/emoji-input/emoji-input.vue    |  1 +
 .../emoji-selector/emoji-selector.js          | 26 ++++++++
 .../emoji-selector/emoji-selector.vue         | 65 +++++++++++++++++++
 4 files changed, 97 insertions(+)
 create mode 100644 src/components/emoji-selector/emoji-selector.js
 create mode 100644 src/components/emoji-selector/emoji-selector.vue

diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js
index a5bb6eaf..48e89409 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji-input/emoji-input.js
@@ -1,4 +1,6 @@
 import Completion from '../../services/completion/completion.js'
+import EmojiSelector from '../emoji-selector/emoji-selector.vue'
+
 import { take, filter, map } from 'lodash'
 
 const EmojiInput = {
@@ -14,6 +16,9 @@ const EmojiInput = {
       caret: 0
     }
   },
+  components: {
+    EmojiSelector
+  },
   computed: {
     suggestions () {
       const firstchar = this.textAtCaret.charAt(0)
diff --git a/src/components/emoji-input/emoji-input.vue b/src/components/emoji-input/emoji-input.vue
index 338b77cd..a1ddd7f9 100644
--- a/src/components/emoji-input/emoji-input.vue
+++ b/src/components/emoji-input/emoji-input.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="emoji-input">
+    <EmojiSelector />
     <input
       v-if="type !== 'textarea'"
       :class="classname"
diff --git a/src/components/emoji-selector/emoji-selector.js b/src/components/emoji-selector/emoji-selector.js
new file mode 100644
index 00000000..77107573
--- /dev/null
+++ b/src/components/emoji-selector/emoji-selector.js
@@ -0,0 +1,26 @@
+const EmojiSelector = {
+  data () {
+    return {
+      open: false
+    }
+  },
+  mounted () {
+    console.log(this.$store.state.instance.emoji)
+    console.log(this.$store.state.instance.customEmoji)
+  },
+  methods: {
+    togglePanel () {
+      this.open = !this.open
+    }
+  },
+  computed: {
+    standardEmoji () {
+      return this.$store.state.instance.emoji || []
+    },
+    customEmoji () {
+      return this.$store.state.instance.customEmoji || []
+    }
+  }
+}
+
+export default EmojiSelector
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
new file mode 100644
index 00000000..ebacc0c4
--- /dev/null
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -0,0 +1,65 @@
+<template>
+  <div class="emoji-dropdown">
+    <span class="emoji-dropdown-toggle" @click="togglePanel">Emoji</span>
+    <div class="emoji-dropdown-menu" v-if="open">
+      <span v-for="emoji in standardEmoji" :key="'standard' + emoji.shortcode" :title="emoji.shortcode" class="emoji-item">
+        <span v-if="!emoji.image_url">{{emoji.utf}}</span>
+        <img :src="emoji.utf" v-else>
+      </span>
+      <span v-for="emoji in customEmoji" :key="'custom' + emoji.shortcode" :title="emoji.shortcode" class="emoji-item">
+        <span v-if="!emoji.image_url">{{emoji.utf}}</span>
+        <img :src="'https://bikeshed.party' + emoji.image_url" v-else>
+      </span>
+    </div>
+  </div>
+</template>
+
+<script src="./emoji-selector.js"></script>
+
+<style lang="scss">
+@import '../../_variables.scss';
+
+.emoji {
+  &-dropdown {
+    position: relative;
+
+    &-toggle {
+      cursor: pointer;
+    }
+
+    &-menu {
+      position: absolute;
+      z-index: 1;
+      right: 0;
+      width: 300px;
+      height: 300px;
+      background: white;
+      border: 1px solid $fallback--faint;
+      display: flex;
+      align-items: center;
+      flex-wrap: wrap;
+      overflow: auto;
+      margin-bottom: 5px;
+
+      img {
+        max-width: 100%;
+        max-height: 100%;
+      }
+    }
+  }
+
+  &-item {
+    width: 34px;
+    height: 34px;
+    box-sizing: border-box;
+    display: flex;
+    font-size: 16px;
+    align-items: center;
+    justify-content: center;
+    color: black;
+    padding: 5px;
+    cursor: pointer;
+  }
+
+}
+</style>

From f9071dac254af0d99ca239c50931a00fbd11de6d Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Fri, 29 Mar 2019 12:48:52 -0400
Subject: [PATCH 02/81] #101 - show emojis in groups, clean up

---
 .../emoji-selector/emoji-selector.js          | 31 ++++---
 .../emoji-selector/emoji-selector.vue         | 87 +++++++++++++++----
 2 files changed, 89 insertions(+), 29 deletions(-)

diff --git a/src/components/emoji-selector/emoji-selector.js b/src/components/emoji-selector/emoji-selector.js
index 77107573..4771f4c6 100644
--- a/src/components/emoji-selector/emoji-selector.js
+++ b/src/components/emoji-selector/emoji-selector.js
@@ -1,24 +1,35 @@
+const filterByKeyword = (list, keyword = '') => {
+  return list.filter(x => x.shortcode.indexOf(keyword) !== -1)
+}
+
 const EmojiSelector = {
   data () {
     return {
-      open: false
+      open: false,
+      keyword: ''
     }
   },
-  mounted () {
-    console.log(this.$store.state.instance.emoji)
-    console.log(this.$store.state.instance.customEmoji)
-  },
   methods: {
     togglePanel () {
       this.open = !this.open
     }
   },
   computed: {
-    standardEmoji () {
-      return this.$store.state.instance.emoji || []
-    },
-    customEmoji () {
-      return this.$store.state.instance.customEmoji || []
+    emojis () {
+      const standardEmojis = this.$store.state.instance.emoji || []
+      const customEmojis = this.$store.state.instance.customEmoji || []
+      return {
+        standard: {
+          text: 'Standard',
+          icon: 'icon-star',
+          emojis: filterByKeyword(standardEmojis, this.keyword)
+        },
+        custom: {
+          text: 'Custom',
+          icon: 'icon-picture',
+          emojis: filterByKeyword(customEmojis, this.keyword)
+        }
+      }
     }
   }
 }
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
index ebacc0c4..576ca16e 100644
--- a/src/components/emoji-selector/emoji-selector.vue
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -1,15 +1,26 @@
 <template>
   <div class="emoji-dropdown">
     <span class="emoji-dropdown-toggle" @click="togglePanel">Emoji</span>
-    <div class="emoji-dropdown-menu" v-if="open">
-      <span v-for="emoji in standardEmoji" :key="'standard' + emoji.shortcode" :title="emoji.shortcode" class="emoji-item">
-        <span v-if="!emoji.image_url">{{emoji.utf}}</span>
-        <img :src="emoji.utf" v-else>
-      </span>
-      <span v-for="emoji in customEmoji" :key="'custom' + emoji.shortcode" :title="emoji.shortcode" class="emoji-item">
-        <span v-if="!emoji.image_url">{{emoji.utf}}</span>
-        <img :src="'https://bikeshed.party' + emoji.image_url" v-else>
-      </span>
+    <div class="emoji-dropdown-menu panel panel-default" v-if="open">
+      <div class="panel-heading emoji-tabs">
+        <span class="emoji-tabs-item" v-for="(value, key) in emojis" :key="key" :title="value.text">
+          <i :class="value.icon"></i>
+        </span>
+      </div>
+      <div class="panel-body emoji-dropdown-menu-content">
+        <div class="emoji-search">
+          <input type="text" class="form-control" v-model="keyword" />
+        </div>
+        <div class="emoji-groups">
+          <div v-for="(value, key) in emojis" :key="key" class="emoji-group">
+            <h6 class="emoji-group-title">{{value.text}}</h6>
+            <span v-for="emoji in value.emojis" :key="key + emoji.shortcode" :title="emoji.shortcode" class="emoji-item">
+              <span v-if="!emoji.image_url">{{emoji.utf}}</span>
+              <img :src="'https://bikeshed.party' + emoji.image_url" v-else>
+            </span>
+          </div>
+        </div>
+      </div>
     </div>
   </div>
 </template>
@@ -33,21 +44,55 @@
       right: 0;
       width: 300px;
       height: 300px;
-      background: white;
-      border: 1px solid $fallback--faint;
       display: flex;
-      align-items: center;
-      flex-wrap: wrap;
-      overflow: auto;
-      margin-bottom: 5px;
+      flex-direction: column;
 
-      img {
-        max-width: 100%;
-        max-height: 100%;
+      &-content {
+        flex: 1 1 1px;
+        display: flex;
+        flex-direction: column;
       }
     }
   }
 
+  &-tabs {
+    &-item {
+      padding: 0 5px;
+
+      &:first-child, &.active {
+        border-bottom: 4px solid;
+
+        i {
+          color: $fallback--lightText;
+          color: var(--lightText, $fallback--lightText);
+        }
+      }
+    }
+  }
+
+  &-search {
+    padding: 5px;
+  }
+
+  &-groups {
+    flex: 1 1 1px;
+    overflow: auto;
+  }
+
+  &-group {
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+    width: 100%;
+
+    &-title {
+      font-size: 12px;
+      width: 100%;
+      margin: 0;
+      padding: 5px;
+    }
+  }
+
   &-item {
     width: 34px;
     height: 34px;
@@ -56,9 +101,13 @@
     font-size: 16px;
     align-items: center;
     justify-content: center;
-    color: black;
     padding: 5px;
     cursor: pointer;
+
+    img {
+      max-width: 100%;
+      max-height: 100%;
+    }
   }
 
 }

From 3172b4e7c18d07a36477a77fcebe6b521cfa15d0 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Fri, 29 Mar 2019 15:56:50 -0400
Subject: [PATCH 03/81] #101 - insert emoji from emoji selector

---
 src/components/emoji-input/emoji-input.js       |  5 +++++
 src/components/emoji-input/emoji-input.vue      |  6 +++++-
 src/components/emoji-selector/emoji-selector.js |  5 +++++
 .../emoji-selector/emoji-selector.vue           | 17 +++++++++++++++--
 4 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js
index 48e89409..8f7598ca 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji-input/emoji-input.js
@@ -105,6 +105,11 @@ const EmojiInput = {
     },
     setCaret ({target: {selectionStart}}) {
       this.caret = selectionStart
+    },
+    onEmoji (emoji) {
+      const newValue = this.value.substr(0, this.caret) + emoji + this.value.substr(this.caret)
+      this.$refs.input.focus()
+      this.$emit('input', newValue)
     }
   }
 }
diff --git a/src/components/emoji-input/emoji-input.vue b/src/components/emoji-input/emoji-input.vue
index a1ddd7f9..151861de 100644
--- a/src/components/emoji-input/emoji-input.vue
+++ b/src/components/emoji-input/emoji-input.vue
@@ -1,6 +1,5 @@
 <template>
   <div class="emoji-input">
-    <EmojiSelector />
     <input
       v-if="type !== 'textarea'"
       :class="classname"
@@ -16,6 +15,7 @@
       @keydown.shift.tab="cycleBackward"
       @keydown.tab="cycleForward"
       @keydown.enter="replaceEmoji"
+      ref="input"
     />
     <textarea
       v-else
@@ -31,7 +31,9 @@
       @keydown.shift.tab="cycleBackward"
       @keydown.tab="cycleForward"
       @keydown.enter="replaceEmoji"
+      ref="input"
     ></textarea>
+    <EmojiSelector @emoji="onEmoji" />
     <div class="autocomplete-panel" v-if="suggestions">
       <div class="autocomplete-panel-body">
         <div
@@ -58,6 +60,8 @@
 @import '../../_variables.scss';
 
 .emoji-input {
+  position: relative;
+
   .form-control {
     width: 100%;
   }
diff --git a/src/components/emoji-selector/emoji-selector.js b/src/components/emoji-selector/emoji-selector.js
index 4771f4c6..07ea0442 100644
--- a/src/components/emoji-selector/emoji-selector.js
+++ b/src/components/emoji-selector/emoji-selector.js
@@ -12,6 +12,11 @@ const EmojiSelector = {
   methods: {
     togglePanel () {
       this.open = !this.open
+    },
+    onEmoji (emoji) {
+      const value = emoji.image_url ? `:${emoji.shortcode}:` : emoji.utf
+      this.$emit('emoji', ` ${value} `)
+      this.open = false
     }
   },
   computed: {
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
index 576ca16e..70752714 100644
--- a/src/components/emoji-selector/emoji-selector.vue
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -14,7 +14,13 @@
         <div class="emoji-groups">
           <div v-for="(value, key) in emojis" :key="key" class="emoji-group">
             <h6 class="emoji-group-title">{{value.text}}</h6>
-            <span v-for="emoji in value.emojis" :key="key + emoji.shortcode" :title="emoji.shortcode" class="emoji-item">
+            <span
+              v-for="emoji in value.emojis"
+              :key="key + emoji.shortcode"
+              :title="emoji.shortcode"
+              class="emoji-item"
+              @click="onEmoji(emoji)"
+            >
               <span v-if="!emoji.image_url">{{emoji.utf}}</span>
               <img :src="'https://bikeshed.party' + emoji.image_url" v-else>
             </span>
@@ -32,20 +38,27 @@
 
 .emoji {
   &-dropdown {
-    position: relative;
+    position: absolute;
+    right: 10px;
+    top: 2px;
+    z-index: 1;
 
     &-toggle {
       cursor: pointer;
+      position: absolute;
+      right: 0;
     }
 
     &-menu {
       position: absolute;
       z-index: 1;
       right: 0;
+      top: 25px;
       width: 300px;
       height: 300px;
       display: flex;
       flex-direction: column;
+      margin: 0 !important;
 
       &-content {
         flex: 1 1 1px;

From 2ee8d213669c101baad726ece5dc37b5eea7da94 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Fri, 29 Mar 2019 16:34:59 -0400
Subject: [PATCH 04/81] #101 - update emoji with fontello icon

---
 .../emoji-selector/emoji-selector.vue         |  16 +++++++++----
 static/font/config.json                       |  12 ++++++++++
 static/font/css/fontello-codes.css            |   2 ++
 static/font/css/fontello-embedded.css         |  14 ++++++-----
 static/font/css/fontello-ie7-codes.css        |   2 ++
 static/font/css/fontello-ie7.css              |   2 ++
 static/font/css/fontello.css                  |  16 +++++++------
 static/font/demo.html                         |  22 +++++++++++-------
 static/font/font/fontello.eot                 | Bin 17760 -> 18372 bytes
 static/font/font/fontello.svg                 |   4 ++++
 static/font/font/fontello.ttf                 | Bin 17592 -> 18204 bytes
 static/font/font/fontello.woff                | Bin 10752 -> 11180 bytes
 static/font/font/fontello.woff2               | Bin 9148 -> 9460 bytes
 13 files changed, 63 insertions(+), 27 deletions(-)

diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
index 70752714..c9593971 100644
--- a/src/components/emoji-selector/emoji-selector.vue
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -1,6 +1,8 @@
 <template>
   <div class="emoji-dropdown">
-    <span class="emoji-dropdown-toggle" @click="togglePanel">Emoji</span>
+    <span class="emoji-dropdown-toggle" @click="togglePanel">
+      <i class="icon-smile"></i>
+    </span>
     <div class="emoji-dropdown-menu panel panel-default" v-if="open">
       <div class="panel-heading emoji-tabs">
         <span class="emoji-tabs-item" v-for="(value, key) in emojis" :key="key" :title="value.text">
@@ -39,21 +41,25 @@
 .emoji {
   &-dropdown {
     position: absolute;
-    right: 10px;
-    top: 2px;
+    right: 0;
+    top: 100%;
     z-index: 1;
 
     &-toggle {
       cursor: pointer;
       position: absolute;
-      right: 0;
+      top: -25px;
+      right: 2px;
+
+      i {
+        font-size: 18px;
+      }
     }
 
     &-menu {
       position: absolute;
       z-index: 1;
       right: 0;
-      top: 25px;
       width: 300px;
       height: 300px;
       display: flex;
diff --git a/static/font/config.json b/static/font/config.json
index d72b622c..8102330b 100755
--- a/static/font/config.json
+++ b/static/font/config.json
@@ -239,6 +239,18 @@
       "css": "pencil",
       "code": 59416,
       "src": "fontawesome"
+    },
+    {
+      "uid": "c64623255a4a7c72436b199b05296c4f",
+      "css": "emo-happy",
+      "code": 59417,
+      "src": "fontelico"
+    },
+    {
+      "uid": "d862a10e1448589215be19702f98f2c1",
+      "css": "smile",
+      "code": 61720,
+      "src": "fontawesome"
     }
   ]
 }
\ No newline at end of file
diff --git a/static/font/css/fontello-codes.css b/static/font/css/fontello-codes.css
index 49175c8f..594a17a5 100755
--- a/static/font/css/fontello-codes.css
+++ b/static/font/css/fontello-codes.css
@@ -24,6 +24,7 @@
 .icon-adjust:before { content: '\e816'; } /* '' */
 .icon-edit:before { content: '\e817'; } /* '' */
 .icon-pencil:before { content: '\e818'; } /* '' */
+.icon-emo-happy:before { content: '\e819'; } /* '' */
 .icon-spin3:before { content: '\e832'; } /* '' */
 .icon-spin4:before { content: '\e834'; } /* '' */
 .icon-link-ext:before { content: '\f08e'; } /* '' */
@@ -33,6 +34,7 @@
 .icon-comment-empty:before { content: '\f0e5'; } /* '' */
 .icon-plus-squared:before { content: '\f0fe'; } /* '' */
 .icon-reply:before { content: '\f112'; } /* '' */
+.icon-smile:before { content: '\f118'; } /* '' */
 .icon-lock-open-alt:before { content: '\f13e'; } /* '' */
 .icon-play-circled:before { content: '\f144'; } /* '' */
 .icon-thumbs-up-alt:before { content: '\f164'; } /* '' */
diff --git a/static/font/css/fontello-embedded.css b/static/font/css/fontello-embedded.css
index c43ad321..7c9ca640 100755
--- a/static/font/css/fontello-embedded.css
+++ b/static/font/css/fontello-embedded.css
@@ -1,15 +1,15 @@
 @font-face {
   font-family: 'fontello';
-  src: url('../font/fontello.eot?21048049');
-  src: url('../font/fontello.eot?21048049#iefix') format('embedded-opentype'),
-       url('../font/fontello.svg?21048049#fontello') format('svg');
+  src: url('../font/fontello.eot?44981686');
+  src: url('../font/fontello.eot?44981686#iefix') format('embedded-opentype'),
+       url('../font/fontello.svg?44981686#fontello') format('svg');
   font-weight: normal;
   font-style: normal;
 }
 @font-face {
   font-family: 'fontello';
-  src: url('data:application/octet-stream;base64,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') format('woff'),
-       url('data:application/octet-stream;base64,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') format('truetype');
+  src: url('data:application/octet-stream;base64,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') format('woff'),
+       url('data:application/octet-stream;base64,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') format('truetype');
 }
 /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
 /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
@@ -17,7 +17,7 @@
 @media screen and (-webkit-min-device-pixel-ratio:0) {
   @font-face {
     font-family: 'fontello';
-    src: url('../font/fontello.svg?21048049#fontello') format('svg');
+    src: url('../font/fontello.svg?44981686#fontello') format('svg');
   }
 }
 */
@@ -77,6 +77,7 @@
 .icon-adjust:before { content: '\e816'; } /* '' */
 .icon-edit:before { content: '\e817'; } /* '' */
 .icon-pencil:before { content: '\e818'; } /* '' */
+.icon-emo-happy:before { content: '\e819'; } /* '' */
 .icon-spin3:before { content: '\e832'; } /* '' */
 .icon-spin4:before { content: '\e834'; } /* '' */
 .icon-link-ext:before { content: '\f08e'; } /* '' */
@@ -86,6 +87,7 @@
 .icon-comment-empty:before { content: '\f0e5'; } /* '' */
 .icon-plus-squared:before { content: '\f0fe'; } /* '' */
 .icon-reply:before { content: '\f112'; } /* '' */
+.icon-smile:before { content: '\f118'; } /* '' */
 .icon-lock-open-alt:before { content: '\f13e'; } /* '' */
 .icon-play-circled:before { content: '\f144'; } /* '' */
 .icon-thumbs-up-alt:before { content: '\f164'; } /* '' */
diff --git a/static/font/css/fontello-ie7-codes.css b/static/font/css/fontello-ie7-codes.css
index 56e11447..86ca4e4b 100755
--- a/static/font/css/fontello-ie7-codes.css
+++ b/static/font/css/fontello-ie7-codes.css
@@ -24,6 +24,7 @@
 .icon-adjust { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
 .icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
 .icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
+.icon-emo-happy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
 .icon-spin3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe832;&nbsp;'); }
 .icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe834;&nbsp;'); }
 .icon-link-ext { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08e;&nbsp;'); }
@@ -33,6 +34,7 @@
 .icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;&nbsp;'); }
 .icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;&nbsp;'); }
 .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;&nbsp;'); }
+.icon-smile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;&nbsp;'); }
 .icon-lock-open-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;&nbsp;'); }
 .icon-play-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf144;&nbsp;'); }
 .icon-thumbs-up-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf164;&nbsp;'); }
diff --git a/static/font/css/fontello-ie7.css b/static/font/css/fontello-ie7.css
index edced9cb..125f0c31 100755
--- a/static/font/css/fontello-ie7.css
+++ b/static/font/css/fontello-ie7.css
@@ -35,6 +35,7 @@
 .icon-adjust { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
 .icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
 .icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
+.icon-emo-happy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
 .icon-spin3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe832;&nbsp;'); }
 .icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe834;&nbsp;'); }
 .icon-link-ext { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08e;&nbsp;'); }
@@ -44,6 +45,7 @@
 .icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;&nbsp;'); }
 .icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;&nbsp;'); }
 .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;&nbsp;'); }
+.icon-smile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;&nbsp;'); }
 .icon-lock-open-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;&nbsp;'); }
 .icon-play-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf144;&nbsp;'); }
 .icon-thumbs-up-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf164;&nbsp;'); }
diff --git a/static/font/css/fontello.css b/static/font/css/fontello.css
index 64a7a938..93a525dd 100755
--- a/static/font/css/fontello.css
+++ b/static/font/css/fontello.css
@@ -1,11 +1,11 @@
 @font-face {
   font-family: 'fontello';
-  src: url('../font/fontello.eot?40679575');
-  src: url('../font/fontello.eot?40679575#iefix') format('embedded-opentype'),
-       url('../font/fontello.woff2?40679575') format('woff2'),
-       url('../font/fontello.woff?40679575') format('woff'),
-       url('../font/fontello.ttf?40679575') format('truetype'),
-       url('../font/fontello.svg?40679575#fontello') format('svg');
+  src: url('../font/fontello.eot?67796422');
+  src: url('../font/fontello.eot?67796422#iefix') format('embedded-opentype'),
+       url('../font/fontello.woff2?67796422') format('woff2'),
+       url('../font/fontello.woff?67796422') format('woff'),
+       url('../font/fontello.ttf?67796422') format('truetype'),
+       url('../font/fontello.svg?67796422#fontello') format('svg');
   font-weight: normal;
   font-style: normal;
 }
@@ -15,7 +15,7 @@
 @media screen and (-webkit-min-device-pixel-ratio:0) {
   @font-face {
     font-family: 'fontello';
-    src: url('../font/fontello.svg?40679575#fontello') format('svg');
+    src: url('../font/fontello.svg?67796422#fontello') format('svg');
   }
 }
 */
@@ -80,6 +80,7 @@
 .icon-adjust:before { content: '\e816'; } /* '' */
 .icon-edit:before { content: '\e817'; } /* '' */
 .icon-pencil:before { content: '\e818'; } /* '' */
+.icon-emo-happy:before { content: '\e819'; } /* '' */
 .icon-spin3:before { content: '\e832'; } /* '' */
 .icon-spin4:before { content: '\e834'; } /* '' */
 .icon-link-ext:before { content: '\f08e'; } /* '' */
@@ -89,6 +90,7 @@
 .icon-comment-empty:before { content: '\f0e5'; } /* '' */
 .icon-plus-squared:before { content: '\f0fe'; } /* '' */
 .icon-reply:before { content: '\f112'; } /* '' */
+.icon-smile:before { content: '\f118'; } /* '' */
 .icon-lock-open-alt:before { content: '\f13e'; } /* '' */
 .icon-play-circled:before { content: '\f144'; } /* '' */
 .icon-thumbs-up-alt:before { content: '\f164'; } /* '' */
diff --git a/static/font/demo.html b/static/font/demo.html
index 2c89a505..89869d27 100755
--- a/static/font/demo.html
+++ b/static/font/demo.html
@@ -229,11 +229,11 @@ body {
 }
 @font-face {
       font-family: 'fontello';
-      src: url('./font/fontello.eot?50378338');
-      src: url('./font/fontello.eot?50378338#iefix') format('embedded-opentype'),
-           url('./font/fontello.woff?50378338') format('woff'),
-           url('./font/fontello.ttf?50378338') format('truetype'),
-           url('./font/fontello.svg?50378338#fontello') format('svg');
+      src: url('./font/fontello.eot?37046490');
+      src: url('./font/fontello.eot?37046490#iefix') format('embedded-opentype'),
+           url('./font/fontello.woff?37046490') format('woff'),
+           url('./font/fontello.ttf?37046490') format('truetype'),
+           url('./font/fontello.svg?37046490#fontello') format('svg');
       font-weight: normal;
       font-style: normal;
     }
@@ -335,25 +335,29 @@ body {
       </div>
       <div class="row">
         <div class="the-icons span3" title="Code: 0xe818"><i class="demo-icon icon-pencil">&#xe818;</i> <span class="i-name">icon-pencil</span><span class="i-code">0xe818</span></div>
+        <div class="the-icons span3" title="Code: 0xe819"><i class="demo-icon icon-emo-happy">&#xe819;</i> <span class="i-name">icon-emo-happy</span><span class="i-code">0xe819</span></div>
         <div class="the-icons span3" title="Code: 0xe832"><i class="demo-icon icon-spin3 animate-spin">&#xe832;</i> <span class="i-name">icon-spin3</span><span class="i-code">0xe832</span></div>
         <div class="the-icons span3" title="Code: 0xe834"><i class="demo-icon icon-spin4 animate-spin">&#xe834;</i> <span class="i-name">icon-spin4</span><span class="i-code">0xe834</span></div>
-        <div class="the-icons span3" title="Code: 0xf08e"><i class="demo-icon icon-link-ext">&#xf08e;</i> <span class="i-name">icon-link-ext</span><span class="i-code">0xf08e</span></div>
       </div>
       <div class="row">
+        <div class="the-icons span3" title="Code: 0xf08e"><i class="demo-icon icon-link-ext">&#xf08e;</i> <span class="i-name">icon-link-ext</span><span class="i-code">0xf08e</span></div>
         <div class="the-icons span3" title="Code: 0xf08f"><i class="demo-icon icon-link-ext-alt">&#xf08f;</i> <span class="i-name">icon-link-ext-alt</span><span class="i-code">0xf08f</span></div>
         <div class="the-icons span3" title="Code: 0xf0c9"><i class="demo-icon icon-menu">&#xf0c9;</i> <span class="i-name">icon-menu</span><span class="i-code">0xf0c9</span></div>
         <div class="the-icons span3" title="Code: 0xf0e0"><i class="demo-icon icon-mail-alt">&#xf0e0;</i> <span class="i-name">icon-mail-alt</span><span class="i-code">0xf0e0</span></div>
-        <div class="the-icons span3" title="Code: 0xf0e5"><i class="demo-icon icon-comment-empty">&#xf0e5;</i> <span class="i-name">icon-comment-empty</span><span class="i-code">0xf0e5</span></div>
       </div>
       <div class="row">
+        <div class="the-icons span3" title="Code: 0xf0e5"><i class="demo-icon icon-comment-empty">&#xf0e5;</i> <span class="i-name">icon-comment-empty</span><span class="i-code">0xf0e5</span></div>
         <div class="the-icons span3" title="Code: 0xf0fe"><i class="demo-icon icon-plus-squared">&#xf0fe;</i> <span class="i-name">icon-plus-squared</span><span class="i-code">0xf0fe</span></div>
         <div class="the-icons span3" title="Code: 0xf112"><i class="demo-icon icon-reply">&#xf112;</i> <span class="i-name">icon-reply</span><span class="i-code">0xf112</span></div>
-        <div class="the-icons span3" title="Code: 0xf13e"><i class="demo-icon icon-lock-open-alt">&#xf13e;</i> <span class="i-name">icon-lock-open-alt</span><span class="i-code">0xf13e</span></div>
-        <div class="the-icons span3" title="Code: 0xf144"><i class="demo-icon icon-play-circled">&#xf144;</i> <span class="i-name">icon-play-circled</span><span class="i-code">0xf144</span></div>
+        <div class="the-icons span3" title="Code: 0xf118"><i class="demo-icon icon-smile">&#xf118;</i> <span class="i-name">icon-smile</span><span class="i-code">0xf118</span></div>
       </div>
       <div class="row">
+        <div class="the-icons span3" title="Code: 0xf13e"><i class="demo-icon icon-lock-open-alt">&#xf13e;</i> <span class="i-name">icon-lock-open-alt</span><span class="i-code">0xf13e</span></div>
+        <div class="the-icons span3" title="Code: 0xf144"><i class="demo-icon icon-play-circled">&#xf144;</i> <span class="i-name">icon-play-circled</span><span class="i-code">0xf144</span></div>
         <div class="the-icons span3" title="Code: 0xf164"><i class="demo-icon icon-thumbs-up-alt">&#xf164;</i> <span class="i-name">icon-thumbs-up-alt</span><span class="i-code">0xf164</span></div>
         <div class="the-icons span3" title="Code: 0xf1e5"><i class="demo-icon icon-binoculars">&#xf1e5;</i> <span class="i-name">icon-binoculars</span><span class="i-code">0xf1e5</span></div>
+      </div>
+      <div class="row">
         <div class="the-icons span3" title="Code: 0xf234"><i class="demo-icon icon-user-plus">&#xf234;</i> <span class="i-name">icon-user-plus</span><span class="i-code">0xf234</span></div>
       </div>
     </div>
diff --git a/static/font/font/fontello.eot b/static/font/font/fontello.eot
index a72671b0d0dfe2fc4d11a57efae27916b5d236e6..b7d4832772f373d883174af526dca1f724381a07 100755
GIT binary patch
delta 1272
zcmZuwZ%kWN6hG(P_os#OTG~gU1zM=ke{_YF+Om#x45r9L!U)kVS)d&QN&;&GsNfcB
z7GlhjG1=RqACzda=+qA;BPPT&`axnOnTcOa^ot=zlq}JdWtv3?^*o**_Q7}ad%ycT
z_ndRjJ@>t>E4XnD#f@Hoy51Er#_t8XS68~;&YQ+w_#Oan1Mrrym*yM9(*6U0qdWjK
zOynkKuB^OyhIA7^d2TX2mm|9cAn}OUFgd+AF?-+j5I|T5Xbon@)90&{n|}dBf1&kQ
zh78gsF91AQN4hC9Gr#cG)zVL-yGY-j&W`n^|M~EDKN)t&@cc}AA&2>j4=7f1Xt<D`
z8Nd6kyODGXfcrL=otrOIJo*CQNE;P>H#a+;+dke>0C@U_`W}9DQ~{(oKpEJ<EJR#J
zkqYqevzCzt9c{<46WNItuN60oTgC0-{;qYmMtz5C#2U501!y}YzoCOM4F5A!j-8VH
z5FkfUO|yq;j+L8D2Rmzx(VoCshHu5ZL)(m`lQ^OSYKfydfcjEg)&cdz*K~l3cvA<s
ziMMo6Sy0^80aRykUk7*qcC9+#3E~<ZNuZ0{P3nMV;uAW+OMG4j_=qW~2B5pRPsM4V
zGjxhmt~@K1O7F8B<^vNrAOX*IJ!9kyT7$C;k;iNq@*<xFQ4q5rNRluNf*_p+Ns#($
zopJ@j;WnSQvB8<BO(?bshwP9<FrlejP+HI<qvFCy5~E>kd|cQ(W)vkEeR*#yddaKW
z?nZmHy(u0$hOu}o>P4Zxy}mxu8F9HH_@zsugZUl1*))_H|8XKSWVW=pEu3gPcX0vn
z<%?-SWM((>`ML*se7>H6?#E_(A6ZO;Edl29511|35VA1Ac(%2b9X3WrDXcQ&hP7Kw
z4r5*@?UmNqD6@i%uCEzl&;#9F$LbZ1W7rEu5SdX-3CMWlkZ~#M6G#XtkPHTC7$nJX
z8Vr)5|9Dq*wcV!J91d%lP~U<whSBFu(iy2Av3L?)*sO>iZ<4bM#9`EyqTxK}kvSJj
zvbZ9nC(I==;zDk*Dz`kV@N%7#m-|Ofn)y1XW&hV;BE<QVUTg?<`nga?_-bP0_2oCt
zc5)r5rR$f^#rkHy-udQ&_)6iy=dU9640D4|$xfrm66)v(ndLI)wkvoLS@$1*(zldy
zbZEg#Bb|J7;?i?3Zp_bb+|ynFYlTBMgu2!4z}~32^G_&e+CL3HYy{{V)LETwk7H21
z)jq|3E0t7Jw25bDN_%Qs^rYXsZdtB$RTivH>uc7c?Xv9;<%IHGRif&W-DAI3eUnm9
xBO$o98ZBp(<m31tk3nov|BioFW*nc%9?GP1xkdHUj#HvAH#0Roe&<Na^e;m1B<27B

delta 640
zcmZXQOK1~O6o&tsNn@HcHkqbUw2#!LHTb|1(`jo(6yibyp)H7X)eOz6lGwopsi1V_
zrVG<>MT)2d1ks&32n8)f>?TkbZc1@uPy@5@F>Q4tCH16t>0Cbk`=4{qJ?GA9o>dl@
zEp`D|4i{{Sbvv@+DV$rH_YXe*1+Zs;^nL0^&S%@L{RW1L0DMU;m0c(-PLMAFPA#R*
zY7}>qUm~@qGB=Y?N^e$yhI_yXM>?U#y{|rR0l^~Wl{5wRm8}x_4f6hUHaE8z+5JL(
zhkP+JGj&n@`eQu_oO(!s@vJ(hvD>bv<W2IvYic&J_Nc2H2vJkZ2W@6HH{rVSlJ2h1
z(97EOgjPL&>@5)P=SB8@*bYW@U=~PwyW^w|s<gw3bxL&7@DlbLZAQ=tnR&BpR?Mnd
z+m!iZOE-UK33M<z6Wv>*_-}ECG^S5VO|0=-y$yXw^qlo1n-2m8frF$W0S*D?T>;uj
z^8$2`mIc%cW<`K5(y9PH(wYGD`b}AY!=z^g=phXY`rxNcT!3Cux~LBNfGrxR4$T^~
zO?T=ad)pdy*3TQ-Ju8vz$>uYE;FJu?V}nPjfl&TpV2}m4F)+<9D?R*{a>?&@xF2|i
zJoi02az?JTTx}_Nk9sq$a_gr9cc`lV=L7mr#VJwU-{DanJ^h-yM#l8`NUZ4}2$Zpy

diff --git a/static/font/font/fontello.svg b/static/font/font/fontello.svg
index 91aba5ef..2c1ee1f4 100755
--- a/static/font/font/fontello.svg
+++ b/static/font/font/fontello.svg
@@ -56,6 +56,8 @@
 
 <glyph glyph-name="pencil" unicode="&#xe818;" d="M203 0l50 51-131 131-51-51v-60h72v-71h60z m291 518q0 12-12 12-5 0-9-4l-303-302q-4-4-4-10 0-12 13-12 5 0 9 4l303 302q3 4 3 10z m-30 107l232-232-464-465h-232v233z m381-54q0-29-20-50l-93-93-232 233 93 92q20 21 50 21 29 0 51-21l131-131q20-22 20-51z" horiz-adv-x="857.1" />
 
+<glyph glyph-name="emo-happy" unicode="&#xe819;" d="M261 807c-60 0-109-65-109-144 0-80 49-145 109-145s110 65 110 145c0 79-49 144-110 144z m477 0c-61 0-110-65-110-144 0-80 49-145 110-145 60 0 110 65 110 145 0 79-50 144-110 144z m208-599c-13 0-27-5-37-16-4-4-8-8-12-12-111-109-253-164-396-165-142-2-285 50-396 155l-3 3-12 12c-21 21-54 20-75-1-20-21-20-55 1-76 3-4 8-8 14-14l3-3c132-124 301-186 469-184 169 1 337 67 468 195 5 5 9 10 14 14 20 22 20 56-1 77-10 10-23 15-37 15z" horiz-adv-x="999" />
+
 <glyph glyph-name="spin3" unicode="&#xe832;" d="M494 857c-266 0-483-210-494-472-1-19 13-20 13-20l84 0c16 0 19 10 19 18 10 199 176 358 378 358 107 0 205-45 273-118l-58-57c-11-12-11-27 5-31l247-50c21-5 46 11 37 44l-58 227c-2 9-16 22-29 13l-65-60c-89 91-214 148-352 148z m409-508c-16 0-19-10-19-18-10-199-176-358-377-358-108 0-205 45-274 118l59 57c10 12 10 27-5 31l-248 50c-21 5-46-11-37-44l58-227c2-9 16-22 30-13l64 60c89-91 214-148 353-148 265 0 482 210 493 473 1 18-13 19-13 19l-84 0z" horiz-adv-x="1000" />
 
 <glyph glyph-name="spin4" unicode="&#xe834;" d="M498 857c-114 0-228-39-320-116l0 0c173 140 428 130 588-31 134-134 164-332 89-495-10-29-5-50 12-68 21-20 61-23 84 0 3 3 12 15 15 24 71 180 33 393-112 539-99 98-228 147-356 147z m-409-274c-14 0-29-5-39-16-3-3-13-15-15-24-71-180-34-393 112-539 185-185 479-195 676-31l0 0c-173-140-428-130-589 31-134 134-163 333-89 495 11 29 6 50-12 68-11 11-27 17-44 16z" horiz-adv-x="1001" />
@@ -74,6 +76,8 @@
 
 <glyph glyph-name="reply" unicode="&#xf112;" d="M1000 232q0-93-71-252-1-4-6-13t-7-17-7-12q-7-10-16-10-8 0-13 6t-5 14q0 5 1 15t2 13q3 38 3 69 0 56-10 101t-27 77-45 56-59 39-74 24-86 12-98 3h-125v-143q0-14-10-25t-26-11-25 11l-285 286q-11 10-11 25t11 25l285 286q11 10 25 10t26-10 10-25v-143h125q398 0 488-225 30-75 30-186z" horiz-adv-x="1000" />
 
+<glyph glyph-name="smile" unicode="&#xf118;" d="M633 257q-21-67-77-109t-127-41-128 41-77 109q-4 14 3 27t21 18q14 4 27-2t17-22q14-44 52-72t85-28 84 28 52 72q4 15 18 22t27 2 21-18 2-27z m-276 243q0-30-21-51t-50-21-51 21-21 51 21 50 51 21 50-21 21-50z m286 0q0-30-21-51t-51-21-50 21-21 51 21 50 50 21 51-21 21-50z m143-143q0 73-29 139t-76 114-114 76-138 28-139-28-114-76-76-114-29-139 29-139 76-113 114-77 139-28 138 28 114 77 76 113 29 139z m71 0q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+
 <glyph glyph-name="lock-open-alt" unicode="&#xf13e;" d="M589 428q23 0 38-15t16-38v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v179q0 103 74 177t176 73 177-73 73-177q0-14-10-25t-25-11h-36q-14 0-25 11t-11 25q0 59-42 101t-101 42-101-42-41-101v-179h410z" horiz-adv-x="642.9" />
 
 <glyph glyph-name="play-circled" unicode="&#xf144;" d="M429 786q116 0 215-58t156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58z m214-460q18 10 18 31t-18 31l-304 178q-17 11-35 1-18-11-18-31v-358q0-20 18-31 9-4 17-4 10 0 18 5z" horiz-adv-x="857.1" />
diff --git a/static/font/font/fontello.ttf b/static/font/font/fontello.ttf
index 9d36bc11823cf06fd839b4e954b8710de81bd438..8c337900b1c8c34988be2dee417e2bbb59921346 100755
GIT binary patch
delta 1265
zcmZvbe@t6d6vxkbKU*kmX&;3acr6{YrR@qUwXGfL7~l^k5=MwJvp_p2l!UGgpn_Yh
zS%{e?V?WB`KWbu3bjH6XF(HPiiNr`U6aO*Mf6QV;n<bi-;Ic%Zp2zc#{o%X$zRx}P
z-gED{=ia;V7QVZRH#+mW$rpbFz&ik(aq^W#hfq1(131Y6fMYs0lX?5*jdNtT0#xT_
zk_$O%Hv+`=iJF<Y<>~od`4IrW0np)1r;<~3((Q);q2H)KoTdhGo8tkVXd=5compIZ
z=UU|#vU|wBGnbtlNdEKjpB`!`Qo{?G<WdgvH6M|$GQe>$nMvJy&)!0I0)Y8Gmt9!g
ztl9q(;K@!3`d)56mD@S(+XQ%e?dGFzPD+5}2B-)2sOBeDk)s40{Hjbyg?3i77K6o5
z>3V6qbicGyIxL&Y4TU{ysc9(3%l+l4^3HCkQYqYJ>~<uNk)tvS|5FMtF=s^&w9}fx
zhj$q?(IUE|5R?QdU;FykYzOA8%Bp1Ah(T4*NDQe0%1>!k6*LpCs{)z0tqSbK`>H4^
zDD9|%7UH2QZ~~Mm2t{y=*q|y7bb#f!Drh72s{$8sN)@<?G^rw>Gufr!6ww~m_*ps6
zRw|Vb*dptuEm|Q4&-Fa3Wi(2rvn(Qq*(&4&E(-!LWPuk&eiV3K90QRT2ODkr8iW&_
zZdZ%L7Hf=2<{GQsDhi-OT{SQH(5XjB#$X&n0c?5PFgpz>h<bGAT^;D6QS}x(TIwyW
zk?<)DN5UZ&^37e%&B5-VEC=x`S;0~LGmAktl1}|RogOh5eRd-wXfIq^LVWd7k{4Km
zoprl=hx**^zM<a7Y6qVfb;G`P*6kTG7}4Q3vb^?uM+bXC8=N4wTE89E_m5e%dA@Q`
z*<dGF6PW4v+8_*l(A#sWSz;I#p8+ihtX4?y$a2Ua%OsQ=DIz35)M&&}5Jk-xXhhB6
z>7M#}i&-*Tt)?oz*@t=zpxYIvJyJfxkvPiOCJ9bgoU!o404iOfK%Q~x8JUf<5lN5E
z029ZcjLdRfZgpPb^i4KSKRABIz%|*7hrfGce#R4bp~KtlVf@j+wb=NZt5?r=GttD#
ztt%J81M}Y&zq=^Bwz>Dk>xg}$%<xlsn^tG^N27j&zRI>EdyhPu{^O?uD+y~<ab6kk
z=0ek#pMQC4adGQ`@&j0xj<4}e@AtMJOc=WVhH6%M+wjv?JKaH*g{@!&y@mbYEc*vN
zw5hIEjy+d7C|vD2<1uU)S8L_kO_R;^hN)z}V*X3&mwu>=)m^qYEf4B%(-f3Q@UB1X
rs%B{tCNj*S7k!11$mdnsR3>{ooy_Hy3u5%Fz%OKG=Thrq(S+__y6Gqt

delta 636
zcmZXRT}V@59LAq>j?=YiZgYl}A2X+|FO;>ZlZXNdN)YuXc2!IFVQhKG5q1$?bx{{O
zc_ShW27%N?7d3)G21ect47v!BZW`5K7ez<=po=kkw)e90@;lG_y#Mq6;JnKVO7@PD
z>YH~DJpBPEPXO)P<c*}OcDMWs7)%3jMf7Om?ouj9zXn+KXlPdFxsCn-)f|oAj67a@
zwGNo>0Vgc6aA?Z;;?oY`O*7sf<3U}nMx)=NcgGURxzxz+XZjL-IzBUbKJ?}LW&}97
z%!7$UXiisdHLTDZ^sZ~6M0n#-M<?K8Q}vxbGn))HTzt;jc@CY`uZQ)**<-7~aNpA3
zw*fO0ra@7mRd>g!7ABfegG~n7IlG3v#g?MC=rb0LoRK#QMtR#I{wSSdzv^jI_|0f_
zjp4r~uBhWITr1wFCGlRZYpkz!`&xPPIh@(hdX;%EP$W1&^+|9LFcu_er7lX)M$Jjs
z7)D-#4r)OH7qu(_|HQUKf<x5P5_D0AB|UI+GbKScm4zyx2iW026*z0wG~J##(%rHr
z6YLeHR{QIbpO+d>{f1R5GL9`V$_7$}**~Co#2Npzc;@dCAN&{GHjC|{eb9d2UUI}8
t<)*7mYtEz2c(bGV<G$O>s$7F7bFSa2F>fL;CRPG3MR;gDvpRIS{vXK9uAKk?

diff --git a/static/font/font/fontello.woff b/static/font/font/fontello.woff
index 35eea15d73495423f65271dfa0d9dbc0459951cb..592f528e1147196dcce7a5314bf8ad6299001624 100755
GIT binary patch
delta 8957
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
Su{^;m7Y5RSKuKYY{{I6m<{E_n

delta 8526
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
BRDS>f

diff --git a/static/font/font/fontello.woff2 b/static/font/font/fontello.woff2
index c88c4b24f60e58032feb8176557ed610cd47b99d..6d82e24d4ef7844b588560fe2b29fcb0a71f83d4 100755
GIT binary patch
literal 9460
zcmV<QBn#VjPew8T0RR9103`GP4*&oF07o1E03?|J0RR9100000000000000000000
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
GVE_n^6mjqX

literal 9148
zcmV;tBSYMGPew8T0RR9103*Br4*&oF07SR|03%`m0RR9100000000000000000000
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
G0002L)|8(B


From 79efe0646cb6fc88952e33e13a8ce61205d3aad6 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Tue, 2 Apr 2019 10:53:33 -0400
Subject: [PATCH 05/81] merge develop

---
 BREAKING_CHANGES.md                           |  10 +
 README.md                                     |   2 +-
 src/App.js                                    |  27 +-
 src/App.scss                                  |  32 --
 src/App.vue                                   |  11 +-
 src/boot/after_store.js                       |  50 ++-
 .../features_panel/features_panel.js          |   2 +-
 .../features_panel/features_panel.vue         |   2 +-
 src/components/mobile_nav/mobile_nav.js       |  77 ++++
 src/components/mobile_nav/mobile_nav.vue      | 140 ++++++++
 src/components/notification/notification.js   |   9 +
 src/components/notification/notification.vue  |   4 +-
 src/components/notifications/notifications.js |   3 +
 .../notifications/notifications.vue           |   2 +-
 .../post_status_form/post_status_form.js      |  25 +-
 .../post_status_form/post_status_form.vue     |  12 +-
 .../scope_selector/scope_selector.js          |  54 +++
 .../scope_selector/scope_selector.vue         |  30 ++
 src/components/settings/settings.js           |  10 +-
 src/components/settings/settings.vue          |   6 +
 src/components/side_drawer/side_drawer.vue    |   5 -
 src/components/status/status.js               |   6 +
 src/components/status/status.vue              |  14 +-
 src/components/user_profile/user_profile.js   |   3 -
 src/components/user_settings/user_settings.js |   6 +-
 .../user_settings/user_settings.vue           |  10 +-
 src/i18n/en.json                              |   5 +-
 src/i18n/oc.json                              |   2 +
 src/i18n/pl.json                              | 332 +++++++++++++++++-
 src/i18n/ru.json                              |  10 +
 src/modules/config.js                         |   3 +-
 src/modules/instance.js                       |   2 +-
 src/modules/interface.js                      |  10 +-
 src/modules/statuses.js                       |  11 +-
 .../user_profile_link_generator.js            |   2 +-
 src/services/window_utils/window_utils.js     |   5 +
 static/config.json                            |   4 +-
 static/font/LICENSE.txt                       |   0
 static/font/README.txt                        |   0
 static/font/config.json                       |   6 +
 static/font/css/fontello-codes.css            |   1 +
 static/font/css/fontello-embedded.css         |  13 +-
 static/font/css/fontello-ie7-codes.css        |   1 +
 static/font/css/fontello-ie7.css              |   1 +
 static/font/css/fontello.css                  |  15 +-
 static/font/demo.html                         |  15 +-
 static/font/font/fontello.eot                 | Bin 18372 -> 18720 bytes
 static/font/font/fontello.svg                 |   2 +
 static/font/font/fontello.ttf                 | Bin 18204 -> 18552 bytes
 static/font/font/fontello.woff                | Bin 11180 -> 11296 bytes
 static/font/font/fontello.woff2               | Bin 9460 -> 9592 bytes
 51 files changed, 835 insertions(+), 157 deletions(-)
 create mode 100644 BREAKING_CHANGES.md
 create mode 100644 src/components/mobile_nav/mobile_nav.js
 create mode 100644 src/components/mobile_nav/mobile_nav.vue
 create mode 100644 src/components/scope_selector/scope_selector.js
 create mode 100644 src/components/scope_selector/scope_selector.vue
 create mode 100644 src/services/window_utils/window_utils.js
 mode change 100755 => 100644 static/font/LICENSE.txt
 mode change 100755 => 100644 static/font/README.txt

diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md
new file mode 100644
index 00000000..924c38da
--- /dev/null
+++ b/BREAKING_CHANGES.md
@@ -0,0 +1,10 @@
+# v1.0
+## Removed features/radically changed behavior
+### minimalScopesMode
+As of !633, `scopeOptions` is no longer available and instead is changed for `minimalScopesMode` (default: `false`)
+
+Reasoning is that scopeOptions option originally existed mostly as a backwards-compatibility with GNU Social which only had `public` scope available and using scope selector would''t work. Since at some point we dropped GNU Social support, this option was mostly a nuisance (being default `false`'), however some people think scopes are an annoyance to a certain degree and want as less of that feature as possible.
+
+Solution - to only show minimal set among: *Direct*, *User default* and *Scope of post replying to*. This also makes it impossible to reply to a DM with a non-DM post from UI.
+
+*This setting is admin-default, user-configurable. Admin can choose different default for their instance but user can override it.*
diff --git a/README.md b/README.md
index 80938c45..889f0837 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ FE Build process also leaves current commit hash in global variable `___pleromaf
 
 # Configuration
 
-Edit config.json for configuration. scopeOptionsEnabled gives you input fields for CWs and the scope settings.
+Edit config.json for configuration.
 
 ## Options
 
diff --git a/src/App.js b/src/App.js
index 5c27a3df..46145b16 100644
--- a/src/App.js
+++ b/src/App.js
@@ -9,7 +9,8 @@ import ChatPanel from './components/chat_panel/chat_panel.vue'
 import MediaModal from './components/media_modal/media_modal.vue'
 import SideDrawer from './components/side_drawer/side_drawer.vue'
 import MobilePostStatusModal from './components/mobile_post_status_modal/mobile_post_status_modal.vue'
-import { unseenNotificationsFromStore } from './services/notification_utils/notification_utils'
+import MobileNav from './components/mobile_nav/mobile_nav.vue'
+import { windowWidth } from './services/window_utils/window_utils'
 
 export default {
   name: 'app',
@@ -24,7 +25,8 @@ export default {
     ChatPanel,
     MediaModal,
     SideDrawer,
-    MobilePostStatusModal
+    MobilePostStatusModal,
+    MobileNav
   },
   data: () => ({
     mobileActivePanel: 'timeline',
@@ -40,6 +42,10 @@ export default {
   created () {
     // Load the locale from the storage
     this.$i18n.locale = this.$store.state.config.interfaceLanguage
+    window.addEventListener('resize', this.updateMobileState)
+  },
+  destroyed () {
+    window.removeEventListener('resize', this.updateMobileState)
   },
   computed: {
     currentUser () { return this.$store.state.users.currentUser },
@@ -82,13 +88,8 @@ export default {
     chat () { return this.$store.state.chat.channel.state === 'joined' },
     suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },
     showInstanceSpecificPanel () { return this.$store.state.instance.showInstanceSpecificPanel },
-    unseenNotifications () {
-      return unseenNotificationsFromStore(this.$store)
-    },
-    unseenNotificationsCount () {
-      return this.unseenNotifications.length
-    },
-    showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel }
+    showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },
+    isMobileLayout () { return this.$store.state.interface.mobileLayout }
   },
   methods: {
     scrollToTop () {
@@ -101,8 +102,12 @@ export default {
     onFinderToggled (hidden) {
       this.finderHidden = hidden
     },
-    toggleMobileSidebar () {
-      this.$refs.sideDrawer.toggleDrawer()
+    updateMobileState () {
+      const mobileLayout = windowWidth() <= 800
+      const changed = mobileLayout !== this.isMobileLayout
+      if (changed) {
+        this.$store.dispatch('setMobileLayout', mobileLayout)
+      }
     }
   }
 }
diff --git a/src/App.scss b/src/App.scss
index ae068e4f..5fc0dd27 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -484,24 +484,6 @@ nav {
   }
 }
 
-.menu-button {
-  display: none;
-  position: relative;
-}
-
-.alert-dot {
-  border-radius: 100%;
-  height: 8px;
-  width: 8px;
-  position: absolute;
-  left: calc(50% - 4px);
-  top: calc(50% - 4px);
-  margin-left: 6px;
-  margin-top: -6px;
-  background-color: $fallback--cRed;
-  background-color: var(--badgeNotification, $fallback--cRed);
-}
-
 .fade-enter-active, .fade-leave-active {
   transition: opacity .2s
 }
@@ -530,20 +512,6 @@ nav {
   display: none;
 }
 
-.panel-switcher {
-  display: none;
-  width: 100%;
-  height: 46px;
-
-  button {
-    display: block;
-    flex: 1;
-    max-height: 32px;
-    margin: 0.5em;
-    padding: 0.5em;
-  }
-}
-
 @media all and (min-width: 800px) {
   body {
     overflow-y: scroll;
diff --git a/src/App.vue b/src/App.vue
index 4fff3d1d..3b8623ad 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,17 +1,14 @@
 <template>
   <div id="app" v-bind:style="bgAppStyle">
     <div class="app-bg-wrapper" v-bind:style="bgStyle"></div>
-    <nav class='nav-bar container' @click="scrollToTop()" id="nav">
+    <MobileNav v-if="isMobileLayout" />
+    <nav v-else class='nav-bar container' @click="scrollToTop()" id="nav">
       <div class='logo' :style='logoBgStyle'>
         <div class='mask' :style='logoMaskStyle'></div>
         <img :src='logo' :style='logoStyle'>
       </div>
       <div class='inner-nav'>
         <div class='item'>
-          <a href="#" class="menu-button" @click.stop.prevent="toggleMobileSidebar()">
-            <i class="button-icon icon-menu"></i>
-            <div class="alert-dot" v-if="unseenNotificationsCount"></div>
-          </a>
           <router-link class="site-name" :to="{ name: 'root' }" active-class="home">{{sitename}}</router-link>
         </div>
         <div class='item right'>
@@ -22,8 +19,7 @@
       </div>
     </nav>
     <div v-if="" class="container" id="content">
-      <side-drawer ref="sideDrawer" :logout="logout"></side-drawer>
-      <div class="sidebar-flexer mobile-hidden">
+      <div class="sidebar-flexer mobile-hidden" v-if="!isMobileLayout">
         <div class="sidebar-bounds">
           <div class="sidebar-scroller">
             <div class="sidebar">
@@ -50,7 +46,6 @@
       <media-modal></media-modal>
     </div>
     <chat-panel :floating="true" v-if="currentUser && chat" class="floating-chat mobile-hidden"></chat-panel>
-    <MobilePostStatusModal />
   </div>
 </template>
 
diff --git a/src/boot/after_store.js b/src/boot/after_store.js
index f5add8ad..862a534d 100644
--- a/src/boot/after_store.js
+++ b/src/boot/after_store.js
@@ -1,8 +1,8 @@
 import Vue from 'vue'
 import VueRouter from 'vue-router'
 import routes from './routes'
-
 import App from '../App.vue'
+import { windowWidth } from '../services/window_utils/window_utils'
 
 const getStatusnetConfig = async ({ store }) => {
   try {
@@ -95,7 +95,7 @@ const setSettings = async ({ apiConfig, staticConfig, store }) => {
   copyInstanceOption('redirectRootNoLogin')
   copyInstanceOption('redirectRootLogin')
   copyInstanceOption('showInstanceSpecificPanel')
-  copyInstanceOption('scopeOptionsEnabled')
+  copyInstanceOption('minimalScopesMode')
   copyInstanceOption('formattingOptionsEnabled')
   copyInstanceOption('hideMutedPosts')
   copyInstanceOption('collapseMessageWithSubject')
@@ -219,6 +219,28 @@ const getNodeInfo = async ({ store }) => {
   }
 }
 
+const setConfig = async ({ store }) => {
+  // apiConfig, staticConfig
+  const configInfos = await Promise.all([getStatusnetConfig({ store }), getStaticConfig()])
+  const apiConfig = configInfos[0]
+  const staticConfig = configInfos[1]
+
+  await setSettings({ store, apiConfig, staticConfig })
+}
+
+const checkOAuthToken = async ({ store }) => {
+  return new Promise(async (resolve, reject) => {
+    if (store.state.oauth.token) {
+      try {
+        await store.dispatch('loginUser', store.state.oauth.token)
+      } catch (e) {
+        console.log(e)
+      }
+    }
+    resolve()
+  })
+}
+
 const afterStoreSetup = async ({ store, i18n }) => {
   if (store.state.config.customTheme) {
     // This is a hack to deal with async loading of config.json and themes
@@ -230,19 +252,19 @@ const afterStoreSetup = async ({ store, i18n }) => {
     })
   }
 
-  const apiConfig = await getStatusnetConfig({ store })
-  const staticConfig = await getStaticConfig()
-  await setSettings({ store, apiConfig, staticConfig })
-  await getTOS({ store })
-  await getInstancePanel({ store })
-  await getStaticEmoji({ store })
-  await getCustomEmoji({ store })
-  await getNodeInfo({ store })
+  const width = windowWidth()
+  store.dispatch('setMobileLayout', width <= 800)
 
-  // Now we have the server settings and can try logging in
-  if (store.state.oauth.token) {
-    await store.dispatch('loginUser', store.state.oauth.token)
-  }
+  // Now we can try getting the server settings and logging in
+  await Promise.all([
+    checkOAuthToken({ store }),
+    setConfig({ store }),
+    getTOS({ store }),
+    getInstancePanel({ store }),
+    getStaticEmoji({ store }),
+    getCustomEmoji({ store }),
+    getNodeInfo({ store })
+  ])
 
   const router = new VueRouter({
     mode: 'history',
diff --git a/src/components/features_panel/features_panel.js b/src/components/features_panel/features_panel.js
index e0b7a118..5f0b7b25 100644
--- a/src/components/features_panel/features_panel.js
+++ b/src/components/features_panel/features_panel.js
@@ -6,7 +6,7 @@ const FeaturesPanel = {
     gopher: function () { return this.$store.state.instance.gopherAvailable },
     whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },
     mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },
-    scopeOptions: function () { return this.$store.state.instance.scopeOptionsEnabled },
+    minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },
     textlimit: function () { return this.$store.state.instance.textlimit }
   }
 }
diff --git a/src/components/features_panel/features_panel.vue b/src/components/features_panel/features_panel.vue
index 445143e9..7a263e01 100644
--- a/src/components/features_panel/features_panel.vue
+++ b/src/components/features_panel/features_panel.vue
@@ -12,7 +12,7 @@
           <li v-if="gopher">{{$t('features_panel.gopher')}}</li>
           <li v-if="whoToFollow">{{$t('features_panel.who_to_follow')}}</li>
           <li v-if="mediaProxy">{{$t('features_panel.media_proxy')}}</li>
-          <li v-if="scopeOptions">{{$t('features_panel.scope_options')}}</li>
+          <li>{{$t('features_panel.scope_options')}}</li>
           <li>{{$t('features_panel.text_limit')}} = {{textlimit}}</li>
         </ul>
       </div>
diff --git a/src/components/mobile_nav/mobile_nav.js b/src/components/mobile_nav/mobile_nav.js
new file mode 100644
index 00000000..bc63d2ba
--- /dev/null
+++ b/src/components/mobile_nav/mobile_nav.js
@@ -0,0 +1,77 @@
+import SideDrawer from '../side_drawer/side_drawer.vue'
+import Notifications from '../notifications/notifications.vue'
+import MobilePostStatusModal from '../mobile_post_status_modal/mobile_post_status_modal.vue'
+import { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'
+import GestureService from '../../services/gesture_service/gesture_service'
+
+const MobileNav = {
+  components: {
+    SideDrawer,
+    Notifications,
+    MobilePostStatusModal
+  },
+  data: () => ({
+    notificationsCloseGesture: undefined,
+    notificationsOpen: false
+  }),
+  created () {
+    this.notificationsCloseGesture = GestureService.swipeGesture(
+      GestureService.DIRECTION_RIGHT,
+      this.closeMobileNotifications,
+      50
+    )
+  },
+  computed: {
+    currentUser () {
+      return this.$store.state.users.currentUser
+    },
+    unseenNotifications () {
+      return unseenNotificationsFromStore(this.$store)
+    },
+    unseenNotificationsCount () {
+      return this.unseenNotifications.length
+    },
+    sitename () { return this.$store.state.instance.name }
+  },
+  methods: {
+    toggleMobileSidebar () {
+      this.$refs.sideDrawer.toggleDrawer()
+    },
+    openMobileNotifications () {
+      this.notificationsOpen = true
+    },
+    closeMobileNotifications () {
+      if (this.notificationsOpen) {
+        // make sure to mark notifs seen only when the notifs were open and not
+        // from close-calls.
+        this.notificationsOpen = false
+        this.markNotificationsAsSeen()
+      }
+    },
+    notificationsTouchStart (e) {
+      GestureService.beginSwipe(e, this.notificationsCloseGesture)
+    },
+    notificationsTouchMove (e) {
+      GestureService.updateSwipe(e, this.notificationsCloseGesture)
+    },
+    scrollToTop () {
+      window.scrollTo(0, 0)
+    },
+    logout () {
+      this.$router.replace('/main/public')
+      this.$store.dispatch('logout')
+    },
+    markNotificationsAsSeen () {
+      this.$refs.notifications.markAsSeen()
+    }
+  },
+  watch: {
+    $route () {
+      // handles closing notificaitons when you press any router-link on the
+      // notifications.
+      this.closeMobileNotifications()
+    }
+  }
+}
+
+export default MobileNav
diff --git a/src/components/mobile_nav/mobile_nav.vue b/src/components/mobile_nav/mobile_nav.vue
new file mode 100644
index 00000000..5fa41638
--- /dev/null
+++ b/src/components/mobile_nav/mobile_nav.vue
@@ -0,0 +1,140 @@
+<template>
+  <nav class='nav-bar container' id="nav">
+    <div class='mobile-inner-nav' @click="scrollToTop()">
+      <div class='item'>
+        <a href="#" class="mobile-nav-button" @click.stop.prevent="toggleMobileSidebar()">
+          <i class="button-icon icon-menu"></i>
+        </a>
+        <router-link class="site-name" :to="{ name: 'root' }" active-class="home">{{sitename}}</router-link>
+      </div>
+      <div class='item right'>
+        <a class="mobile-nav-button" v-if="currentUser" href="#" @click.stop.prevent="openMobileNotifications()">
+          <i class="button-icon icon-bell-alt"></i>
+          <div class="alert-dot" v-if="unseenNotificationsCount"></div>
+        </a>
+      </div>
+    </div>
+    <SideDrawer ref="sideDrawer" :logout="logout"/>
+    <div v-if="currentUser"
+      class="mobile-notifications-drawer"
+      :class="{ 'closed': !notificationsOpen }"
+      @touchstart="notificationsTouchStart"
+      @touchmove="notificationsTouchMove"
+    >
+      <div class="mobile-notifications-header">
+        <span class="title">{{$t('notifications.notifications')}}</span>
+        <a class="mobile-nav-button" @click.stop.prevent="closeMobileNotifications()">
+          <i class="button-icon icon-cancel"/>
+        </a>
+      </div>
+      <div v-if="currentUser" class="mobile-notifications">
+        <Notifications ref="notifications" noHeading="true"/>
+      </div>
+    </div>
+    <MobilePostStatusModal />
+  </nav>
+</template>
+
+<script src="./mobile_nav.js"></script>
+
+<style lang="scss">
+@import '../../_variables.scss';
+
+.mobile-inner-nav {
+  width: 100%;
+  display: flex;
+  align-items: center;
+}
+
+.mobile-nav-button {
+  display: flex;
+  justify-content: center;
+  width: 50px;
+  position: relative;
+  cursor: pointer;
+}
+
+.alert-dot {
+  border-radius: 100%;
+  height: 8px;
+  width: 8px;
+  position: absolute;
+  left: calc(50% - 4px);
+  top: calc(50% - 4px);
+  margin-left: 6px;
+  margin-top: -6px;
+  background-color: $fallback--cRed;
+  background-color: var(--badgeNotification, $fallback--cRed);
+}
+
+.mobile-notifications-drawer {
+  width: 100%;
+  height: 100vh;
+  overflow-x: hidden;
+  position: fixed;
+  top: 0;
+  left: 0;
+  box-shadow: 1px 1px 4px rgba(0,0,0,.6);
+  box-shadow: var(--panelShadow);
+  transition-property: transform;
+  transition-duration: 0.25s;
+  transform: translateX(0);
+
+  &.closed {
+    transform: translateX(100%);
+  }
+}
+
+.mobile-notifications-header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  z-index: 1;
+  width: 100%;
+  height: 50px;
+  line-height: 50px;
+  position: absolute;
+  color: var(--topBarText);
+  background-color: $fallback--fg;
+  background-color: var(--topBar, $fallback--fg);
+  box-shadow: 0px 0px 4px rgba(0,0,0,.6);
+  box-shadow: var(--topBarShadow);
+
+  .title {
+    font-size: 1.3em;
+    margin-left: 0.6em;
+  }
+}
+
+.mobile-notifications {
+  margin-top: 50px;
+  width: 100vw;
+  height: calc(100vh - 50px);
+  overflow-x: hidden;
+  overflow-y: scroll;
+
+  color: $fallback--text;
+  color: var(--text, $fallback--text);
+  background-color: $fallback--bg;
+  background-color: var(--bg, $fallback--bg);
+
+  .notifications {
+    padding: 0;
+    border-radius: 0;
+    box-shadow: none;
+    .panel {
+      border-radius: 0;
+      margin: 0;
+      box-shadow: none;
+    }
+    .panel:after {
+      border-radius: 0;
+    }
+    .panel .panel-heading {
+      border-radius: 0;
+      box-shadow: none;
+    }
+  }
+}
+
+</style>
diff --git a/src/components/notification/notification.js b/src/components/notification/notification.js
index fe5b7018..42a48f3f 100644
--- a/src/components/notification/notification.js
+++ b/src/components/notification/notification.js
@@ -31,6 +31,15 @@ const Notification = {
       const highlight = this.$store.state.config.highlight
       const user = this.notification.action.user
       return highlightStyle(highlight[user.screen_name])
+    },
+    userInStore () {
+      return this.$store.getters.findUser(this.notification.action.user.id)
+    },
+    user () {
+      if (this.userInStore) {
+        return this.userInStore
+      }
+      return {}
     }
   }
 }
diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue
index 5e9cef97..8f532747 100644
--- a/src/components/notification/notification.vue
+++ b/src/components/notification/notification.vue
@@ -1,11 +1,11 @@
 <template>
   <status v-if="notification.type === 'mention'" :compact="true" :statusoid="notification.status"></status>
-  <div class="non-mention" :class="[userClass, { highlighted: userStyle }]" :style="[ userStyle ]"v-else>
+  <div class="non-mention" :class="[userClass, { highlighted: userStyle }]" :style="[ userStyle ]" v-else>
     <a class='avatar-container' :href="notification.action.user.statusnet_profile_url" @click.stop.prevent.capture="toggleUserExpanded">
       <UserAvatar :compact="true" :betterShadow="betterShadow" :src="notification.action.user.profile_image_url_original"/>
     </a>
     <div class='notification-right'>
-      <UserCard :user="notification.action.user" :rounded="true" :bordered="true" v-if="userExpanded"/>
+      <UserCard :user="user" :rounded="true" :bordered="true" v-if="userExpanded"/>
       <span class="notification-details">
         <div class="name-and-action">
           <span class="username" v-if="!!notification.action.user.name_html" :title="'@'+notification.action.user.screen_name" v-html="notification.action.user.name_html"></span>
diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js
index 9fc5e38a..d3db4b29 100644
--- a/src/components/notifications/notifications.js
+++ b/src/components/notifications/notifications.js
@@ -7,6 +7,9 @@ import {
 } from '../../services/notification_utils/notification_utils.js'
 
 const Notifications = {
+  props: [
+    'noHeading'
+  ],
   created () {
     const store = this.$store
     const credentials = store.state.users.currentUser.credentials
diff --git a/src/components/notifications/notifications.vue b/src/components/notifications/notifications.vue
index 6f162b62..634a03ac 100644
--- a/src/components/notifications/notifications.vue
+++ b/src/components/notifications/notifications.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="notifications">
     <div class="panel panel-default">
-      <div class="panel-heading">
+      <div v-if="!noHeading" class="panel-heading">
         <div class="title">
           {{$t('notifications.notifications')}}
           <span class="badge badge-notification unseen-count" v-if="unseenCount">{{unseenCount}}</span>
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 229aefb7..40e2610e 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -1,5 +1,6 @@
 import statusPoster from '../../services/status_poster/status_poster.service.js'
 import MediaUpload from '../media_upload/media_upload.vue'
+import ScopeSelector from '../scope_selector/scope_selector.vue'
 import EmojiInput from '../emoji-input/emoji-input.vue'
 import fileTypeService from '../../services/file_type/file_type.service.js'
 import Completion from '../../services/completion/completion.js'
@@ -30,6 +31,7 @@ const PostStatusForm = {
   ],
   components: {
     MediaUpload,
+    ScopeSelector,
     EmojiInput
   },
   mounted () {
@@ -80,14 +82,6 @@ const PostStatusForm = {
     }
   },
   computed: {
-    vis () {
-      return {
-        public: { selected: this.newStatus.visibility === 'public' },
-        unlisted: { selected: this.newStatus.visibility === 'unlisted' },
-        private: { selected: this.newStatus.visibility === 'private' },
-        direct: { selected: this.newStatus.visibility === 'direct' }
-      }
-    },
     candidates () {
       const firstchar = this.textAtCaret.charAt(0)
       if (firstchar === '@') {
@@ -135,6 +129,15 @@ const PostStatusForm = {
     users () {
       return this.$store.state.users.users
     },
+    userDefaultScope () {
+      return this.$store.state.users.currentUser.default_scope
+    },
+    showAllScopes () {
+      const minimalScopesMode = typeof this.$store.state.config.minimalScopesMode === 'undefined'
+            ? this.$store.state.instance.minimalScopesMode
+            : this.$store.state.config.minimalScopesMode
+      return !minimalScopesMode
+    },
     emoji () {
       return this.$store.state.instance.emoji || []
     },
@@ -159,8 +162,8 @@ const PostStatusForm = {
     isOverLengthLimit () {
       return this.hasStatusLengthLimit && (this.charactersLeft < 0)
     },
-    scopeOptionsEnabled () {
-      return this.$store.state.instance.scopeOptionsEnabled
+    minimalScopesMode () {
+      return this.$store.state.instance.minimalScopesMode
     },
     alwaysShowSubject () {
       if (typeof this.$store.state.config.alwaysShowSubjectInput !== 'undefined') {
@@ -168,7 +171,7 @@ const PostStatusForm = {
       } else if (typeof this.$store.state.instance.alwaysShowSubjectInput !== 'undefined') {
         return this.$store.state.instance.alwaysShowSubjectInput
       } else {
-        return this.$store.state.instance.scopeOptionsEnabled
+        return true
       }
     },
     formattingOptionsEnabled () {
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 9f9f16ba..3d3a1082 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -48,12 +48,12 @@
           </label>
         </span>
 
-        <div v-if="scopeOptionsEnabled">
-          <i v-on:click="changeVis('direct')" class="icon-mail-alt" :class="vis.direct" :title="$t('post_status.scope.direct')"></i>
-          <i v-on:click="changeVis('private')" class="icon-lock" :class="vis.private" :title="$t('post_status.scope.private')"></i>
-          <i v-on:click="changeVis('unlisted')" class="icon-lock-open-alt" :class="vis.unlisted" :title="$t('post_status.scope.unlisted')"></i>
-          <i v-on:click="changeVis('public')" class="icon-globe" :class="vis.public" :title="$t('post_status.scope.public')"></i>
-        </div>
+        <scope-selector
+          :showAll="showAllScopes"
+          :userDefault="userDefaultScope"
+          :originalScope="copyMessageScope"
+          :initialScope="newStatus.visibility"
+          :onScopeChange="changeVis"/>
       </div>
     </div>
     <div class="autocomplete-panel" v-if="candidates">
diff --git a/src/components/scope_selector/scope_selector.js b/src/components/scope_selector/scope_selector.js
new file mode 100644
index 00000000..8a42ee7b
--- /dev/null
+++ b/src/components/scope_selector/scope_selector.js
@@ -0,0 +1,54 @@
+const ScopeSelector = {
+  props: [
+    'showAll',
+    'userDefault',
+    'originalScope',
+    'initialScope',
+    'onScopeChange'
+  ],
+  data () {
+    return {
+      currentScope: this.initialScope
+    }
+  },
+  computed: {
+    showNothing () {
+      return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect
+    },
+    showPublic () {
+      return this.originalScope !== 'direct' && this.shouldShow('public')
+    },
+    showUnlisted () {
+      return this.originalScope !== 'direct' && this.shouldShow('unlisted')
+    },
+    showPrivate () {
+      return this.originalScope !== 'direct' && this.shouldShow('private')
+    },
+    showDirect () {
+      return this.shouldShow('direct')
+    },
+    css () {
+      return {
+        public: {selected: this.currentScope === 'public'},
+        unlisted: {selected: this.currentScope === 'unlisted'},
+        private: {selected: this.currentScope === 'private'},
+        direct: {selected: this.currentScope === 'direct'}
+      }
+    }
+  },
+  methods: {
+    shouldShow (scope) {
+      return this.showAll ||
+        this.currentScope === scope ||
+        this.originalScope === scope ||
+        this.userDefault === scope ||
+        scope === 'direct'
+    },
+    changeVis (scope) {
+      this.currentScope = scope
+      this.onScopeChange && this.onScopeChange(scope)
+    }
+  }
+}
+
+export default ScopeSelector
diff --git a/src/components/scope_selector/scope_selector.vue b/src/components/scope_selector/scope_selector.vue
new file mode 100644
index 00000000..33ea488f
--- /dev/null
+++ b/src/components/scope_selector/scope_selector.vue
@@ -0,0 +1,30 @@
+<template>
+<div v-if="!showNothing">
+  <i class="icon-mail-alt"
+     :class="css.direct"
+     :title="$t('post_status.scope.direct')"
+     v-if="showDirect"
+     @click="changeVis('direct')">
+  </i>
+  <i class="icon-lock"
+     :class="css.private"
+     :title="$t('post_status.scope.private')"
+     v-if="showPrivate"
+     v-on:click="changeVis('private')">
+  </i>
+  <i class="icon-lock-open-alt"
+     :class="css.unlisted"
+     :title="$t('post_status.scope.unlisted')"
+     v-if="showUnlisted"
+     @click="changeVis('unlisted')">
+  </i>
+  <i class="icon-globe"
+     :class="css.public"
+     :title="$t('post_status.scope.public')"
+     v-if="showPublic"
+     @click="changeVis('public')">
+  </i>
+</div>
+</template>
+
+<script src="./scope_selector.js"></script>
diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js
index 1d5f75ed..a85ab674 100644
--- a/src/components/settings/settings.js
+++ b/src/components/settings/settings.js
@@ -70,13 +70,18 @@ const settings = {
       alwaysShowSubjectInputLocal: typeof user.alwaysShowSubjectInput === 'undefined'
         ? instance.alwaysShowSubjectInput
         : user.alwaysShowSubjectInput,
-      alwaysShowSubjectInputDefault: instance.alwaysShowSubjectInput,
+      alwaysShowSubjectInputDefault: this.$t('settings.values.' + instance.alwaysShowSubjectInput),
 
       scopeCopyLocal: typeof user.scopeCopy === 'undefined'
         ? instance.scopeCopy
         : user.scopeCopy,
       scopeCopyDefault: this.$t('settings.values.' + instance.scopeCopy),
 
+      minimalScopesModeLocal: typeof user.minimalScopesMode === 'undefined'
+        ? instance.minimalScopesMode
+        : user.minimalScopesMode,
+      minimalScopesModeDefault: this.$t('settings.values.' + instance.minimalScopesMode),
+
       stopGifs: user.stopGifs,
       webPushNotificationsLocal: user.webPushNotifications,
       loopVideoSilentOnlyLocal: user.loopVideosSilentOnly,
@@ -200,6 +205,9 @@ const settings = {
     postContentTypeLocal (value) {
       this.$store.dispatch('setOption', { name: 'postContentType', value })
     },
+    minimalScopesModeLocal (value) {
+      this.$store.dispatch('setOption', { name: 'minimalScopesMode', value })
+    },
     stopGifs (value) {
       this.$store.dispatch('setOption', { name: 'stopGifs', value })
     },
diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
index 33dad549..6ee103c7 100644
--- a/src/components/settings/settings.vue
+++ b/src/components/settings/settings.vue
@@ -118,6 +118,12 @@
                 </label>
               </div>
             </li>
+            <li>
+              <input type="checkbox" id="minimalScopesMode" v-model="minimalScopesModeLocal">
+              <label for="minimalScopesMode">
+                {{$t('settings.minimal_scopes_mode')}} {{$t('settings.instance_default', { value: minimalScopesModeDefault })}}
+              </label>
+            </li>
           </ul>
         </div>
 
diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue
index e5046496..9abb8cef 100644
--- a/src/components/side_drawer/side_drawer.vue
+++ b/src/components/side_drawer/side_drawer.vue
@@ -21,11 +21,6 @@
             {{ $t("login.login") }}
           </router-link>
         </li>
-        <li v-if="currentUser" @click="toggleDrawer">
-          <router-link :to="{ name: 'notifications', params: { username: currentUser.screen_name } }">
-            {{ $t("notifications.notifications") }} {{ unseenNotificationsCount > 0 ? `(${unseenNotificationsCount})` : '' }}
-          </router-link>
-        </li>
         <li v-if="currentUser" @click="toggleDrawer">
           <router-link :to="{ name: 'dms', params: { username: currentUser.screen_name } }">
             {{ $t("nav.dms") }}
diff --git a/src/components/status/status.js b/src/components/status/status.js
index 550fe76f..0295cd04 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -251,6 +251,12 @@ const Status = {
     },
     maxThumbnails () {
       return this.$store.state.config.maxThumbnails
+    },
+    contentHtml () {
+      if (!this.status.summary_html) {
+        return this.status.statusnet_html
+      }
+      return this.status.summary_html + '<br />' + this.status.statusnet_html
     }
   },
   components: {
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 1f415534..690e8318 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -98,16 +98,16 @@
           </div>
 
           <div class="status-content-wrapper" :class="{ 'tall-status': !showingLongSubject }" v-if="longSubject">
-            <a class="tall-status-hider" :class="{ 'tall-status-hider_focused': isFocused }" v-if="!showingLongSubject" href="#" @click.prevent="showingLongSubject=true">Show more</a>
-            <div @click.prevent="linkClicked" class="status-content media-body" v-html="status.statusnet_html"></div>
-            <a v-if="showingLongSubject" href="#" class="status-unhider" @click.prevent="showingLongSubject=false">Show less</a>
+            <a class="tall-status-hider" :class="{ 'tall-status-hider_focused': isFocused }" v-if="!showingLongSubject" href="#" @click.prevent="showingLongSubject=true">{{$t("general.show_more")}}</a>
+            <div @click.prevent="linkClicked" class="status-content media-body" v-html="contentHtml"></div>
+            <a v-if="showingLongSubject" href="#" class="status-unhider" @click.prevent="showingLongSubject=false">{{$t("general.show_less")}}</a>
           </div>
           <div :class="{'tall-status': hideTallStatus}" class="status-content-wrapper" v-else>
-            <a class="tall-status-hider" :class="{ 'tall-status-hider_focused': isFocused }" v-if="hideTallStatus" href="#" @click.prevent="toggleShowMore">Show more</a>
-            <div @click.prevent="linkClicked" class="status-content media-body" v-html="status.statusnet_html" v-if="!hideSubjectStatus"></div>
+            <a class="tall-status-hider" :class="{ 'tall-status-hider_focused': isFocused }" v-if="hideTallStatus" href="#" @click.prevent="toggleShowMore">{{$t("general.show_more")}}</a>
+            <div @click.prevent="linkClicked" class="status-content media-body" v-html="contentHtml" v-if="!hideSubjectStatus"></div>
             <div @click.prevent="linkClicked" class="status-content media-body" v-html="status.summary_html" v-else></div>
-            <a v-if="hideSubjectStatus" href="#" class="cw-status-hider" @click.prevent="toggleShowMore">Show more</a>
-            <a v-if="showingMore" href="#" class="status-unhider" @click.prevent="toggleShowMore">Show less</a>
+            <a v-if="hideSubjectStatus" href="#" class="cw-status-hider" @click.prevent="toggleShowMore">{{$t("general.show_more")}}</a>
+            <a v-if="showingMore" href="#" class="status-unhider" @click.prevent="toggleShowMore">{{$t("general.show_less")}}</a>
           </div>
 
           <div v-if="status.attachments && (!hideSubjectStatus || showingLongSubject)" class="attachments media-body">
diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js
index 82df4510..1df06fe6 100644
--- a/src/components/user_profile/user_profile.js
+++ b/src/components/user_profile/user_profile.js
@@ -72,9 +72,6 @@ const UserProfile = {
       return this.$store.getters.findUser(this.fetchedUserId || routeParams.name || routeParams.id)
     },
     user () {
-      if (this.timeline.statuses[0]) {
-        return this.timeline.statuses[0].user
-      }
       if (this.userInStore) {
         return this.userInStore
       }
diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js
index 5cb23b97..b6a0479d 100644
--- a/src/components/user_settings/user_settings.js
+++ b/src/components/user_settings/user_settings.js
@@ -4,6 +4,7 @@ import get from 'lodash/get'
 import TabSwitcher from '../tab_switcher/tab_switcher.js'
 import ImageCropper from '../image_cropper/image_cropper.vue'
 import StyleSwitcher from '../style_switcher/style_switcher.vue'
+import ScopeSelector from '../scope_selector/scope_selector.vue'
 import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'
 import BlockCard from '../block_card/block_card.vue'
 import MuteCard from '../mute_card/mute_card.vue'
@@ -67,6 +68,7 @@ const UserSettings = {
   },
   components: {
     StyleSwitcher,
+    ScopeSelector,
     TabSwitcher,
     ImageCropper,
     BlockList,
@@ -80,8 +82,8 @@ const UserSettings = {
     pleromaBackend () {
       return this.$store.state.instance.pleromaBackend
     },
-    scopeOptionsEnabled () {
-      return this.$store.state.instance.scopeOptionsEnabled
+    minimalScopesMode () {
+      return this.$store.state.instance.minimalScopesMode
     },
     vis () {
       return {
diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue
index 52df143c..c08698dc 100644
--- a/src/components/user_settings/user_settings.vue
+++ b/src/components/user_settings/user_settings.vue
@@ -38,13 +38,13 @@
               <input type="checkbox" v-model="newLocked" id="account-locked">
               <label for="account-locked">{{$t('settings.lock_account_description')}}</label>
             </p>
-            <div v-if="scopeOptionsEnabled">
+            <div>
               <label for="default-vis">{{$t('settings.default_vis')}}</label>
               <div id="default-vis" class="visibility-tray">
-                <i v-on:click="changeVis('direct')" class="icon-mail-alt" :class="vis.direct" :title="$t('post_status.scope.direct')" ></i>
-                <i v-on:click="changeVis('private')" class="icon-lock" :class="vis.private" :title="$t('post_status.scope.private')"></i>
-                <i v-on:click="changeVis('unlisted')" class="icon-lock-open-alt" :class="vis.unlisted" :title="$t('post_status.scope.unlisted')"></i>
-                <i v-on:click="changeVis('public')" class="icon-globe" :class="vis.public" :title="$t('post_status.scope.public')"></i>
+                <scope-selector
+                  :showAll="true"
+                  :userDefault="newDefaultScope"
+                  :onScopeChange="changeVis"/>
               </div>
             </div>
             <p>
diff --git a/src/i18n/en.json b/src/i18n/en.json
index c501c6a7..026546cc 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -20,7 +20,9 @@
     "submit": "Submit",
     "more": "More",
     "generic_error": "An error occured",
-    "optional": "optional"
+    "optional": "optional",
+    "show_more": "Show more",
+    "show_less": "Show less"
   },
   "image_cropper": {
     "crop_picture": "Crop picture",
@@ -215,6 +217,7 @@
     "saving_ok": "Settings saved",
     "security_tab": "Security",
     "scope_copy": "Copy scope when replying (DMs are always copied)",
+    "minimal_scopes_mode": "Minimize post scope selection options",
     "set_new_avatar": "Set new avatar",
     "set_new_profile_background": "Set new profile background",
     "set_new_profile_banner": "Set new profile banner",
diff --git a/src/i18n/oc.json b/src/i18n/oc.json
index ecc4df61..9214799d 100644
--- a/src/i18n/oc.json
+++ b/src/i18n/oc.json
@@ -25,6 +25,7 @@
   "image_cropper": {
      "crop_picture": "Talhar l’imatge",
      "save": "Salvar",
+     "save_without_cropping": "Salvar sens talhada",
      "cancel": "Anullar"
   },
   "login": {
@@ -152,6 +153,7 @@
     "general": "General",
     "hide_attachments_in_convo": "Rescondre las pèças juntas dins las conversacions",
     "hide_attachments_in_tl": "Rescondre las pèças juntas",
+    "hide_muted_posts": "Rescondre las publicacions del monde rescondut",
     "max_thumbnails": "Nombre maximum de vinhetas per publicacion",
     "hide_isp": "Amagar lo panèl especial instància",
     "preload_images": "Precargar los imatges",
diff --git a/src/i18n/pl.json b/src/i18n/pl.json
index 2e1d7488..8efce168 100644
--- a/src/i18n/pl.json
+++ b/src/i18n/pl.json
@@ -2,48 +2,114 @@
   "chat": {
     "title": "Czat"
   },
+  "features_panel": {
+    "chat": "Czat",
+    "gopher": "Gopher",
+    "media_proxy": "Proxy mediów",
+    "scope_options": "Ustawienia zakresu",
+    "text_limit": "Limit tekstu",
+    "title": "Funkcje",
+    "who_to_follow": "Propozycje obserwacji"
+  },
   "finder": {
     "error_fetching_user": "Błąd przy pobieraniu profilu",
     "find_user": "Znajdź użytkownika"
   },
   "general": {
     "apply": "Zastosuj",
-    "submit": "Wyślij"
+    "submit": "Wyślij",
+    "more": "Więcej",
+    "generic_error": "Wystąpił błąd",
+    "optional": "nieobowiązkowe"
+  },
+  "image_cropper": {
+    "crop_picture": "Przytnij obrazek",
+    "save": "Zapisz",
+    "save_without_cropping": "Zapisz bez przycinania",
+    "cancel": "Anuluj"
   },
   "login": {
     "login": "Zaloguj",
+    "description": "Zaloguj używając OAuth",
     "logout": "Wyloguj",
     "password": "Hasło",
     "placeholder": "n.p. lain",
     "register": "Zarejestruj",
-    "username": "Użytkownik"
+    "username": "Użytkownik",
+    "hint": "Zaloguj się, aby dołączyć do dyskusji"
+  },
+  "media_modal": {
+    "previous": "Poprzednie",
+    "next": "Następne"
   },
   "nav": {
+    "about": "O nas",
+    "back": "Wróć",
     "chat": "Lokalny czat",
+    "friend_requests": "Prośby o możliwość obserwacji",
     "mentions": "Wzmianki",
+    "dms": "Wiadomości prywatne",
     "public_tl": "Publiczna oś czasu",
     "timeline": "Oś czasu",
-    "twkn": "Cała znana sieć"
+    "twkn": "Cała znana sieć",
+    "user_search": "Wyszukiwanie użytkowników",
+    "who_to_follow": "Sugestie obserwacji",
+    "preferences": "Preferencje"
   },
   "notifications": {
-    "favorited_you": "dodał twój status do ulubionych",
+    "broken_favorite": "Nieznany status, szukam go…",
+    "favorited_you": "dodał(-a) twój status do ulubionych",
     "followed_you": "obserwuje cię",
+    "load_older": "Załaduj starsze powiadomienia",
     "notifications": "Powiadomienia",
     "read": "Przeczytane!",
-    "repeated_you": "powtórzył twój status"
+    "repeated_you": "powtórzył(-a) twój status",
+    "no_more_notifications": "Nie masz więcej powiadomień"
   },
   "post_status": {
+    "new_status": "Dodaj nowy status",
+    "account_not_locked_warning": "Twoje konto nie jest {0}. Każdy może cię zaobserwować aby zobaczyć wpisy tylko dla obserwujących.",
+    "account_not_locked_warning_link": "zablokowane",
+    "attachments_sensitive": "Oznacz załączniki jako wrażliwe",
+    "content_type": {
+      "text/plain": "Czysty tekst",
+      "text/html": "HTML",
+      "text/markdown": "Markdown"
+    },
+    "content_warning": "Temat (nieobowiązkowy)",
     "default": "Właśnie wróciłem z kościoła",
-    "posting": "Wysyłanie"
+    "direct_warning": "Ten wpis zobaczą tylko osoby, o których wspomniałeś(-aś).",
+    "posting": "Wysyłanie",
+    "scope": {
+      "direct": "Bezpośredni – Tylko dla wspomnianych użytkowników",
+      "private": "Tylko dla obserwujących – Umieść dla osób, które cię obserwują",
+      "public": "Publiczny – Umieść na publicznych osiach czasu",
+      "unlisted": "Niewidoczny – Nie umieszczaj na publicznych osiach czasu"
+    }
   },
   "registration": {
     "bio": "Bio",
-    "email": "Email",
+    "email": "E-mail",
     "fullname": "Wyświetlana nazwa profilu",
     "password_confirm": "Potwierdzenie hasła",
-    "registration": "Rejestracja"
+    "registration": "Rejestracja",
+    "token": "Token zaproszenia",
+    "captcha": "CAPTCHA",
+    "new_captcha": "Naciśnij na obrazek, aby dostać nowy kod captcha",
+    "username_placeholder": "np. lain",
+    "fullname_placeholder": "np. Lain Iwakura",
+    "bio_placeholder": "e.g.\nCześć, jestem Lain.\nJestem dziewczynką z anime żyjącą na peryferiach Japonii. Możesz znać mnie z Wired.",
+    "validations": {
+      "username_required": "nie może być pusta",
+      "fullname_required": "nie może być pusta",
+      "email_required": "nie może być pusty",
+      "password_required": "nie może być puste",
+      "password_confirmation_required": "nie może być puste",
+      "password_confirmation_match": "musi być takie jak hasło"
+    }
   },
   "settings": {
+    "app_name": "Nazwa aplikacji",
     "attachmentRadius": "Załączniki",
     "attachments": "Załączniki",
     "autoload": "Włącz automatyczne ładowanie po przewinięciu do końca strony",
@@ -52,6 +118,7 @@
     "avatarRadius": "Awatary",
     "background": "Tło",
     "bio": "Bio",
+    "blocks_tab": "Bloki",
     "btnRadius": "Przyciski",
     "cBlue": "Niebieski (odpowiedz, obserwuj)",
     "cGreen": "Zielony (powtórzenia)",
@@ -59,15 +126,21 @@
     "cRed": "Czerwony (anuluj)",
     "change_password": "Zmień hasło",
     "change_password_error": "Podczas zmiany hasła wystąpił problem.",
-    "changed_password": "Hasło zmienione poprawnie!",
+    "changed_password": "Pomyślnie zmieniono hasło!",
+    "collapse_subject": "Zwijaj posty z tematami",
+    "composing": "Pisanie",
     "confirm_new_password": "Potwierdź nowe hasło",
     "current_avatar": "Twój obecny awatar",
     "current_password": "Obecne hasło",
     "current_profile_banner": "Twój obecny banner profilu",
+    "data_import_export_tab": "Import/eksport danych",
+    "default_vis": "Domyślny zakres widoczności",
     "delete_account": "Usuń konto",
     "delete_account_description": "Trwale usuń konto i wszystkie posty.",
     "delete_account_error": "Wystąpił problem z usuwaniem twojego konta. Jeżeli problem powtarza się, poinformuj administratora swojej instancji.",
     "delete_account_instructions": "Wprowadź swoje hasło w poniższe pole aby potwierdzić usunięcie konta.",
+    "avatar_size_instruction": "Zalecany minimalny rozmiar awatarów to 150x150 pikseli.",
+    "export_theme": "Zapisz motyw",
     "filtering": "Filtrowanie",
     "filtering_explanation": "Wszystkie statusy zawierające te słowa będą wyciszone. Jedno słowo na linijkę.",
     "follow_export": "Eksport obserwowanych",
@@ -77,14 +150,49 @@
     "follow_import_error": "Błąd przy importowaniu obserwowanych",
     "follows_imported": "Obserwowani zaimportowani! Przetwarzanie może trochę potrwać.",
     "foreground": "Pierwszy plan",
-    "hide_attachments_in_convo": "Ukryj załączniki w rozmowach",
-    "hide_attachments_in_tl": "Ukryj załączniki w osi czasu",
+    "general": "Ogólne",
+    "hide_attachments_in_convo": "Ukrywaj załączniki w rozmowach",
+    "hide_attachments_in_tl": "Ukrywaj załączniki w osi czasu",
+    "hide_muted_posts": "Ukrywaj wpisy wyciszonych użytkowników",
+    "max_thumbnails": "Maksymalna liczba miniatur w poście",
+    "hide_isp": "Ukryj panel informacji o instancji",
+    "preload_images": "Ładuj wstępnie obrazy",
+    "use_one_click_nsfw": "Otwieraj załączniki NSFW jednym kliknięciem",
+    "hide_post_stats": "Ukrywaj statysyki postów (np. liczbę polubień)",
+    "hide_user_stats": "Ukrywaj statysyki użytkowników (np. liczbę obserwujących)",
+    "hide_filtered_statuses": "Ukrywaj filtrowane statusy",
     "import_followers_from_a_csv_file": "Importuj obserwowanych z pliku CSV",
+    "import_theme": "Załaduj motyw",
     "inputRadius": "Pola tekstowe",
+    "checkboxRadius": "Pola wyboru",
+    "instance_default": "(domyślny: {value})",
+    "instance_default_simple": "(domyślny)",
+    "interface": "Interfejs",
+    "interfaceLanguage": "Język interfejsu",
+    "invalid_theme_imported": "Wybrany plik nie jest obsługiwanym motywem Pleromy. Nie dokonano zmian w twoim motywie.",
+    "limited_availability": "Niedostępne w twojej przeglądarce",
     "links": "Łącza",
+    "lock_account_description": "Ogranicz swoje konto dla zatwierdzonych obserwowanych",
+    "loop_video": "Zapętlaj filmy",
+    "loop_video_silent_only": "Zapętlaj tylko filmy bez dźwięku (np. mastodonowe „gify”)",
+    "mutes_tab": "Wyciszenia",
+    "play_videos_in_modal": "Odtwarzaj filmy bezpośrednio w przeglądarce mediów",
+    "use_contain_fit": "Nie przycinaj załączników na miniaturach",
     "name": "Imię",
     "name_bio": "Imię i bio",
     "new_password": "Nowe hasło",
+    "notification_visibility": "Rodzaje powiadomień do wyświetlania",
+    "notification_visibility_follows": "Obserwacje",
+    "notification_visibility_likes": "Ulubione",
+    "notification_visibility_mentions": "Wzmianki",
+    "notification_visibility_repeats": "Powtórzenia",
+    "no_rich_text_description": "Usuwaj formatowanie ze wszystkich postów",
+    "no_blocks": "Bez blokad",
+    "no_mutes": "Bez wyciszeń",
+    "hide_follows_description": "Nie pokazuj kogo obserwuję",
+    "hide_followers_description": "Nie pokazuj kto mnie obserwuje",
+    "show_admin_badge": "Pokazuj odznakę Administrator na moim profilu",
+    "show_moderator_badge": "Pokazuj odznakę Moderator na moim profilu",
     "nsfw_clickthrough": "Włącz domyślne ukrywanie załączników o treści nieprzyzwoitej (NSFW)",
     "oauth_tokens": "Tokeny OAuth",
     "token": "Token",
@@ -92,47 +200,235 @@
     "valid_until": "Ważne do",
     "revoke_token": "Odwołać",
     "panelRadius": "Panele",
+    "pause_on_unfocused": "Wstrzymuj strumieniowanie kiedy karta nie jest aktywna",
     "presets": "Gotowe motywy",
     "profile_background": "Tło profilu",
     "profile_banner": "Banner profilu",
+    "profile_tab": "Profil",
     "radii_help": "Ustaw zaokrąglenie krawędzi interfejsu (w pikselach)",
+    "replies_in_timeline": "Odpowiedzi na osi czasu",
     "reply_link_preview": "Włącz dymek z podglądem postu po najechaniu na znak odpowiedzi",
+    "reply_visibility_all": "Pokazuj wszystkie odpowiedzi",
+    "reply_visibility_following": "Pokazuj tylko odpowiedzi skierowane do mnie i osób które obserwuję",
+    "reply_visibility_self": "Pokazuj tylko odpowiedzi skierowane do mnie",
+    "saving_err": "Nie udało się zapisać ustawień",
+    "saving_ok": "Zapisano ustawienia",
+    "security_tab": "Bezpieczeństwo",
+    "scope_copy": "Kopiuj zakres podczas odpowiadania (DM-y zawsze są kopiowane)",
     "set_new_avatar": "Ustaw nowy awatar",
     "set_new_profile_background": "Ustaw nowe tło profilu",
     "set_new_profile_banner": "Ustaw nowy banner profilu",
     "settings": "Ustawienia",
+    "subject_input_always_show": "Zawsze pokazuj pole tematu",
+    "subject_line_behavior": "Kopiuj temat podczas odpowiedzi",
+    "subject_line_email": "Jak w mailach – „re: temat”",
+    "subject_line_mastodon": "Jak na Mastodonie – po prostu kopiuj",
+    "subject_line_noop": "Nie kopiuj",
+    "post_status_content_type": "Post status content type",
     "stop_gifs": "Odtwarzaj GIFy po najechaniu kursorem",
-    "streaming": "Włącz automatycznie strumieniowanie nowych postów gdy na początku strony",
+    "streaming": "Włącz automatycznie strumieniowanie nowych postów gdy jesteś na początku strony",
     "text": "Tekst",
     "theme": "Motyw",
     "theme_help": "Użyj kolorów w notacji szesnastkowej (#rrggbb), by stworzyć swój motyw.",
+    "theme_help_v2_1": "Możesz też zastąpić kolory i widoczność poszczególnych komponentów przełączając pola wyboru, użyj „Wyczyść wszystko” aby usunąć wszystkie zastąpienia.",
+    "theme_help_v2_2": "Ikony pod niektórych wpisami są wskaźnikami kontrastu pomiędzy tłem a tekstem, po najechaniu na nie otrzymasz szczegółowe informacje. Zapamiętaj, że jeżeli używasz przezroczystości, wskaźniki pokazują najgorszy możliwy przypadek.",
     "tooltipRadius": "Etykiety/alerty",
-    "user_settings": "Ustawienia użytkownika"
+    "upload_a_photo": "Wyślij zdjęcie",
+    "user_settings": "Ustawienia użytkownika",
+    "values": {
+      "false": "nie",
+      "true": "tak"
+    },
+    "notifications": "Powiadomienia",
+    "enable_web_push_notifications": "Włącz powiadomienia push",
+    "style": {
+      "switcher": {
+        "keep_color": "Zachowaj kolory",
+        "keep_shadows": "Zachowaj cienie",
+        "keep_opacity": "Zachowaj widoczność",
+        "keep_roundness": "Zachowaj zaokrąglenie",
+        "keep_fonts": "Zachowaj czcionki",
+        "save_load_hint": "Opcje „zachowaj” pozwalają na pozostanie przy obecnych opcjach po wybraniu lub załadowaniu motywu, jak i przechowywanie ich podczas eksportowania motywu. Jeżeli wszystkie są odznaczone, eksportowanie motywu spowoduje zapisanie wszystkiego.",
+        "reset": "Wyzeruj",
+        "clear_all": "Wyczyść wszystko",
+        "clear_opacity": "Wyczyść widoczność"
+      },
+      "common": {
+        "color": "Kolor",
+        "opacity": "Widoczność",
+        "contrast": {
+          "hint": "Współczynnik kontrastu wynosi {ratio}, {level} {context}",
+          "level": {
+            "aa": "spełnia wymogi poziomu AA (minimalne)",
+            "aaa": "spełnia wymogi poziomu AAA (zalecane)",
+            "bad": "nie spełnia żadnych wymogów dostępności"
+          },
+          "context": {
+            "18pt": "dla dużego tekstu (18pt+)",
+            "text": "dla tekstu"
+          }
+        }
+      },
+      "common_colors": {
+        "_tab_label": "Ogólne",
+        "main": "Ogólne kolory",
+        "foreground_hint": "Zajrzyj do karty „Zaawansowane”, aby uzyskać dokładniejszą kontrolę",
+        "rgbo": "Ikony, wyróżnienia, odznaki"
+      },
+      "advanced_colors": {
+        "_tab_label": "Zaawansowane",
+        "alert": "Tło alertu",
+        "alert_error": "Błąd",
+        "badge": "Tło odznaki",
+        "badge_notification": "Powiadomienie",
+        "panel_header": "Nagłówek panelu",
+        "top_bar": "Górny pasek",
+        "borders": "Granice",
+        "buttons": "Przyciski",
+        "inputs": "Pola wejścia",
+        "faint_text": "Zanikający tekst"
+      },
+      "radii": {
+        "_tab_label": "Zaokrąglenie"
+      },
+      "shadows": {
+        "_tab_label": "Cień i podświetlenie",
+        "component": "Komponent",
+        "override": "Zastąp",
+        "shadow_id": "Cień #{value}",
+        "blur": "Rozmycie",
+        "spread": "Szerokość",
+        "inset": "Inset",
+        "hint": "Możesz też używać --zmiennych jako kolorów, aby wykorzystać zmienne CSS3. Pamiętaj, że ustawienie widoczności nie będzie wtedy działać.",
+        "filter_hint": {
+          "always_drop_shadow": "Ostrzeżenie, ten cień zawsze używa {0} jeżeli to obsługiwane przez przeglądarkę.",
+          "drop_shadow_syntax": "{0} nie obsługuje parametru {1} i słowa kluczowego {2}.",
+          "avatar_inset": "Pamiętaj że użycie jednocześnie cieni inset i nie inset na awatarach może daćnieoczekiwane wyniki z przezroczystymi awatarami.",
+          "spread_zero": "Cienie o ujemnej szerokości będą widoczne tak, jakby wynosiła ona zero",
+          "inset_classic": "Cienie inset będą używały {0}"
+        },
+        "components": {
+          "panel": "Panel",
+          "panelHeader": "Nagłówek panelu",
+          "topBar": "Górny pasek",
+          "avatar": "Awatar użytkownika (w widoku profilu)",
+          "avatarStatus": "Awatar użytkownika (w widoku wpisu)",
+          "popup": "Wyskakujące okna i podpowiedzi",
+          "button": "Przycisk",
+          "buttonHover": "Przycisk (po najechaniu)",
+          "buttonPressed": "Przycisk (naciśnięty)",
+          "buttonPressedHover": "Przycisk(naciśnięty+najechany)",
+          "input": "Pole wejścia"
+        }
+      },
+      "fonts": {
+        "_tab_label": "Czcionki",
+        "help": "Wybierz czcionkę używaną przez elementy UI. Jeżeli wybierzesz niestandardową, musisz wpisać dokładnie tę nazwę, pod którą pojawia się w systemie.",
+        "components": {
+          "interface": "Interfejs",
+          "input": "Pola wejścia",
+          "post": "Tekst postu",
+          "postCode": "Tekst o stałej szerokości znaków w sformatowanym poście"
+        },
+        "family": "Nazwa czcionki",
+        "size": "Rozmiar (w pikselach)",
+        "weight": "Grubość",
+        "custom": "Niestandardowa"
+      },
+      "preview": {
+        "header": "Podgląd",
+        "content": "Zawartość",
+        "error": "Przykładowy błąd",
+        "button": "Przycisk",
+        "text": "Trochę więcej {0} i {1}",
+        "mono": "treści",
+        "input": "Właśnie wróciłem z kościoła",
+        "faint_link": "pomocny podręcznik",
+        "fine_print": "Przeczytaj nasz {0}, aby nie nauczyć się niczego przydatnego!",
+        "header_faint": "W porządku",
+        "checkbox": "Przeleciałem przez zasady użytkowania",
+        "link": "i fajny mały odnośnik"
+      }
+    },
+    "version": {
+      "title": "Wersja",
+      "backend_version": "Wersja back-endu",
+      "frontend_version": "Wersja front-endu"
+    }
   },
   "timeline": {
     "collapse": "Zwiń",
     "conversation": "Rozmowa",
     "error_fetching": "Błąd pobierania",
     "load_older": "Załaduj starsze statusy",
+    "no_retweet_hint": "Wpis oznaczony jako tylko dla obserwujących lub bezpośredni nie może zostać powtórzony",
     "repeated": "powtórzono",
     "show_new": "Pokaż nowe",
-    "up_to_date": "Na bieżąco"
+    "up_to_date": "Na bieżąco",
+    "no_more_statuses": "Brak kolejnych statusów",
+    "no_statuses": "Brak statusów"
+  },
+  "status": {
+    "reply_to": "Odpowiedź dla",
+    "replies_list": "Odpowiedzi:"
   },
   "user_card": {
+    "approve": "Przyjmij",
     "block": "Zablokuj",
     "blocked": "Zablokowany!",
+    "deny": "Odrzuć",
+    "favorites": "Ulubione",
     "follow": "Obserwuj",
+    "follow_sent": "Wysłano prośbę!",
+    "follow_progress": "Wysyłam prośbę…",
+    "follow_again": "Wysłać prośbę ponownie?",
+    "follow_unfollow": "Przestań obserwować",
     "followees": "Obserwowani",
     "followers": "Obserwujący",
     "following": "Obserwowany!",
     "follows_you": "Obserwuje cię!",
+    "its_you": "To ty!",
+    "media": "Media",
     "mute": "Wycisz",
-    "muted": "Wyciszony",
+    "muted": "Wyciszony(-a)",
     "per_day": "dziennie",
     "remote_follow": "Zdalna obserwacja",
-    "statuses": "Statusy"
+    "statuses": "Statusy",
+    "unblock": "Odblokuj",
+    "unblock_progress": "Odblokowuję…",
+    "block_progress": "Blokuję…",
+    "unmute": "Cofnij wyciszenie",
+    "unmute_progress": "Cofam wyciszenie…",
+    "mute_progress": "Wyciszam…"
   },
   "user_profile": {
-    "timeline_title": "Oś czasu użytkownika"
+    "timeline_title": "Oś czasu użytkownika",
+    "profile_does_not_exist": "Przepraszamy, ten profil nie istnieje.",
+    "profile_loading_error": "Przepraszamy, wystąpił błąd podczas ładowania tego profilu."
+  },
+  "who_to_follow": {
+    "more": "Więcej",
+    "who_to_follow": "Propozycje obserwacji"
+  },
+  "tool_tip": {
+    "media_upload": "Wyślij media",
+    "repeat": "Powtórz",
+    "reply": "Odpowiedz",
+    "favorite": "Dodaj do ulubionych",
+    "user_settings": "Ustawienia użytkownika"
+  },
+  "upload":{
+    "error": {
+      "base": "Wysyłanie nie powiodło się.",
+      "file_too_big": "Zbyt duży plik [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]",
+      "default": "Spróbuj ponownie później"
+    },
+    "file_size_units": {
+      "B": "B",
+      "KiB": "KiB",
+      "MiB": "MiB",
+      "GiB": "GiB",
+      "TiB": "TiB"
+    }
   }
-}
+}
\ No newline at end of file
diff --git a/src/i18n/ru.json b/src/i18n/ru.json
index 6799cc96..89aa43f4 100644
--- a/src/i18n/ru.json
+++ b/src/i18n/ru.json
@@ -111,6 +111,8 @@
     "import_theme": "Загрузить Тему",
     "inputRadius": "Поля ввода",
     "checkboxRadius": "Чекбоксы",
+    "instance_default": "(по умолчанию: {value})",
+    "instance_default_simple": "(по умолчанию)",
     "interface": "Интерфейс",
     "interfaceLanguage": "Язык интерфейса",
     "limited_availability": "Не доступно в вашем браузере",
@@ -149,7 +151,11 @@
     "reply_visibility_all": "Показывать все ответы",
     "reply_visibility_following": "Показывать только ответы мне и тех на кого я подписан",
     "reply_visibility_self": "Показывать только ответы мне",
+    "saving_err": "Не удалось сохранить настройки",
+    "saving_ok": "Сохранено",
     "security_tab": "Безопасность",
+    "scope_copy": "Копировать видимость поста при ответе (всегда включено для Личных Сообщений)",
+    "minimal_scopes_mode": "Минимизировать набор опций видимости поста",
     "set_new_avatar": "Загрузить новый аватар",
     "set_new_profile_background": "Загрузить новый фон профиля",
     "set_new_profile_banner": "Загрузить новый баннер профиля",
@@ -164,6 +170,10 @@
     "theme_help_v2_2": "Под некоторыми полями ввода это идикаторы контрастности, наведите на них мышью чтобы узнать больше. Приспользовании прозрачности контраст расчитывается для наихудшего варианта.",
     "tooltipRadius": "Всплывающие подсказки/уведомления",
     "user_settings": "Настройки пользователя",
+    "values": {
+      "false": "нет",
+      "true": "да"
+    },
     "style": {
       "switcher": {
         "keep_color": "Оставить цвета",
diff --git a/src/modules/config.js b/src/modules/config.js
index c5491c01..1666a2c5 100644
--- a/src/modules/config.js
+++ b/src/modules/config.js
@@ -33,7 +33,8 @@ const defaultState = {
   scopeCopy: undefined, // instance default
   subjectLineBehavior: undefined, // instance default
   alwaysShowSubjectInput: undefined, // instance default
-  postContentType: undefined // instance default
+  postContentType: undefined, // instance default
+  minimalScopesMode: undefined // instance default
 }
 
 const config = {
diff --git a/src/modules/instance.js b/src/modules/instance.js
index f778ac4d..3a559ba0 100644
--- a/src/modules/instance.js
+++ b/src/modules/instance.js
@@ -15,7 +15,6 @@ const defaultState = {
   redirectRootNoLogin: '/main/all',
   redirectRootLogin: '/main/friends',
   showInstanceSpecificPanel: false,
-  scopeOptionsEnabled: true,
   formattingOptionsEnabled: false,
   alwaysShowSubjectInput: true,
   hideMutedPosts: false,
@@ -32,6 +31,7 @@ const defaultState = {
   vapidPublicKey: undefined,
   noAttachmentLinks: false,
   showFeaturesPanel: true,
+  minimalScopesMode: false,
 
   // Nasty stuff
   pleromaBackend: true,
diff --git a/src/modules/interface.js b/src/modules/interface.js
index 956c9cb3..71554787 100644
--- a/src/modules/interface.js
+++ b/src/modules/interface.js
@@ -11,7 +11,8 @@ const defaultState = {
       window.CSS.supports('filter', 'drop-shadow(0 0)') ||
       window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')
     )
-  }
+  },
+  mobileLayout: false
 }
 
 const interfaceMod = {
@@ -31,6 +32,9 @@ const interfaceMod = {
     },
     setNotificationPermission (state, permission) {
       state.notificationPermission = permission
+    },
+    setMobileLayout (state, value) {
+      state.mobileLayout = value
     }
   },
   actions: {
@@ -42,6 +46,10 @@ const interfaceMod = {
     },
     setNotificationPermission ({ commit }, permission) {
       commit('setNotificationPermission', permission)
+    },
+    setMobileLayout ({ commit }, value) {
+      console.log('setMobileLayout called')
+      commit('setMobileLayout', value)
     }
   }
 }
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index 944b45c1..8e0203e3 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -123,7 +123,7 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us
 
   const maxNew = statuses.length > 0 ? maxBy(statuses, 'id').id : 0
   const minNew = statuses.length > 0 ? minBy(statuses, 'id').id : 0
-  const newer = timeline && maxNew > timelineObject.maxId && statuses.length > 0
+  const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0
   const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0
 
   if (!noIdUpdate && newer) {
@@ -363,6 +363,15 @@ export const mutations = {
   },
   setRetweeted (state, { status, value }) {
     const newStatus = state.allStatusesObject[status.id]
+
+    if (newStatus.repeated !== value) {
+      if (value) {
+        newStatus.repeat_num++
+      } else {
+        newStatus.repeat_num--
+      }
+    }
+
     newStatus.repeated = value
   },
   setDeleted (state, { status }) {
diff --git a/src/services/user_profile_link_generator/user_profile_link_generator.js b/src/services/user_profile_link_generator/user_profile_link_generator.js
index a214ca48..16f1531d 100644
--- a/src/services/user_profile_link_generator/user_profile_link_generator.js
+++ b/src/services/user_profile_link_generator/user_profile_link_generator.js
@@ -1,7 +1,7 @@
 import { includes } from 'lodash'
 
 const generateProfileLink = (id, screenName, restrictedNicknames) => {
-  const complicated = (isExternal(screenName) || includes(restrictedNicknames, screenName))
+  const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))
   return {
     name: (complicated ? 'external-user-profile' : 'user-profile'),
     params: (complicated ? { id } : { name: screenName })
diff --git a/src/services/window_utils/window_utils.js b/src/services/window_utils/window_utils.js
new file mode 100644
index 00000000..faff6cb9
--- /dev/null
+++ b/src/services/window_utils/window_utils.js
@@ -0,0 +1,5 @@
+
+export const windowWidth = () =>
+  window.innerWidth ||
+  document.documentElement.clientWidth ||
+  document.body.clientWidth
diff --git a/static/config.json b/static/config.json
index 533a5b08..04cbb97b 100644
--- a/static/config.json
+++ b/static/config.json
@@ -8,7 +8,6 @@
   "redirectRootLogin": "/main/friends",
   "chatDisabled": false,
   "showInstanceSpecificPanel": false,
-  "scopeOptionsEnabled": false,
   "formattingOptionsEnabled": false,
   "collapseMessageWithSubject": false,
   "scopeCopy": true,
@@ -21,5 +20,6 @@
   "webPushNotifications": false,
   "noAttachmentLinks": false,
   "nsfwCensorImage": "",
-  "showFeaturesPanel": true
+  "showFeaturesPanel": true,
+  "minimalScopesMode": false
 }
diff --git a/static/font/LICENSE.txt b/static/font/LICENSE.txt
old mode 100755
new mode 100644
diff --git a/static/font/README.txt b/static/font/README.txt
old mode 100755
new mode 100644
diff --git a/static/font/config.json b/static/font/config.json
index 8102330b..380912c9 100755
--- a/static/font/config.json
+++ b/static/font/config.json
@@ -251,6 +251,12 @@
       "css": "smile",
       "code": 61720,
       "src": "fontawesome"
+    },
+    {
+      "uid": "671f29fa10dda08074a4c6a341bb4f39",
+      "css": "bell-alt",
+      "code": 61683,
+      "src": "fontawesome"
     }
   ]
 }
\ No newline at end of file
diff --git a/static/font/css/fontello-codes.css b/static/font/css/fontello-codes.css
index 594a17a5..b19319a7 100755
--- a/static/font/css/fontello-codes.css
+++ b/static/font/css/fontello-codes.css
@@ -32,6 +32,7 @@
 .icon-menu:before { content: '\f0c9'; } /* '' */
 .icon-mail-alt:before { content: '\f0e0'; } /* '' */
 .icon-comment-empty:before { content: '\f0e5'; } /* '' */
+.icon-bell-alt:before { content: '\f0f3'; } /* '' */
 .icon-plus-squared:before { content: '\f0fe'; } /* '' */
 .icon-reply:before { content: '\f112'; } /* '' */
 .icon-smile:before { content: '\f118'; } /* '' */
diff --git a/static/font/css/fontello-embedded.css b/static/font/css/fontello-embedded.css
index 7c9ca640..16b44010 100755
--- a/static/font/css/fontello-embedded.css
+++ b/static/font/css/fontello-embedded.css
@@ -1,15 +1,15 @@
 @font-face {
   font-family: 'fontello';
-  src: url('../font/fontello.eot?44981686');
-  src: url('../font/fontello.eot?44981686#iefix') format('embedded-opentype'),
-       url('../font/fontello.svg?44981686#fontello') format('svg');
+  src: url('../font/fontello.eot?72267163');
+  src: url('../font/fontello.eot?72267163#iefix') format('embedded-opentype'),
+       url('../font/fontello.svg?72267163#fontello') format('svg');
   font-weight: normal;
   font-style: normal;
 }
 @font-face {
   font-family: 'fontello';
-  src: url('data:application/octet-stream;base64,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') format('woff'),
-       url('data:application/octet-stream;base64,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') format('truetype');
+  src: url('data:application/octet-stream;base64,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') format('woff'),
+       url('data:application/octet-stream;base64,AAEAAAAPAIAAAwBwR1NVQiCLJXoAAAD8AAAAVE9TLzI+L1N8AAABUAAAAFZjbWFwLjP6iAAAAagAAAQmY3Z0IAb//vQAADxgAAAAIGZwZ22KkZBZAAA8gAAAC3BnYXNwAAAAEAAAPFgAAAAIZ2x5ZhmbTxEAAAXQAAAwXmhlYWQVHo+aAAA2MAAAADZoaGVhB8kEBgAANmgAAAAkaG10eJt1/94AADaMAAAArGxvY2H7/wW9AAA3OAAAAFhtYXhwAYANpgAAN5AAAAAgbmFtZcydHyEAADewAAACzXBvc3R3ZLkzAAA6gAAAAddwcmVw5UErvAAAR/AAAACGAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAEDnQGQAAUAAAJ6ArwAAACMAnoCvAAAAeAAMQECAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAQOgA8jQDWf9xAFoDZwCeAAAAAQAAAAAAAAAAAAUAAAADAAAALAAAAAQAAAIeAAEAAAAAARgAAwABAAAALAADAAoAAAIeAAQA7AAAACIAIAAEAALoGegy6DTwj/DJ8ODw5fDz8P7xEvEY8T7xRPFk8eXyNP//AADoAOgy6DTwjvDJ8ODw5fDz8P7xEvEY8T7xRPFk8eXyNP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAiAFQAVABUAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAggAAAAAAAAAKgAA6AAAAOgAAAAAAQAA6AEAAOgBAAAAAgAA6AIAAOgCAAAAAwAA6AMAAOgDAAAABAAA6AQAAOgEAAAABQAA6AUAAOgFAAAABgAA6AYAAOgGAAAABwAA6AcAAOgHAAAACAAA6AgAAOgIAAAACQAA6AkAAOgJAAAACgAA6AoAAOgKAAAACwAA6AsAAOgLAAAADAAA6AwAAOgMAAAADQAA6A0AAOgNAAAADgAA6A4AAOgOAAAADwAA6A8AAOgPAAAAEAAA6BAAAOgQAAAAEQAA6BEAAOgRAAAAEgAA6BIAAOgSAAAAEwAA6BMAAOgTAAAAFAAA6BQAAOgUAAAAFQAA6BUAAOgVAAAAFgAA6BYAAOgWAAAAFwAA6BcAAOgXAAAAGAAA6BgAAOgYAAAAGQAA6BkAAOgZAAAAGgAA6DIAAOgyAAAAGwAA6DQAAOg0AAAAHAAA8I4AAPCOAAAAHQAA8I8AAPCPAAAAHgAA8MkAAPDJAAAAHwAA8OAAAPDgAAAAIAAA8OUAAPDlAAAAIQAA8PMAAPDzAAAAIgAA8P4AAPD+AAAAIwAA8RIAAPESAAAAJAAA8RgAAPEYAAAAJQAA8T4AAPE+AAAAJgAA8UQAAPFEAAAAJwAA8WQAAPFkAAAAKAAA8eUAAPHlAAAAKQAA8jQAAPI0AAAAKgAAAAEAAP/2AtQCjQAkAB5AGyIZEAcEAAIBRwMBAgACbwEBAABmFBwUFAQFGCslFA8BBiIvAQcGIi8BJjQ/AScmND8BNjIfATc2Mh8BFhQPARcWAtQPTBAsEKSkECwQTBAQpKQQEEwQLBCkpBAsEEwPD6SkD3cWEEwPD6WlDw9MECwQpKQQLBBMEBCkpBAQTA8uD6SkDwAEAAD/uAOhAzUACAARACkAQABGQEM1AQcGCQACAgACRwAJBglvCAEGBwZvAAcDB28ABAACBFQFAQMBAQACAwBgAAQEAlgAAgQCTD08IzMjIjIlORgSCgUdKyU0Jg4CHgE2NzQmDgIeATY3FRQGIyEiJic1NDYXMx4BOwEyNjczMhYDBisBFRQGByMiJic1IyImPwE2Mh8BFgLKFB4UAhgaGI0UIBICFhwYRiAW/MsXHgEgFu4MNiOPIjYN7hYgtgkYjxQPjw8UAY8XExH6Ch4K+hIkDhYCEiASBBoMDhYCEiASBBqJsxYgIBazFiABHygoHx4BUhb6DxQBFg76LBH6Cgr6EQAAAAABAAD/0QOhA0cAHwAdQBoSDwoEAwUAAgFHAAIAAm8BAQAAZh0UFwMFFysBFA8BExUUDgEvAQcGIiY1NDcTJyY1NDclNzYyHwEFFgOhD8owDBUM+/oMFgwBMMsOHwEYfgsgDH0BGCAB8AwPxf7pDAsQAQeEhAcSCgQIARfFDwwVBSj+Fxf+KAUAAgAA/9EDoQNHAAkAKQAnQCQcGRQODQkIBwYFAwEMAAIBRwACAAJvAQEAAGYlJBcWEhADBRQrATcvAQ8BFwc3FxMUDwETFRQjIi8BBwYiJjU0NxMnJjU0NyU3NjIfAQUWAnuq62pp7Ksp09P+D8owFwoM+/oMFgwBMMsOHwEYfgsgDH0BGCABKaYi1dUiputvbwGyDA/F/ukMHAeEhAcSCgQIARfFDwwVBSj+Fxf+KAUAAAAAAgAA//8EMAKDACEAQwBCQD8iAQQGAUcDAQEHBgcBBm0JAQYEBwYEawgBAgAHAQIHYAAEAAAEVAAEBABYBQEABABMQkAWISUYIRYVKBMKBR0rJRQGJyEiJi8BLgEzESMiLgE/ATYyHwEWFAYHIxUhMh8BFiUUDwEGIi8BJjQ2OwE1ISIvASY0NjchMhYfAR4BFREzMhYCygoI/ekFBgIDAQIBaw8UAQizCyAMsgkWDmsBQQkFWQQBZQiyDCALswgWDmv+vgkFWQQKCAIYBAYCAwECaw4WEgcMAQIDBAEMAU8WGwrWDAzWChwUAdYGbAXiDQrWDQ3WChsW1gdrBQ0KAQIDBQIIA/6yFgAAAAUAAP/KA+gCuAAJABoAPgBEAFcAV0BUNBsCAARTBgICAFJDAgECUEIpJwgBBgYBBEcABQQFbwACAAEAAgFtAAEGAAEGawAGAwAGA2sAAwNuAAQAAARUAAQEAFgAAAQATExLEy4ZJBQdBwUaKyU3LgE3NDcGBxYBNCYHIgYVFBYyNjU0NjMyNjcUFQYCDwEGIyInJjU0Ny4BJyY0Nz4BMzIXNzYzMhYfARYHFhMUBgcTFhcUBwYHDgEjNz4BNyYnNx4BFxYBNiswOAEigFVeAWoQC0ZkEBYQRDALEMo76jscBQoHRAkZUIYyCwtW/JcyMh8FCgMOCyQLAQkVWEmdBPoLFidU3Hwpd8hFQV0jNWIgC3BPI2o9QzpBhJABZwsQAWRFCxAQCzBEEHUEAWn+WmkyCScGCgcqJHhNESoSg5gKNgkGBhQGAQX+/U6AGwEYGV4TEyQtYGpKCoRpZEA/JGI2EwAAAv///3EDoQMUAAgAIQBUQAofAQEADgEDAQJHS7AhUFhAFgAEAAABBABgAAEAAwIBA2AAAgINAkkbQB0AAgMCcAAEAAABBABgAAEDAwFUAAEBA1gAAwEDTFm3FyMUExIFBRkrATQuAQYUFj4BARQGIi8BBiMiLgI+BB4CFxQHFxYCg5LQkpLQkgEeLDoUv2R7UJJoQAI8bI6kjmw8AUW/FQGJZ5IClsqYBoz+mh0qFb9FPmqQoo5uOgRCZpZNe2S/FQAAAAIAAP+4A1oDEgAIAGoARUBCZVlMQQQABDsKAgEANCgbEAQDAQNHAAUEBW8GAQQABG8AAAEAbwABAwFvAAMCA28AAgJmXFtTUUlIKyoiIBMSBwUWKwE0JiIOARYyNiUVFAYPAQYHFhcWFAcOASciLwEGBwYHBisBIiY1JyYnBwYiJyYnJjQ3PgE3Ji8BLgEnNTQ2PwE2NyYnJjQ3PgEzMh8BNjc2NzY7ATIWHwEWFzc2MhcWFxYUBw4BBxYfAR4BAjtSeFICVnRWARwIB2gKCxMoBgUPUA0HB00ZGgkHBBB8CAwQGxdPBhAGRhYEBQgoCg8IZgcIAQoFaAgOFyUGBQ9QDQcITRgaCQgDEXwHDAEPHBdPBQ8HSBQEBAkoCg8IZgcKAWU7VFR2VFR4fAcMARAeFRsyBg4GFVABBTwNCEwcEAoHZwkMPAUGQB4FDgYMMg8cGw8BDAd8BwwBEBkaIC0HDAcUUAU8DQhMHBAKB2cJCzsFBUMcBQ4GDDIPHBoQAQwAAAACAAAAAANrAsoAJwBAAEJAPxQBAgEBRwAGAgUCBgVtAAUDAgUDawAEAwADBABtAAEAAgYBAmAAAwQAA1QAAwMAWAAAAwBMFiMZJSolJwcFGyslFBYPAQ4BByMiJjURNDY7ATIWFRcWDwEOAScjIgYHERQWFzMyHgIBFAcBBiImPQEjIiY9ATQ2NzM1NDYWFwEWAWUCAQIBCAiyQ15eQ7IICgEBAQIBCAiyJTQBNiS0BgIGAgIGC/7RCxwW+g4WFg76FhwLAS8LNQISBQ4JAgNeQwGIQ14KCAsJBg0HCAE0Jv54JTQBBAIIASwOC/7QChQPoRYO1g8UAaEOFgIJ/tAKAAAAAAEAAP/uA7YCMAAUABlAFg0BAAEBRwIBAQABbwAAAGYUFxIDBRcrCQEGIicBJjQ/ATYyFwkBNjIfARYUA6v+YgoeCv5iCwtdCh4KASgBKAscDFwLAZb+YwsLAZ0LHgpcCwv+2AEoCwtcCxwAAAH//v97A7gDZwAxAB9AHAABAAABVAABAQBYAgEAAQBMAQAqKQAxATEDBRQrFyInLgE3ATYXHgEXFgcBDgEnJjY3ATYWBwEGFxY3NjcBNiYnJgcBBh4CNwE2FgcBBvRmREgEVgHwUF4sRgwaUP4mKGAgHgYsAUwYNBr+tCwYDAwYFgHaMiA8Njb+EkIEZIZKAfAYNBr+EFKFSEbAXgHwUBoMRixgUP4mKAogGGQqAU4aNBj+tCwaCAIEFgHaMnYQDjL+EkyGYgRAAe4YLhr+EFIAAAAABP///7gELwMSAAgADwAfAC8AVUBSHRQCAQMPAQABDg0MCQQCABwVAgQCBEcAAgAEAAIEbQAGBwEDAQYDYAABAAACAQBgAAQFBQRUAAQEBVgABQQFTBEQLismIxkXEB8RHxMTEggFFysBFA4BJjQ2HgEBFSE1NxcBJSEiBgcRFBY3ITI2JxE0JhcRFAYHISImNxE0NjchMhYBZT5aPj5aPgI8/O6yWgEdAR78gwcKAQwGA30HDAEKUTQl/IMkNgE0JQN9JTQCGC0+AkJWQgQ6/vr6a7NZAR2hCgj9WgcMAQoIAqYIChL9WiU0ATYkAqYlNAE2AAv///9xBC8DEgAPAB8ALwA/AE8AXwBvAH8AjwCfAK8AxEAZkEACCQiIgGAgBAUEeDgCAwJQMAADAQAER0uwIVBYQDcAFRIMAggJFQhgEwEJEAEEBQkEYBENAgUOBgICAwUCYA8BAwoBAAEDAGALBwIBARRYABQUDRRJG0A+ABUSDAIICRUIYBMBCRABBAUJBGARDQIFDgYCAgMFAmAPAQMKAQABAwBgCwcCARQUAVQLBwIBARRYABQBFExZQCauq6ajnpuWlI6MhoR+fHZzbmtmZF5bVlROSzU1NSY1JjU1MxYFHSsXNTQmByMiBh0BFBY7ATI2JzU0JisBIgYdARQWNzMyNic1NCYnIyIGHQEUFhczMjYBETQmIyEiBhcRFBYzITI2ATU0JgcjIgYdARQWOwEyNgE1NCYHIyIGBxUUFjsBMjYDETQmByEiBhcRFBYXITI2FzU0JisBIgYHFRQWNzMyNjc1NCYnIyIGBxUUFhczMjY3NTQmByMiBgcVFBY7ATI2NxEUBiMhIiY3ETQ2NyEyFtYUD0gOFhYOSA4WARQPSA4WFg5IDhYBFA9IDhYWDkgOFgI7Fg7+Uw4WARQPAa0PFP3FFA9IDhYWDkgOFgMRFg5HDxQBFg5HDxTVFg7+Uw4WARQPAa0PFNcWDkcPFAEWDkcPFAEWDkcPFAEWDkcPFAEWDkcPFAEWDkcPFEg0JfyDJDYBNCUDfSU0JEgOFgEUD0gOFhbkSA4WFg5IDhYBFOZHDxQBFg5HDxQBFv5hAR4OFhYO/uIOFhYCkUcPFgEUEEcOFhb9i0gOFgEUD0gOFhYBuwEdDxYBFBD+4w8UARbJSA4WFg5IDhYBFOZHDxQBFg5HDxQBFuRHDxYBFBBHDhYWZ/0SJTQ0JQLuJTQBNgABAAD/xwJ0A0sAFAAXQBQJAQABAUcAAQABbwAAAGYcEgIFFisJAQYiLwEmNDcJASY0PwE2MhcBFhQCav5iCxwLXQsLASj+2AsLXQoeCgGeCgFw/mEKCl0LHAsBKQEoCxwLXQsL/mILHAAAAAABAAD/xwKYA0sAFAAXQBQBAQABAUcAAQABbwAAAGYXFwIFFisJAhYUDwEGIicBJjQ3ATYyHwEWFAKO/tcBKQoKXQscC/5iCwsBngoeCl0KArH+2P7XCh4KXQoKAZ8KHgoBngsLXQoeAAEAAAAAA7YCTQAUABlAFgUBAAIBRwACAAJvAQEAAGYXFBIDBRcrJQcGIicJAQYiLwEmNDcBNjIXARYUA6tcCx4K/tj+2AscC10LCwGeCxwLAZ4LclwKCgEp/tcKClwLHgoBngoK/mILHAAAAAMAAP9xA8QDWgAMABoAQgDpQAwAAQIAAUcoGwIDAUZLsA5QWEArBwEFAQABBWUAAAIBAGMAAwABBQMBYAAEBAhYAAgIDEgAAgIGWAAGBg0GSRtLsCFQWEAsBwEFAQABBWUAAAIBAAJrAAMAAQUDAWAABAQIWAAICAxIAAICBlgABgYNBkkbS7AkUFhAKQcBBQEAAQVlAAACAQACawADAAEFAwFgAAIABgIGXAAEBAhYAAgIDARJG0AvBwEFAQABBWUAAAIBAAJrAAgABAMIBGAAAwABBQMBYAACBgYCVAACAgZYAAYCBkxZWVlADB8iEigWESMTEgkFHSsFNCMiJjc0IhUUFjcyJSEmETQuAiIOAhUQBRQGKwEUBiImNSMiJjU+BDc0NjcmNTQ+ARYVFAceARcUHgMB/QkhMAESOigJ/owC1pUaNFJsUjQaAqYqHfpUdlT6HSocLjAkEgKEaQUgLCAFaoIBFiIwMFkIMCEJCSk6AamoASkcPDgiIjg8HP7XqB0qO1RUOyodGDJUXohNVJIQCgsXHgIiFQsKEJJUToZgUjQAAAACAAAAAAKDAxIABwAfACpAJwUDAgABAgEAAm0AAgJuAAQBAQRUAAQEAVgAAQQBTCMTJTYTEAYFGisTITU0Jg4BFwURFAYHISImJxE0NhczNTQ2MhYHFTMyFrMBHVR2VAEB0CAW/ekXHgEgFhGUzJYCEhceAaxsO1QCUD2h/r4WHgEgFQFCFiABbGaUlGZsHgAD//3/uANZAxIADAG9AfcCd0uwCVBYQTwAvQC7ALgAnwCWAIgABgADAAAAjwABAAIAAwDaANMAbQBZAFEAQgA+ADMAIAAZAAoABwACAZ4BmAGWAYwBiwF6AXUBZQFjAQMA4QDgAAwABgAHAVMBTQEoAAMACAAGAfQB2wHRAcsBwAG+ATgBMwAIAAEACAAGAEcbS7AKUFhBQwC7ALgAnwCIAAQABQAAAL0AAQADAAUAjwABAAIAAwDaANMAbQBZAFEAQgA+ADMAIAAZAAoABwACAZ4BmAGWAYwBiwF6AXUBZQFjAQMA4QDgAAwABgAHAVMBTQEoAAMACAAGAfQB2wHRAcsBwAG+ATgBMwAIAAEACAAHAEcAlgABAAUAAQBGG0E8AL0AuwC4AJ8AlgCIAAYAAwAAAI8AAQACAAMA2gDTAG0AWQBRAEIAPgAzACAAGQAKAAcAAgGeAZgBlgGMAYsBegF1AWUBYwEDAOEA4AAMAAYABwFTAU0BKAADAAgABgH0AdsB0QHLAcABvgE4ATMACAABAAgABgBHWVlLsAlQWEA1AAIDBwMCB20ABwYDBwZrAAYIAwYIawAIAQMIAWsAAQFuCQEAAwMAVAkBAAADWAUEAgMAA0wbS7AKUFhAOgQBAwUCBQNlAAIHBQIHawAHBgUHBmsABggFBghrAAgBBQgBawABAW4JAQAFBQBUCQEAAAVWAAUABUobQDUAAgMHAwIHbQAHBgMHBmsABggDBghrAAgBAwgBawABAW4JAQADAwBUCQEAAANYBQQCAwADTFlZQRkAAQAAAdgB1gG5AbcBVwFWAMcAxQC1ALQAsQCuAHkAdgAHAAYAAAAMAAEADAAKAAUAFCsBMh4BFA4BIi4CPgEBDgEHMj4BNT4BNzYXJjY/ATY/AQYmNRQHNCYGNS4ELwEmNC8BBwYUKgEUIgYiBzYnJiM2JiczLgInLgEHBhQfARYGHgEHBg8BBhYXFhQGIg8BBiYnJicmByYnJgcyJgc+ASM2PwE2JxY/ATY3NjIWMxY0JzInJicmBwYXIg8BBi8BJiciBzYmIzYnJiIPAQYeATIXFgciBiIGFgcuAScWJyMiBiInJjc0FycGBzI2PwE2FzcXJgcGBxYHJy4BJyIHBgceAhQ3FgcyFxYXFgcnJgYWMyIPAQYfAQYWNwYfAx4CFwYWByIGNR4CFBY3NicuAjUzMh8BBh4CMx4BBzIeBB8DFjI/ATYWFxY3Ih8BHgEVHgEXNjUGFjM2NQYvASY0JjYXMjYuAicGJicUBhUjNjQ/ATYvASYHIgcOAyYnLgE0PwE2JzY/ATY7ATI0NiYjFjYXFjcnJjcWNx4CHwEWNjcWFx4BPgEmNSc1LgE2NzQ2PwE2JzI3JyYiNzYnPgEzFjYnPgE3FjYmPgEVNzYjFjc2JzYmJzMyNTYnJgM2NyYiLwE2Ji8BJi8BJg8BIg8BFSYnIi4BDgEPASY2JgYPAQY2BhUOARUuATceARcWBwYHBhcUBhYBrXTGcnLG6MhuBnq8ARMCCAMBAgQDERUTCgEMAggGAwEHBgQECgUGBAEIAQIBAwMEBAQEBgEGAggJBQQGAgQDAQgMAQUcBAMCAgEIAQ4BAgcJAwQEAQQCAwEHCgIEBQ0DAxQOEwQIBgECAQIFCQIBEwkGBAIFBgoDCAQHBQIDBgkEBgEFCQQFAwMCBQQBDgcLDwQQAwMBCAQIAQgDAQgEAwICAwQCBBIFAwwMAQMDAgwZGwMGBQUTBQMLBA0LAQQCBgQIBAkEUTIEBQIGBQMBGAoBAgcFBAMEBAQBAgEBAQIKBwcSBAcJBAMIBAIOAQECAg4CBAICDwgDBAMCAwUBBAoKAQQIBAUMBwIDCAMJBxYGBgUICBAEFAoBAgQCBgMOAwQBCgUIEQoCAgICAQUCBAEKAgMMAwIIAQIIAwEDAgcLBAECAggUAwgKAQIBBAIDBQIBAwIBAwEEGAMJAwEBAQMNAg4EAgMBBAMFAgYIBAICAQgEBAcIBQcMBAQCAgIGAQUEAwIDBQwEAhIBBAICBQ4JAgIKCAUJAgYGBwUJDAppc1ABDAENAQQDFQEDBQIDAgIBBQwIAwYGBgYBAQQIBAoBBwYCCgIEAQwBAQICBAsPAQIJCgEDEnTE6sR0dMTqxHT+3QEIAgYGAQQIAwULAQwBAwICDAEKBwIDBAIEAQIGDAUGAwMCBAEBAwMEAgQBAwMCAggEAgYEAQMEAQQEBgcDCAcKBwQFBgUMAwECBAIBAwwJDgMEBQcIBQMRAgMOCAUMAwEDCQkGBAMGAQ4ECgQBAgUCAgYKBAcHBwEJBQgHCAMCBwMCBAIGAgQFCgMDDgIFAgIFBAcCAQoIDwIDAwcDAg4DAgMEBgQGBAQBAS1PBAEIBAMEBg8KAgYEBQQFDgkUCwIBBhoCARcFBAYDBRQDAxAFAgEECAUIBAELGA0FDAICBAQMCA4EDgEKCxQHCAEFAw0CAQIBEgMKBAQJBQYCAwoDAgMFDAIQCBIDAwQEBgIECgcOAQUCBAEEAgIQBQ8FAgUDAgsCCAQEAgIEGA4JDgUJAQQGAQIDAgEEAwYHBgUCDwoBBAECAwECAwgFFwQCCAgDBQ4CCgoFAQIDBAsJBQICAgIGAgoGCgQEBAMBBAoEBgEHAgEHBgUEAgMBBQQC/g0VVQICBQQGAg8BAQIBAgEBAwIKAwYCAgUGBwMOBgIBBQQCCAECCAICAgIFHAgRCQ4JDAIEEAcAAgAA/6UDjwMkAAwAFwAiQB8UAQECEQUCAAECRwACAQJvAAEAAW8AAABmGxYiAwUXKyUUBiciJz4BJzQ2MhYBFhQHAS4BJwE2MgHQrntRRERSAVh6WAGeICH+whRSOAE+IF7RfLABKCeKUj1YWAH1IF4g/sI3VBQBPiAAAAP/9f+4A/MDWQAPACEAMwBkQAwbEQIDAgkBAgEAAkdLsCRQWEAdAAIFAwUCA20AAwAAAQMAYAABAAQBBFwABQUMBUkbQCIABQIFbwACAwJvAAMAAAEDAGAAAQQEAVQAAQEEWAAEAQRMWUAJFzgnJyYjBgUaKyU1NCYrASIGHQEUFhczMjYnEzQnJisBIgcGFRcUFjczMjYDARYHDgEHISImJyY3AT4BMhYCOwoHbAcKCgdsBwoBCgUHB3oGCAUJDAdnCAwIAawUFQkiEvymEiIJFRQBrQkiJiJaaggKCghqCAoBDNcBAQYEBgYECP8FCAEGAhD87iMjERIBFBAjIwMSERQUAAAAAAEAAAAAAxIDEgAjAClAJgAEAwRvAAEAAXAFAQMAAANUBQEDAwBYAgEAAwBMIzMlIzMjBgUaKwEVFAYnIxUUBgcjIiY3NSMiJic1NDY3MzU0NjsBMhYXFTMyFgMSIBboIBZrFiAB6BceASAW6B4XaxceAegXHgG+axYgAekWHgEgFekeF2sXHgHoFiAgFuggAAL//f+4A18DEgAHABQAK0AoAAMAAAEDAGAEAQECAgFUBAEBAQJYAAIBAkwAABIRDAsABwAHEQUFFSslESIOAh4BARQOASIuAj4BMh4BAa1TjFACVIgCAXLG6MhuBnq89Lp+NQJgUoykjFIBMHXEdHTE6sR0dMQAAAUAAAAAA+QDEgAGAA8AOQA+AEgBB0AVQD47EAMCAQcABDQBAQACR0EBBAFGS7AKUFhAMAAHAwQDBwRtAAAEAQEAZQADAAQAAwRgCAEBAAYFAQZfAAUCAgVUAAUFAlgAAgUCTBtLsAtQWEApAAAEAQEAZQcBAwAEAAMEYAgBAQAGBQEGXwAFAgIFVAAFBQJYAAIFAkwbS7AYUFhAMAAHAwQDBwRtAAAEAQEAZQADAAQAAwRgCAEBAAYFAQZfAAUCAgVUAAUFAlgAAgUCTBtAMQAHAwQDBwRtAAAEAQQAAW0AAwAEAAMEYAgBAQAGBQEGXwAFAgIFVAAFBQJYAAIFAkxZWVlAFgAAREM9PDEuKSYeGxYTAAYABhQJBRUrJTcnBxUzFQEmDwEGFj8BNhMVFAYjISImNRE0NjchMhceAQ8BBicmIyEiBgcRFBYXITI2PQE0PwE2FgMXASM1AQcnNzYyHwEWFAHwQFVANQEVCQnECRIJxAkkXkP+MENeXkMB0CMeCQMHGwgKDQz+MCU0ATYkAdAlNAUkCBg3of6JoQJvM6EzECwQVRDEQVVBHzYBkgkJxAkSCcQJ/r5qQ15eQwHQQl4BDgQTBhwIBAM0Jf4wJTQBNiRGBwUkCAgBj6D+iaABLjShNA8PVRAsAAQAAP+4A00DBgAGABQAGQAkAIZAFx4BAgUdFg4HBAMCGQMCAwADAQEBAARHS7ASUFhAJwAFAgVvAAIDAm8AAwADbwAAAQEAYwYBAQQEAVIGAQEBBFcABAEESxtAJgAFAgVvAAIDAm8AAwADbwAAAQBvBgEBBAQBUgYBAQEEVwAEAQRLWUASAAAhIBgXEA8JCAAGAAYUBwUVKzM3JwcVMxUBNCMiBwEGFRQzMjcBNicXASM1ARQPASc3NjIfARbLMoMzSAFfDAUE/tEEDQUEAS8DHuj+MOgDTRRd6F0UOxaDFDODMzxHAgYMBP7SBAYMBAEuBHHo/i/pAZodFV3pXBUVgxYAA////6ED6AMnAAwAGQA6AEtASAkCCAMAAQBvAwEBBAFvCgEEBgRvAAYFBm8ABQcHBVQABQUHWAAHBQdMGxoODQEAMTAnJiEgGjobOhQTDRkOGQcGAAwBDAsFFCsBIg4BFB4BMj4BNC4BISIOARQeATI+ATQuARMiDwEGBw4BJyYvASYOARQXFh8BFhcWJDc2PwE2NzY0JgEFHTMdHTI8Mh4eMgG/HjIeHjI8Mh4eMrIWDwxSaGXZZmhSDxArHxACBglie3gBAXd7YQUGAw8fAycnQk5DJydDTkInJ0JOQycnQ05CJ/2pEAxQKykDJyhODxABICwQAwUJXC8vAzEyXwUGAxEsHwAAAv/9/3ED6wNZACcAUACwQA4kFgYDAQJMQjQDBAMCR0uwIVBYQCYAAQIDAgEDbQcBAwQCAwRrAAICAFgGAQAADEgABAQFWAAFBQ0FSRtLsCRQWEAjAAECAwIBA20HAQMEAgMEawAEAAUEBVwAAgIAWAYBAAAMAkkbQCkAAQIDAgEDbQcBAwQCAwRrBgEAAAIBAAJgAAQFBQRUAAQEBVgABQQFTFlZQBcpKAEAR0UxLyhQKVAUEgwKACcBJwgFFCsBIgcGBwYHFBYfATMyNTY3Njc2MzIWFwcGFh8BFj4BLwEuAQ8BJicmASIVBgcGBwYjIicmJzc2Ji8BJg4BHwEeAT8BFhcWMzI3Njc2NzQmLwEB7oNxbUNFBQUEBFQTBTUzU1djT440OgkCDPcLFAoEOgISCUFEWlwBMxMFNTNTVmNQSEU1OwgCC/gLFAoEOgISCkBEWl1mgnFuQkUFBQQEA1lAPmtugQgJAgESYlNRLzE+ODkJEwMyAwkWEOMICwY8RiYo/gQSYlNRLzEgHjg5CRMDMgMJFhDjCAsGPEYmKEA+a26CCAgCAQAAAAAC////YgPqA1kAHwBBAElACgQBAgABRzEBAURLsCRQWEATAAIAAQACAW0AAQFuAwEAAAwASRtADwMBAAIAbwACAQJvAAEBZllADQEAISAUEwAfAR8EBRQrASIHBgcxNjc2FxYXFhcWBgcGFx4BNz4BNzYmJy4BJyYBIgcGBwYHBhYXFhcWFxY3NjcxBgcGJyYnJicmNjc2JicmAfJXUVREVmxqZ2pPQiEhBiUOGhAzEQMKAiMBJSaQXlv+BRgPBAQGASQCJCZIW3t3eX1hVmxqZ2tPQiEgBSUIBg4SA1kdHjlFFRQeIE9CVlOzUSkbEAERAw8GWsNZXZAmJf7uEAQGCAZaw1ldSFskIhgZUUUVFB4gT0JWU7NRFSEOEgAAAAACAAAAAAPoA1kAJwA/AH1AEygBAQYRAQIBNy4CBAIhAQUEBEdLsCRQWEAkAAQCBQIEBW0ABQMCBQNrAAEAAgQBAmAAAwAAAwBcAAYGDAZJG0AsAAYBBm8ABAIFAgQFbQAFAwIFA2sAAQACBAECYAADAAADVAADAwBYAAADAExZQAo6GyU1NiUzBwUbKwEVFAYjISImNRE0NjchMhYdARQGIyEiBgcRFBYXITI2PQE0NjsBMhYTERQOAS8BAQYiLwEmNDcBJyY0NjMhMhYDEl5D/jBDXl5DAYkHCgoH/nclNAE2JAHQJTQKCCQICtYWHAti/pQFEARABgYBbGILFg4BHQ8UAVOyQ15eQwHQQl4BCggkCAo0Jf4wJTQBNiSyCAoKAdr+4w8UAgxi/pQGBkAFDgYBbGILHBYWAAAAAgAA/7gDWQMSABgAKAAyQC8SCQICAAFHAAIAAQACAW0ABAAAAgQAYAABAwMBVAABAQNYAAMBA0w1NxQZMwUFGSsBETQmJyEiBh8BAQYUHwEWMjcBFxYzMjc2ExEUBgchIiY1ETQ2NyEyFgLKFA/+9BgTElD+1gsLOQscCwEqUQoPBggVj15D/elDXl5DAhdDXgFTAQwPFAEtEFD+1gseCjkKCgEqUAsDCgE1/ehCXgFgQQIYQl4BYAAAAAADAAAAAANaAssADwAfAC8AN0A0KAEEBQgAAgABAkcABQAEAwUEYAADAAIBAwJgAAEAAAFUAAEBAFgAAAEATCY1JjUmMwYFGislFRQGByEiJic1NDY3ITIWAxUUBichIiYnNTQ2FyEyFgMVFAYjISImJzU0NhchMhYDWRQQ/O8PFAEWDgMRDxYBFBD87w8UARYOAxEPFgEUEPzvDxQBFg4DEQ8Wa0cPFAEWDkcPFAEWARBIDhYBFA9IDhYBFAEORw4WFg5HDxYBFAAAAAAC////uAPpAsoAGQA4AC1AKgkAAgIDAUcAAwIDbwACAQJvAAEAAAFUAAEBAFgAAAEATDc0JiQ6MwQFFisBERQGByEiJjcRFhcWFx4CNzMyPgE3Njc2NxQGBwYPAQ4CJyMiJi8BLgEvASYnLgEnNDYzITIWA+g0JfzKJDYBGR/KTCAmRBsCHEIoH1+3IBg2KdI0NQwiHg0CDB4RHg0iBpNgEiM8AS4rAzYkNgHN/kUlNAE2JAG7GxaJNxgaHAEaHBdEfBa/LFAdkiMnCRIMAQoKEggcA2VCDhdSJCs6NAAAAAIAAP9xA+gCygAXAD0AYkAMNAgCAQAmCwIDAgJHS7AhUFhAFwAEBQEAAQQAYAABAAIDAQJgAAMDDQNJG0AeAAMCA3AABAUBAAEEAGAAAQICAVQAAQECWAACAQJMWUARAQA7OiQiHRsSEAAXARcGBRQrASIOAQcUFh8BBwYHNj8BFxYzMj4CLgEBFA4BIyInBgcGByMiJic1JjYmPwE2PwE+Aj8BLgEnND4BIB4BAfRyxnQBUEkwDw0aVUUYICYicsZ0AnjCAYCG5ognKm6TGyQDCA4CAgQCAwwEDRQHFBAHD1hkAYbmARDmhgKDToRMPnIpHDUzLiQ8FQMFToSYhE7+4mGkYARhJggEDAkBAggEAw8FDhYIHBwTKjKSVGGkYGCkAAACAAD/cQPEA1oADAA0AJ5ACxoNAgEGAAECAAJHS7AhUFhAJwABBgMGAQNtBQEDAAYDAGsAAAIGAAJrAAYGDEgAAgIEWAAEBA0ESRtLsCRQWEAkAAEGAwYBA20FAQMABgMAawAAAgYAAmsAAgAEAgRcAAYGDAZJG0AlAAYBBm8AAQMBbwUBAwADbwAAAgBvAAIEBAJUAAICBFgABAIETFlZQAofIhIjIxMSBwUbKwU0IyImNzQiFRQWNzIlFAYrARQGIiY1IyImNT4ENzQ2NyY1ND4BFhUUBx4BFxQeAwH9CSEwARI6KAkBxyod+lR2VPodKhwuMCQSAoRpBSAsIAVqggEWIjAwWQgwIQkJKToBqR0qO1RUOyodGDJUXohNVJIQCgsXHgIiFQsKEJJUToZgUjQAAAIAAP+4A1kDEgAjADMAQUA+DQEAAR8BBAMCRwIBAAEDAQADbQUBAwQBAwRrAAcAAQAHAWAABAYGBFQABAQGWAAGBAZMNTUjMxYjJCMIBRwrATU0JgcjNTQmJyMiBgcVIyIGBxUUFjczFRQWOwEyNjc1MzI2ExEUBgchIiY1ETQ2NyEyFgLKFA+zFg5HDxQBsg8UARYOshYORw8UAbMOFo5eQ/3pQ15eQwIXQ14BQUgOFgGzDxQBFg6zFA9IDhYBsw4WFg6zFAE//ehCXgFgQQIYQl4BYAAAAAEAAP+4A+gDNQArAClAJiYBBAMBRwADBANvAAQBBG8AAQIBbwACAAJvAAAAZiMXEz0XBQUZKyUUBw4CBwYiJjU0Njc2NTQuBSsBFRQGIicBJjQ3ATYyFgcVMyAXFgPoRwEKBAUHEQoCAQMUIjg+VlY3fRQgCf7jCwsBHQscGAJ9AY5aHuhdnwQSEAQKDAgFFAMmHzhaQDAeEgaPDhYLAR4KHgoBHgoUD4/hSwAF//3/uANfAxIAEwAcACUANgBDAEJAPx0UAgIDAUcACQAGAwkGYAUBAwQBAgEDAmAAAQAABwEAYAAHCAgHVAAHBwhYAAgHCExBQBcXFhMUExkZEgoFHSsBDgEuAScmPgEWFx4BMjY3PgEeASUUBiImPgIWBRQGIi4BPgEWFzQuAiIOAh4DPgM3FA4BIi4CPgEyHgECeRVwjnIUBA4cGgQOTF5KDwQcGhD+5io6LAIoPiYBICo8KAIsOC6NOl6GjohcPAI4YISSgmI2SXLG6MhuBnq89Lp+AQFDVAJQRQ4aCQwQLDg4LA8OChrlHioqPCgCLBweKio8KAIsq0mEYDg4YISShF48BDRmfE11xHR0xOrEdHTEAAAAAQAAAAACgwNaACMAZkuwJFBYQCAABAUABQQAbQIGAgABBQABawABAW4ABQUDWAADAwwFSRtAJQAEBQAFBABtAgYCAAEFAAFrAAEBbgADBQUDVAADAwVYAAUDBUxZQBMBACAfGxgUExAOCQYAIwEjBwUUKwEyFhcRFAYHISImJxE0NhczNTQ2HgEHFAYrASImNTQmIgYXFQJNFx4BIBb96RceASAWEZTMlgIUDyQOFlR2VAEBrB4X/r4WHgEgFQFCFiABs2eUApBpDhYWDjtUVDuzAAAC//3/uANZAxIADAAaACZAIwMBAAIAbwACAQECVAACAgFYAAECAUwBABkYBwYADAEMBAUUKwEyHgEUDgEiLgI+AQE2NCclJgYVERQXFjI3Aa10xnJyxujIbgZ6vAFQEhL+0BEkEgkSCAMSdMTqxHR0xOrEdP40CioKsgsVFP6aFAsEBQADAAD/uAN9AxIACAAYAFUATkBLSgEIBx8bAgADAAEBADERAgIBBEcABwgHbwAIAwhvBgEDAANvAAABAG8ABAIEcAABAgIBVAABAQJYBQECAQJMLywVJD8mNRMSCQUdKzc0LgEOAR4BNhMRFAYHIyImJxE0NhczMhYFFAcWFRYHFgcGBxYHBgcjIi4BJyYnIiYnETQ+Ajc2Nz4CNz4DMzIeBAYXFA4BBw4CBzMyFo8WHRQBFh0UWhQQoA8UARYOoA8WApQfCQEZCQkJFgUgJEpIJVYyKkUTDxQBFBs6HCYSCg4GBQQGEBUPGSoYFAgGAgIMCAwBCAQDmytAaw8UARYdFAEWASz+mw8UARYOAWUOFgEUDzAjGRIqIh8jHxU+JysBEg4PGAEWDgFlDhYBQCMxEgoiFBgWGCIWDBIaGCASDRUsFhQEDA4GQAAAAAUAAP9xA+gDWQAQABQAJQAvADkA20AXMykCBwghAQUCHRUNDAQABQNHBAEFAUZLsCFQWEAtBgwDCwQBBwIHAQJtAAIFBwIFawAFAAcFAGsJAQcHCFgKAQgIDEgEAQAADQBJG0uwJFBYQCwGDAMLBAEHAgcBAm0AAgUHAgVrAAUABwUAawQBAABuCQEHBwhYCgEICAwHSRtAMgYMAwsEAQcCBwECbQACBQcCBWsABQAHBQBrBAEAAG4KAQgHBwhUCgEICAdWCQEHCAdKWVlAIBERAAA3NTIxLSsoJyQiHx4bGREUERQTEgAQAA83DQUVKwERFAYHERQGByEiJicREzYzIREjEQERFAYHISImJxEiJicRMzIXJRUjNTQ2OwEyFgUVIzU0NjsBMhYBiRYOFBD+4w8UAYsEDQGfjgI7Fg7+4w8UAQ8UAe0NBP4+xQoIoQgKAXfFCgihCAoCpv5UDxQB/r8PFAEWDgEdAegM/ngBiP4M/uMPFAEWDgFBFg4BrAytfX0ICgoIfX0ICgoAAAADAAD/uAR4AxMACAAsAE8Ad0B0LCUCCgcgHw4DAwIyEwIECANHAAEHAW8ABwoHbw4BAAoNCgANbQALDQINCwJtDAEKAA0LCg1gBgECBQEDCAIDYAAIBAQIVAAICARYCQEECARMAQBNS0pIRURBPzYzMS8pKCQiHBsXFRIQCgkFBAAIAQgPBRQrASImPgEeAgYFMzIWBxUUBisBFRQGByMiJj0BIyImJzU0NjczNTQ2FzMyFhcBFBY3MxUGIyEiJjU0PgUXMhceATI2NzYzMhcjIgYVAYlZfgJ6tngGhAHDxAcMAQoIxAwGawgKxQcKAQwGxQoIawcKAf5lKh2PJjn+GENSBAwSHiY6IQsLLFRkVCwLC0kwfR0qAWV+sIACfLR6SQwGawgKxQcKAQwGxQoIawcKAcQHDAEKCP6/HSwBhRxOQx44QjY4IhoCCiIiIiIKNiodAAAAAAEAAAABAACODRJUXw889QALA+gAAAAA2Mkl9gAAAADYySX2//X/YgR4A2cAAAAIAAIAAAAAAAAAAQAAA1n/cQAABHb/9f/zBHgAAQAAAAAAAAAAAAAAAAAAACsD6AAAAxEAAAOgAAADoAAAA6AAAAQvAAAD6AAAA6D//wNZAAADoAAAA+gAAAOr//4EL///BC///wLKAAACygAAA+gAAAPoAAACggAAA1n//QOgAAAD6P/1AxEAAANZ//0D6AAAA1kAAAPn//8D6P/9A+n//wPoAAADWQAAA1kAAAPo//8D6AAAA+gAAANZAAAD6AAAA1n//QKCAAADWf/9A6AAAAPoAAAEdgAAAAAAAABKAM4BEgFsAfICpAMGA8gESgSABOoFZAa2BuwHIAdWCCoIcgx2DLQNOA2ADbwOsg80D7gQjhEeEbwSGhKAEvATghQcFIgU3hVqFdQWFha8F4QYLwABAAAAKwH4AAsAAAAAAAIALAA8AHMAAACqC3AAAAAAAAAAEgDeAAEAAAAAAAAANQAAAAEAAAAAAAEACAA1AAEAAAAAAAIABwA9AAEAAAAAAAMACABEAAEAAAAAAAQACABMAAEAAAAAAAUACwBUAAEAAAAAAAYACABfAAEAAAAAAAoAKwBnAAEAAAAAAAsAEwCSAAMAAQQJAAAAagClAAMAAQQJAAEAEAEPAAMAAQQJAAIADgEfAAMAAQQJAAMAEAEtAAMAAQQJAAQAEAE9AAMAAQQJAAUAFgFNAAMAAQQJAAYAEAFjAAMAAQQJAAoAVgFzAAMAAQQJAAsAJgHJQ29weXJpZ2h0IChDKSAyMDE5IGJ5IG9yaWdpbmFsIGF1dGhvcnMgQCBmb250ZWxsby5jb21mb250ZWxsb1JlZ3VsYXJmb250ZWxsb2ZvbnRlbGxvVmVyc2lvbiAxLjBmb250ZWxsb0dlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABDACkAIAAyADAAMQA5ACAAYgB5ACAAbwByAGkAZwBpAG4AYQBsACAAYQB1AHQAaABvAHIAcwAgAEAAIABmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQBmAG8AbgB0AGUAbABsAG8AUgBlAGcAdQBsAGEAcgBmAG8AbgB0AGUAbABsAG8AZgBvAG4AdABlAGwAbABvAFYAZQByAHMAaQBvAG4AIAAxAC4AMABmAG8AbgB0AGUAbABsAG8ARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAAZjYW5jZWwGdXBsb2FkBHN0YXIKc3Rhci1lbXB0eQdyZXR3ZWV0B2V5ZS1vZmYGc2VhcmNoA2NvZwZsb2dvdXQJZG93bi1vcGVuBmF0dGFjaAdwaWN0dXJlBXZpZGVvCnJpZ2h0LW9wZW4JbGVmdC1vcGVuB3VwLW9wZW4EYmVsbARsb2NrBWdsb2JlBWJydXNoCWF0dGVudGlvbgRwbHVzBmFkanVzdARlZGl0BnBlbmNpbAllbW8taGFwcHkFc3BpbjMFc3BpbjQIbGluay1leHQMbGluay1leHQtYWx0BG1lbnUIbWFpbC1hbHQNY29tbWVudC1lbXB0eQhiZWxsLWFsdAxwbHVzLXNxdWFyZWQFcmVwbHkFc21pbGUNbG9jay1vcGVuLWFsdAxwbGF5LWNpcmNsZWQNdGh1bWJzLXVwLWFsdApiaW5vY3VsYXJzCXVzZXItcGx1cwAAAAABAAH//wAPAAAAAAAAAAAAAAAAAAAAAAAYABgAGAAYA2f/YgNn/2KwACwgsABVWEVZICBLuAAOUUuwBlNaWLA0G7AoWWBmIIpVWLACJWG5CAAIAGNjI2IbISGwAFmwAEMjRLIAAQBDYEItsAEssCBgZi2wAiwgZCCwwFCwBCZasigBCkNFY0VSW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCxAQpDRWNFYWSwKFBYIbEBCkNFY0UgsDBQWCGwMFkbILDAUFggZiCKimEgsApQWGAbILAgUFghsApgGyCwNlBYIbA2YBtgWVlZG7ABK1lZI7AAUFhlWVktsAMsIEUgsAQlYWQgsAVDUFiwBSNCsAYjQhshIVmwAWAtsAQsIyEjISBksQViQiCwBiNCsQEKQ0VjsQEKQ7ABYEVjsAMqISCwBkMgiiCKsAErsTAFJbAEJlFYYFAbYVJZWCNZISCwQFNYsAErGyGwQFkjsABQWGVZLbAFLLAHQyuyAAIAQ2BCLbAGLLAHI0IjILAAI0JhsAJiZrABY7ABYLAFKi2wBywgIEUgsAtDY7gEAGIgsABQWLBAYFlmsAFjYESwAWAtsAgssgcLAENFQiohsgABAENgQi2wCSywAEMjRLIAAQBDYEItsAosICBFILABKyOwAEOwBCVgIEWKI2EgZCCwIFBYIbAAG7AwUFiwIBuwQFlZI7AAUFhlWbADJSNhRESwAWAtsAssICBFILABKyOwAEOwBCVgIEWKI2EgZLAkUFiwABuwQFkjsABQWGVZsAMlI2FERLABYC2wDCwgsAAjQrILCgNFWCEbIyFZKiEtsA0ssQICRbBkYUQtsA4ssAFgICCwDENKsABQWCCwDCNCWbANQ0qwAFJYILANI0JZLbAPLCCwEGJmsAFjILgEAGOKI2GwDkNgIIpgILAOI0IjLbAQLEtUWLEEZERZJLANZSN4LbARLEtRWEtTWLEEZERZGyFZJLATZSN4LbASLLEAD0NVWLEPD0OwAWFCsA8rWbAAQ7ACJUKxDAIlQrENAiVCsAEWIyCwAyVQWLEBAENgsAQlQoqKIIojYbAOKiEjsAFhIIojYbAOKiEbsQEAQ2CwAiVCsAIlYbAOKiFZsAxDR7ANQ0dgsAJiILAAUFiwQGBZZrABYyCwC0NjuAQAYiCwAFBYsEBgWWawAWNgsQAAEyNEsAFDsAA+sgEBAUNgQi2wEywAsQACRVRYsA8jQiBFsAsjQrAKI7ABYEIgYLABYbUQEAEADgBCQopgsRIGK7ByKxsiWS2wFCyxABMrLbAVLLEBEystsBYssQITKy2wFyyxAxMrLbAYLLEEEystsBkssQUTKy2wGiyxBhMrLbAbLLEHEystsBwssQgTKy2wHSyxCRMrLbAeLACwDSuxAAJFVFiwDyNCIEWwCyNCsAojsAFgQiBgsAFhtRAQAQAOAEJCimCxEgYrsHIrGyJZLbAfLLEAHistsCAssQEeKy2wISyxAh4rLbAiLLEDHistsCMssQQeKy2wJCyxBR4rLbAlLLEGHistsCYssQceKy2wJyyxCB4rLbAoLLEJHistsCksIDywAWAtsCosIGCwEGAgQyOwAWBDsAIlYbABYLApKiEtsCsssCorsCoqLbAsLCAgRyAgsAtDY7gEAGIgsABQWLBAYFlmsAFjYCNhOCMgilVYIEcgILALQ2O4BABiILAAUFiwQGBZZrABY2AjYTgbIVktsC0sALEAAkVUWLABFrAsKrABFTAbIlktsC4sALANK7EAAkVUWLABFrAsKrABFTAbIlktsC8sIDWwAWAtsDAsALABRWO4BABiILAAUFiwQGBZZrABY7ABK7ALQ2O4BABiILAAUFiwQGBZZrABY7ABK7AAFrQAAAAAAEQ+IzixLwEVKi2wMSwgPCBHILALQ2O4BABiILAAUFiwQGBZZrABY2CwAENhOC2wMiwuFzwtsDMsIDwgRyCwC0NjuAQAYiCwAFBYsEBgWWawAWNgsABDYbABQ2M4LbA0LLECABYlIC4gR7AAI0KwAiVJiopHI0cjYSBYYhshWbABI0KyMwEBFRQqLbA1LLAAFrAEJbAEJUcjRyNhsAlDK2WKLiMgIDyKOC2wNiywABawBCWwBCUgLkcjRyNhILAEI0KwCUMrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyCwCEMgiiNHI0cjYSNGYLAEQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwAmIgsABQWLBAYFlmsAFjYSMgILAEJiNGYTgbI7AIQ0awAiWwCENHI0cjYWAgsARDsAJiILAAUFiwQGBZZrABY2AjILABKyOwBENgsAErsAUlYbAFJbACYiCwAFBYsEBgWWawAWOwBCZhILAEJWBkI7ADJWBkUFghGyMhWSMgILAEJiNGYThZLbA3LLAAFiAgILAFJiAuRyNHI2EjPDgtsDgssAAWILAII0IgICBGI0ewASsjYTgtsDkssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbkIAAgAY2MjIFhiGyFZY7gEAGIgsABQWLBAYFlmsAFjYCMuIyAgPIo4IyFZLbA6LLAAFiCwCEMgLkcjRyNhIGCwIGBmsAJiILAAUFiwQGBZZrABYyMgIDyKOC2wOywjIC5GsAIlRlJYIDxZLrErARQrLbA8LCMgLkawAiVGUFggPFkusSsBFCstsD0sIyAuRrACJUZSWCA8WSMgLkawAiVGUFggPFkusSsBFCstsD4ssDUrIyAuRrACJUZSWCA8WS6xKwEUKy2wPyywNiuKICA8sAQjQoo4IyAuRrACJUZSWCA8WS6xKwEUK7AEQy6wKystsEAssAAWsAQlsAQmIC5HI0cjYbAJQysjIDwgLiM4sSsBFCstsEEssQgEJUKwABawBCWwBCUgLkcjRyNhILAEI0KwCUMrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyBHsARDsAJiILAAUFiwQGBZZrABY2AgsAErIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbACYiCwAFBYsEBgWWawAWNhsAIlRmE4IyA8IzgbISAgRiNHsAErI2E4IVmxKwEUKy2wQiywNSsusSsBFCstsEMssDYrISMgIDywBCNCIzixKwEUK7AEQy6wKystsEQssAAVIEewACNCsgABARUUEy6wMSotsEUssAAVIEewACNCsgABARUUEy6wMSotsEYssQABFBOwMiotsEcssDQqLbBILLAAFkUjIC4gRoojYTixKwEUKy2wSSywCCNCsEgrLbBKLLIAAEErLbBLLLIAAUErLbBMLLIBAEErLbBNLLIBAUErLbBOLLIAAEIrLbBPLLIAAUIrLbBQLLIBAEIrLbBRLLIBAUIrLbBSLLIAAD4rLbBTLLIAAT4rLbBULLIBAD4rLbBVLLIBAT4rLbBWLLIAAEArLbBXLLIAAUArLbBYLLIBAEArLbBZLLIBAUArLbBaLLIAAEMrLbBbLLIAAUMrLbBcLLIBAEMrLbBdLLIBAUMrLbBeLLIAAD8rLbBfLLIAAT8rLbBgLLIBAD8rLbBhLLIBAT8rLbBiLLA3Ky6xKwEUKy2wYyywNyuwOystsGQssDcrsDwrLbBlLLAAFrA3K7A9Ky2wZiywOCsusSsBFCstsGcssDgrsDsrLbBoLLA4K7A8Ky2waSywOCuwPSstsGossDkrLrErARQrLbBrLLA5K7A7Ky2wbCywOSuwPCstsG0ssDkrsD0rLbBuLLA6Ky6xKwEUKy2wbyywOiuwOystsHAssDorsDwrLbBxLLA6K7A9Ky2wciyzCQQCA0VYIRsjIVlCK7AIZbADJFB4sAEVMC0AS7gAyFJYsQEBjlmwAbkIAAgAY3CxAAVCsgABACqxAAVCswoCAQgqsQAFQrMOAAEIKrEABkK6AsAAAQAJKrEAB0K6AEAAAQAJKrEDAESxJAGIUViwQIhYsQNkRLEmAYhRWLoIgAABBECIY1RYsQMARFlZWVmzDAIBDCq4Af+FsASNsQIARAAA') format('truetype');
 }
 /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
 /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
@@ -17,7 +17,7 @@
 @media screen and (-webkit-min-device-pixel-ratio:0) {
   @font-face {
     font-family: 'fontello';
-    src: url('../font/fontello.svg?44981686#fontello') format('svg');
+    src: url('../font/fontello.svg?72267163#fontello') format('svg');
   }
 }
 */
@@ -85,6 +85,7 @@
 .icon-menu:before { content: '\f0c9'; } /* '' */
 .icon-mail-alt:before { content: '\f0e0'; } /* '' */
 .icon-comment-empty:before { content: '\f0e5'; } /* '' */
+.icon-bell-alt:before { content: '\f0f3'; } /* '' */
 .icon-plus-squared:before { content: '\f0fe'; } /* '' */
 .icon-reply:before { content: '\f112'; } /* '' */
 .icon-smile:before { content: '\f118'; } /* '' */
diff --git a/static/font/css/fontello-ie7-codes.css b/static/font/css/fontello-ie7-codes.css
index 86ca4e4b..e6391508 100755
--- a/static/font/css/fontello-ie7-codes.css
+++ b/static/font/css/fontello-ie7-codes.css
@@ -32,6 +32,7 @@
 .icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
 .icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;&nbsp;'); }
 .icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;&nbsp;'); }
+.icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;&nbsp;'); }
 .icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;&nbsp;'); }
 .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;&nbsp;'); }
 .icon-smile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;&nbsp;'); }
diff --git a/static/font/css/fontello-ie7.css b/static/font/css/fontello-ie7.css
index 125f0c31..0cd48ac0 100755
--- a/static/font/css/fontello-ie7.css
+++ b/static/font/css/fontello-ie7.css
@@ -43,6 +43,7 @@
 .icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
 .icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;&nbsp;'); }
 .icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;&nbsp;'); }
+.icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;&nbsp;'); }
 .icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;&nbsp;'); }
 .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;&nbsp;'); }
 .icon-smile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;&nbsp;'); }
diff --git a/static/font/css/fontello.css b/static/font/css/fontello.css
index 93a525dd..a580a9d2 100755
--- a/static/font/css/fontello.css
+++ b/static/font/css/fontello.css
@@ -1,11 +1,11 @@
 @font-face {
   font-family: 'fontello';
-  src: url('../font/fontello.eot?67796422');
-  src: url('../font/fontello.eot?67796422#iefix') format('embedded-opentype'),
-       url('../font/fontello.woff2?67796422') format('woff2'),
-       url('../font/fontello.woff?67796422') format('woff'),
-       url('../font/fontello.ttf?67796422') format('truetype'),
-       url('../font/fontello.svg?67796422#fontello') format('svg');
+  src: url('../font/fontello.eot?23060348');
+  src: url('../font/fontello.eot?23060348#iefix') format('embedded-opentype'),
+       url('../font/fontello.woff2?23060348') format('woff2'),
+       url('../font/fontello.woff?23060348') format('woff'),
+       url('../font/fontello.ttf?23060348') format('truetype'),
+       url('../font/fontello.svg?23060348#fontello') format('svg');
   font-weight: normal;
   font-style: normal;
 }
@@ -15,7 +15,7 @@
 @media screen and (-webkit-min-device-pixel-ratio:0) {
   @font-face {
     font-family: 'fontello';
-    src: url('../font/fontello.svg?67796422#fontello') format('svg');
+    src: url('../font/fontello.svg?23060348#fontello') format('svg');
   }
 }
 */
@@ -88,6 +88,7 @@
 .icon-menu:before { content: '\f0c9'; } /* '' */
 .icon-mail-alt:before { content: '\f0e0'; } /* '' */
 .icon-comment-empty:before { content: '\f0e5'; } /* '' */
+.icon-bell-alt:before { content: '\f0f3'; } /* '' */
 .icon-plus-squared:before { content: '\f0fe'; } /* '' */
 .icon-reply:before { content: '\f112'; } /* '' */
 .icon-smile:before { content: '\f118'; } /* '' */
diff --git a/static/font/demo.html b/static/font/demo.html
index 89869d27..54d0aad6 100755
--- a/static/font/demo.html
+++ b/static/font/demo.html
@@ -229,11 +229,11 @@ body {
 }
 @font-face {
       font-family: 'fontello';
-      src: url('./font/fontello.eot?37046490');
-      src: url('./font/fontello.eot?37046490#iefix') format('embedded-opentype'),
-           url('./font/fontello.woff?37046490') format('woff'),
-           url('./font/fontello.ttf?37046490') format('truetype'),
-           url('./font/fontello.svg?37046490#fontello') format('svg');
+      src: url('./font/fontello.eot?40419282');
+      src: url('./font/fontello.eot?40419282#iefix') format('embedded-opentype'),
+           url('./font/fontello.woff?40419282') format('woff'),
+           url('./font/fontello.ttf?40419282') format('truetype'),
+           url('./font/fontello.svg?40419282#fontello') format('svg');
       font-weight: normal;
       font-style: normal;
     }
@@ -347,17 +347,18 @@ body {
       </div>
       <div class="row">
         <div class="the-icons span3" title="Code: 0xf0e5"><i class="demo-icon icon-comment-empty">&#xf0e5;</i> <span class="i-name">icon-comment-empty</span><span class="i-code">0xf0e5</span></div>
+        <div class="the-icons span3" title="Code: 0xf0f3"><i class="demo-icon icon-bell-alt">&#xf0f3;</i> <span class="i-name">icon-bell-alt</span><span class="i-code">0xf0f3</span></div>
         <div class="the-icons span3" title="Code: 0xf0fe"><i class="demo-icon icon-plus-squared">&#xf0fe;</i> <span class="i-name">icon-plus-squared</span><span class="i-code">0xf0fe</span></div>
         <div class="the-icons span3" title="Code: 0xf112"><i class="demo-icon icon-reply">&#xf112;</i> <span class="i-name">icon-reply</span><span class="i-code">0xf112</span></div>
-        <div class="the-icons span3" title="Code: 0xf118"><i class="demo-icon icon-smile">&#xf118;</i> <span class="i-name">icon-smile</span><span class="i-code">0xf118</span></div>
       </div>
       <div class="row">
+        <div class="the-icons span3" title="Code: 0xf118"><i class="demo-icon icon-smile">&#xf118;</i> <span class="i-name">icon-smile</span><span class="i-code">0xf118</span></div>
         <div class="the-icons span3" title="Code: 0xf13e"><i class="demo-icon icon-lock-open-alt">&#xf13e;</i> <span class="i-name">icon-lock-open-alt</span><span class="i-code">0xf13e</span></div>
         <div class="the-icons span3" title="Code: 0xf144"><i class="demo-icon icon-play-circled">&#xf144;</i> <span class="i-name">icon-play-circled</span><span class="i-code">0xf144</span></div>
         <div class="the-icons span3" title="Code: 0xf164"><i class="demo-icon icon-thumbs-up-alt">&#xf164;</i> <span class="i-name">icon-thumbs-up-alt</span><span class="i-code">0xf164</span></div>
-        <div class="the-icons span3" title="Code: 0xf1e5"><i class="demo-icon icon-binoculars">&#xf1e5;</i> <span class="i-name">icon-binoculars</span><span class="i-code">0xf1e5</span></div>
       </div>
       <div class="row">
+        <div class="the-icons span3" title="Code: 0xf1e5"><i class="demo-icon icon-binoculars">&#xf1e5;</i> <span class="i-name">icon-binoculars</span><span class="i-code">0xf1e5</span></div>
         <div class="the-icons span3" title="Code: 0xf234"><i class="demo-icon icon-user-plus">&#xf234;</i> <span class="i-name">icon-user-plus</span><span class="i-code">0xf234</span></div>
       </div>
     </div>
diff --git a/static/font/font/fontello.eot b/static/font/font/fontello.eot
index b7d4832772f373d883174af526dca1f724381a07..9600cdc8509f1e9be3ee642b96255e735d2df8d3 100755
GIT binary patch
delta 801
zcmZ`$O-vI(7=1IlT}oS`Vq1$4DE*;IK@dudKuk?cfMApZk^%;)P>RypRjOiQ0tXNH
z6AJFdNH83T@!+9JPa3?D7!pl981zKEkn~{8D(V3d{L1Q0XY%sC_x-$?%q*wa!UHDR
z+kx@6S;;SMt(vB1gZCzG0jv{1_h39MAF1D*BK;H)D+aG8?b6QnH=t#J>h@td8oxU`
z(?fa^Fv`*Jm`wS-q(j8|Xzb>2(cGDRfbK0&+dmQs4_Qi6j{tuy)%_!s$XgMmTu9nA
z5>JlLUF+Uiqr`nmJc}g;!#{U)FM&WK=}<g8F0;vkC!}Xc+b@UXk=OHO<)qU9e<LTx
zk~fB)*8@$Hbm{l<)rh=)!n*{ts>%ZEWAn-uiv~);Xd280VK=HGHqd-2M0}!x19pmd
zwkTVd^{FX!Mg6F*s~gHg?qnOv3x3o|!_?KaySwqvtr&!}tTNLtn3#d<bLY{j%p}DW
z8{Gg@0$D)a)&TPSQm6qgVw(oIiH~bQ1@TD@@DLAaz#-yw4LA&Z^=UvQkQtEjJrh@i
zWuX@)`0zMrJXpY)1jfNzJJRKyp`Zs$5+o+XbxeRHV3giM0w0AWncBd)7=kDki0#E4
zX&1G-{@2bSa`9YlN@_0-x*;(s0Vc3SW6oGekS!A6qR6}cxN`ASPfyTL<|uSJ_ZQ~r
zioH6Y(@_!dIV@&tpw6w7TdO#GrSw@n%8b>OiB#9<OQub$Tj%$*e1}oU<{tIKiu=c3
zR?-at=2fx{ca*sQqRm`lo-(glE?M4Lt=6Rjw{11MAMVY3_8SH2+dS6AS(S3S=~uq~
ULL?Te4#$#8M{{pxvDt3=4dbl4dH?_b

delta 575
zcmZutUr19?82_E!yPG-xVRxo5+Wb?t86`5eawaOG;FE+-DxxlPZV%pe(;+KDpEY96
zlLSSwC-Z#>JxC(#MKI_k=qV%|j6k`HMc_93uJ^U`@#A-X-*>+6obyXBvuu({*&)C&
zl#+a6(cQnA>U}l;0$?Kmf+1DWDnjGmNUsB8O=vdmlFmveKtQCrYf_7-i>amiq+0-+
z7Exw2%GUs01>&;E)bq*d<12pw>nGrrCmL2J?DEPVz`IX%Uz8FTc0?=C=^)(_RpW`b
zuY+elDA7xa^{H4$IsJHWophdbP*oBdo3C7>UZd`Ms;J@J56(u?PXNmoEjAP1tSo#6
z?zGdRceUxTmg{TV1P0&mG<(S2^8$->%3#zDRt4dFcZ0Z``elgtY0Rad59S;49eJ;w
z)OYkfJ;&c!n)#Nc-N~qW?>t8FpWwB^7>$+qGoi%yELI*9t>w({!&vUjoS0;fN`Ov4
z6L3^(0?owrCO~!`^_aj_;sF!5Mm%8xt;9JKAcu~<Cg_TUbg?zFakH(=vD)u0KCbTm
z4Vz#Xi0@f9jW(GVe17KPUjG8$_J`{)9m)gpS9_QJWnEL<ugfcR%5ce(>A7ta=-hB%
Rl&1qlzSjL9!|pmO{sG(TnfU+!

diff --git a/static/font/font/fontello.svg b/static/font/font/fontello.svg
index 2c1ee1f4..9f788daa 100755
--- a/static/font/font/fontello.svg
+++ b/static/font/font/fontello.svg
@@ -72,6 +72,8 @@
 
 <glyph glyph-name="comment-empty" unicode="&#xf0e5;" d="M500 643q-114 0-213-39t-157-105-59-142q0-62 40-119t113-98l48-28-15-53q-13-51-39-97 85 36 154 96l24 21 32-3q38-5 72-5 114 0 213 39t157 105 59 142-59 142-157 105-213 39z m500-286q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12h-3q-8 0-15 6t-9 15v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 97 67 179t182 130 251 48 251-48 182-130 67-179z" horiz-adv-x="1000" />
 
+<glyph glyph-name="bell-alt" unicode="&#xf0f3;" d="M509-89q0 8-9 8-33 0-57 24t-23 57q0 9-9 9t-9-9q0-41 29-70t69-28q9 0 9 9z m455 160q0-29-21-50t-50-21h-250q0-59-42-101t-101-42-101 42-42 101h-250q-29 0-50 21t-21 50q28 24 51 49t47 67 42 89 27 115 11 145q0 84 66 157t171 89q-5 10-5 21 0 23 16 38t38 16 38-16 16-38q0-11-5-21 106-16 171-89t66-157q0-78 11-145t28-115 41-89 48-67 50-49z" horiz-adv-x="1000" />
+
 <glyph glyph-name="plus-squared" unicode="&#xf0fe;" d="M714 321v72q0 14-10 25t-25 10h-179v179q0 15-11 25t-25 11h-71q-15 0-25-11t-11-25v-179h-178q-15 0-25-10t-11-25v-72q0-14 11-25t25-10h178v-179q0-14 11-25t25-11h71q15 0 25 11t11 25v179h179q14 0 25 10t10 25z m143 304v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
 
 <glyph glyph-name="reply" unicode="&#xf112;" d="M1000 232q0-93-71-252-1-4-6-13t-7-17-7-12q-7-10-16-10-8 0-13 6t-5 14q0 5 1 15t2 13q3 38 3 69 0 56-10 101t-27 77-45 56-59 39-74 24-86 12-98 3h-125v-143q0-14-10-25t-26-11-25 11l-285 286q-11 10-11 25t11 25l285 286q11 10 25 10t26-10 10-25v-143h125q398 0 488-225 30-75 30-186z" horiz-adv-x="1000" />
diff --git a/static/font/font/fontello.ttf b/static/font/font/fontello.ttf
index 8c337900b1c8c34988be2dee417e2bbb59921346..67943c64971c14f85e8758c6c9d8104e379c9d2b 100755
GIT binary patch
delta 820
zcmZ`%Ur19?9RAL^cX!K8G~3o}Hs}6Xx>9sH6^R9ri9r%erbRV%&T?zFT%{1`Lk||E
zllzw0OCUY;AnYm7hoA_-zz3<Gq!(ciJ=`)y%3Qy>daHZ*&iDI%f4+Op<vyKc+bNcE
zj@<)TCxEWLcvwDO|6_vm3qbVr-AUS|?Cy7<^(xiv19CL}a5~jZdK}Qp(eSWL`C`%`
zVqG*gI#4=uZa<(|0ctM~M#B9j+td@Fv6kwMgOt!NiBc{k?HY_HM`mt!W!EV2h!QVj
ziN5g9tY#7LH<1p-!y_^qFPtNtB5l7Bjz^Yf%PUCF1N^<57*5{pe^n2(jMJe%%C{o&
z`pN1ApiQ0LzQ|^kAdC8KU^EP7fv^{Oi3@1l1`%JV;DDVXo+-`LWqj(Cx}<(q*VPS0
zWlomcjf#gKc9H>g2KQDM{<)N1enC@3jgs=3?<gx=TV%++nd@>pJyq#tVTz4y04jm(
zpzh`Y^8Z?r2VBIKJm4likq11)r}980aep2-LcE>_jso9&d4P_RyKr`kuky#_Y71B$
zrN!FxvS!mWc2jsG^uPcgo(1%W3OSR&ICxvfd_`v{P)U~%Bqqc)On@X{h;AW)4?&U)
zXTZ4_f+!Y>?beQY7qz?o*Ulkw@ltL|YPSa5keHMJ6Ih}tXDlSh771`s<iS6#Ts+&|
z9VjSwlsKISO0*hlwZ`Xkc>F$x$!PZ1xs_3qm$P?D+El4zOs@2zw?<bsY51^nrKoii
zdLfhh(4UsvTYp*6HTYSz5@>j!yluE<F_sx8jBBRrrd6}qym0WorDpG^s7{}5)C<&i
fzB$O5SD9=6wNKX@iN%hEV@c(COHX>I#cucw3pBvF

delta 547
zcmZutOGq106g@8=YmKo|Cw?H9X#6FXHb_ipBGQVu7KxFxNF8EK5Jv|MB`pQlEm|W_
z?ZVbY7uNl3T!<jJ5ft1gu0)D~Ahe93mOwRn$JzE>4(FZwd7o3ru&<w4#x?sMVEq6h
zF-ermV?#%zHvm&*>}|?fa$EcZgiKU-j>!q>(_$t{x(Tqz32{cId?gUPCN51(yc?U&
z*B1cuCh*LYjEkc-VfioMJEyuoNr?x0CNt1!C*72kQt2=Ak=s*Byr9I!#8gcD_v2R^
z=^W{ZB&KCHYh9;Vt?rx@rTG3gM+4~*z;GZ>&7`)h*W18zFFkr+o{r1em+f0X-_l~?
zHCyFjmgp3~Xc(*l#{1n9;xZZ+V8T!BSPJ@It}fS+^QjB!o_eNcd7im=jlt_+R2{gF
zF#Z#K+%Tx@7%Z%eX&z|HtsEN{*l-b031|c^AM1dNxK;<q!pm+QXeRE}ffnLX9cU%a
z>HxWt_vxT34$Ti+73<UXQu|tu`{vD~t}9rKnrS%Mb<@#0^RPd_Jbcdok=F&{wN<}`
pUg6Ldw0)><tiGsOrY_AIkFpZ57^&}jFw6_V8(s{(Qleds@;e?Gl9K=c

diff --git a/static/font/font/fontello.woff b/static/font/font/fontello.woff
index 592f528e1147196dcce7a5314bf8ad6299001624..a2f3cc5ccc73bba9058afd2365dcebfb900e680b 100755
GIT binary patch
delta 9048
zcmV-eBd6S~SD;uFcTYw}00961001l?01p5F002mMkrY3Fd}D24Z~y=S*Z=?lTmS$B
zCN4Ajh+}qiAOHXZGynhq6951JAO`>b^k#5pZ2$lRNB{r@kN^M+aEg(TS!ZE$Z~y=Z
z*Z=?k2mk;82mk;85NB+8W&i*P-~a#~(f|N3UKyKD5ol#$WB>psv;Y7AG5`PoHWeO^
znrLWcVE_PsC+GkG03ZMW03-*=1O{krba(&&C<p)m0Ac_D0IZvJ|K4nGV_^UQC~N=#
z09XJ309gC~1-)%ycyIs!D8v8&03ZMW03ZQ?4W@2kZDjxeDC7VD0e1iZ0?o{wA0cpW
zb94XzDqH{n0Y(4-0oQkAxifHbWpDrhE2IDb0D1tEQ2|K-%afY{Ie)+mGXQv;-P1`<
z0#Ou3;X@;$Vuu~}eMcM_#*SEmaRsag*5xjkklcZT_h63xk9()eTq+-_s#K^~+*7~`
zP?Hy_L-m4+_Na7pwz4>1V|{VH&X<mFxYAzLj_uWYX_P+GI8D+l&2u|<@>}lbL7q%|
z-``*?t{MJy&5}<=_kVj|Y#+aD<(jJ2Sl5#@Sf$CD*1JKAO}5x(hh5t2vCjdA9MR#J
z6HYnfoC_}XG}pSvEqC1Wz#~sQ)76hQmagspe_G|M+Ki)anW!seSkS+Zg;J7*Qj>*J
znFUP=3z`=eG&wA2hFB=|S<qauP*!I_v&Mp^js?vh3n~E%YGMKlssjt^1Pdw#3u*@o
zst60}2@5I<3u+7ts!i{KQ+HU;sX)@usYTMrsY=qPQ=g=<Q>mnhQ?sO*Q@y0QQ^(}C
zQ_<v(Q`_V>r^?BFr{2i}r}D`Yr+0v9&(Zw>VqTx3voHg&1%C~29LJSjzwVx%pPilk
zo1Iwzi^XDp@h1@6UkaqaB|s9S2$CQOQ2<3k5JgfFK@yTqwrELI6qCoIVwu$Obc)KZ
zlg&g{-9?t8BOP0bW9iB#*%vCQlFnyJ@g-F`+fk8rqPP-WF2#t;yq;ZvpnhWCRi(06
z%+5^zO!w=4-+%kwdqaSbYyXq}CH*qVkVLI5)e=-Wp)ksT5;_l9yx)%7HdkW3SvvqC
zwG32w$dy(@ULGoi4yek5gT<~x|1vNZ><hl|0v^VK@;7+>IuLl_g}}p(Jo&~q0-vlH
z=$91;$1%Oi&ayJmNQiWk8d+Z(DdTf>LUB~1L>KzJ27f{o^F(FpJT{<wQUQj;rHsrH
z&gm51qGPwLN*B|qLiXlZ*ihPgv!$Fx6Huux{6=k&?o8$K<x<5hCSWBLD%E1aVWJnX
zNKMNkJTzwM&<l3Lrm@!8m+fSjI`P>0r1Q~RZUU0d2WBOGI#uz1;3U7J$4=XU(*YY!
zyOGcpBa>PR41b(FdEQAT9XvosS64>@CY&qS!m+OOVH4v@h~P)A%{wTEQPM%$Ypvmc
z!I>f#hb*p5yX`W??FE#5Bx+mWtxm37sz&ninDtghaoE|wg#j~a{_iWMW5U2&RtLl$
z_a)7v5KF?Z&A^-W%cd^~>ha@h*x(wtZwAb$(p7iedVd!_ad8|vu13C=iMQC6U)NNj
zFfeZ%P&VT_;UH7&UZ^eu+!1QkjWkA=PJPDc=%fGaR|oF<FE4ff_{Vh|r)zxrIJ;j=
z{p2U97k@QB59b;~j(^60@gv84jStXcq?3%0;o9mHa3Qxf4nYNRNC&}H!RIvG=PFQj
zR_;1JiGN#%OeugDW5YG4GaKu4qFoVh@7N-bTV)yaLot+2^+R)0$ZZnslxGY2kt<bJ
zLb<bXR_!b}9gu)%2=^7eU}#q_D}thS!5pr)b{;2pPIs(1SfeY`9QJAF%%tzUhIi_(
z$vcKdW87;nXE|Zj1j;y=u+?cZE}G^=BW}Y*aeq+xncukR_g^&HoQvw5;y19GLN!)D
z=b$W5AlELiOY~J-zg99t){@)F?X}5L8zp?ZK$V&pp+LunyYr}20{AFVxH69-M0J8g
z1O$HPh+z1gBa9thA}S&!HMS|z-;%N0Ri(8zTkVHxsVY<lN;x$pqPA10pn4Tiv+Ss#
zD1V}K%3J+@i67M=C>Go*7Ne9L)rp`uBaUn1B3Y2e(rPYWO(3p7rFUQjq@K8K1`Y&$
z>-Pqo;MxIS@WRSpu8b>&x>j!)KT+`cc6{`Y3xy8FV3sfA13fym@elbGpOc^b507;}
z{O9Y|>`s^WBz^a9O&_>rWN^*#r{Nyl_J4cV`GP^;z}n#FINVp?d0#=#3q$S69N8S|
z2_JjTsOUo20+jmIEl;#TtYsz=$=o!1;8x@KeS2%GGkYo#+;7*eU3&m^#74~OB$G9x
z1J%JoNTQ>gUg;d4syR|>z!9B*FbZrIvCL05w$<7Zv*`WTOBsVn0>GvS12#7OU4J)i
zN5YEI(hH@25VkV}V9RZWa_px=JV8-fh`YzmynP10kmwt<U*G%a_?dfabk)IAFPu8K
z3f8?Ig(vShL!Z6yoOr7KmG++K>+6ONJpE5j9UkPv`=8zX=-$_(O`Um_?POt`!vV6c
zHoR|oYz-%Tr9pv|y4r#qN7UFHxPMCspO+9dk0XY8oD#zwL-+5xWBay^8+v<E$w*jL
z92|5mWdZJiECMPnzUsJ+jcc2iGr(0wq(wx?=kkaQc=UEe)zdNw%BW-2+`=~Lzzh6C
zkd}J|H%-B9cBXnNMpsT8nV>r!+5vG*z1Q$Xx`YxK_p9pWmR4Qm!N)W+*nj436+yAy
z;fmH}1hoCC28MF4X1Uo$U2Su$Ro7VPG1Rm`+})}K)D1T0dZV%d`&Ld)etvTDh%65#
zqHP6XiRd^etNhwnJZPx*=;kU#)Dns%%t9dE764QA>bA5dZ&FRw9$!+`w^C6?;?1h9
zL4;Co4G3X#^a9DF-9y~65q~NWU<FmEP!17=Q3bV-Gr~AIBsEk3os}1C5_MB*BqL)^
zx+U9_&8tcq;+7Kt6cL)Sa;W4<FY0=?^68XNL$>1<3keD~qGBp{3#8=%ajS^pcU*8_
zA7TS&+PRULnUQmv0noV2mY|aPwxEa~!dHLC7k92$4%#m#?t^8%GJg##mQLBs2%H?5
zF*KhpP`J1m>PN64ryBHGzWUpS9XRV)7ZC~1qG8nW#)94ZfPIG!5Sz5r96z8sjG`0>
z?lZ|p+_1EHh~TL_G$@FxH^G>_RNsRZx4y^c+l{}_1zo<lxyuL7*6;TD;17KXW0%iY
ze-Cf_cKPD?tZVgakAJdP**#=A>8Qo!vpw}AQ@H1Wi~;HCCd*;Dv}kTBkKhIsR|1kM
zC77$=C7ue`smfE_t9X&1&AT7&U%P?tfM1W#^sP5r$LqPS*<?cW!C0)+TK{%m%rs*T
z{Irl<RjJg&!+h_FTjAHTC^+%E8`l5n3^r^v*Z0lJhDI{Bw|@t=w3cGnuvMd6HvD|h
zD%8VcC-(3fd=TrG4W;}zV$rL7nWx7A<POWoZMBJZ8$l<4bF%!V&MApUksxttxg~o#
zM9?ZS5KO`oqP`?iisFI1G9@*BEEMeT&81u1U`MDU5(#S_>#(GWO8`VW%T*V$osA8J
zHm{Nom2z$f(SICmW;N8XgRpOC=MaABs*gT6w-eeS@zF8VDO0ecs3OL;Qud=`nF^G$
z>}a+`V>b=a;T^+#uzuyr-1%u}Ka0k5r>v;a7d0b%b*Hxl>5KA*_$2;%b8gIdHQ7q;
zL~!~C<TUvj`RC+~TFcWls%s~om`!qpA6bE*J3fFAOMiG1psOSrHmRmZwb=;hLEwtc
zXG4C9`bniVoecmpP<}`-eJbuody3e$-$n!<`n$EXZJ1o_0qn8qTJBpfz4%X`|LU{P
zoO<fS@y8$g{O=r|+rM|_jvbR*HkHfe9R8Jy4ssB;j5ZauwjFFoa#e)L9O9>Ujl9*n
z&Ns_ZtA8tii-7!A;6gY>Tom|N`-N*Y+PG#|Uv1WRvA)~vUzW@MtIhu9wcEU2+P)fU
z@acsGzi0<GNKn87eCjD(=~(sc-Ys}JU|)UndJzjb)~H8`@%WP)s=d3U<g<<&ZrDtj
z>yQ1#^<lifq)q)UNXUZv&+tfpZ#01A!BITF`hTVCZQ*;+?iJL3F5CQ@Pw(m%*Bjq+
zHJmM#vh)LQk4jwo5q*elLR@oew(j8?S%9^8n4-PZn-sFDFF+fj8a;r37WeH&1na85
z*Mzp`4Y<F4mtpM266lsVCo9N`3mEz%`rN{^;KpaUuJ<hJc$8J5XtfET^i=&_=x+2X
zQGXO4lQ4E0^iS&V)!+3_4fvY(cyAc;IcRadLpL|DT7etg0oV4hIxDUF;?$b6VlVAN
zIL3b8YtHR?Ig{so5AMQebmP+uS&joRnv-HUrw7;@Y$q|1#}1RrHIpEHhtaM!B*^PG
zy<(vn_o{${0A-&CV|QaCKrco5gxVC*G=FmgvJ^2zgz$@vZ4J%uyP*l4`%P^!*rxll
z+E6srV%K6*j`*<b<8?K(-x{C2-bM&I*?a~SW7E^qHM1iX?s7uuNLWY3S4wD>tEH6G
z!$P(*7b^ABltrUK#YO^UOQ%ZO_aR<I#Y1vE1Wwde(M;J123PgY0SFIv>Gh}R#eY9&
zElnJpD7DfTd)lucmATU16Yn3$gz547lw@C0Iq*erQUe3i+CZnScMrlJ{}FV@SFK2;
zR;-HG-~FTZ9wb03d)i}#$(fUzC(i^8pPQhmsLu$VncQ+>cA~VvVdyc$VimEtr<O<3
zf(wOHKZKJ+_W{7OEHH(X7sk?&Y=0#Z6zDueIuTGTaFwRvKqG>FITDeAqejt1I1lYO
zWPrDm&ehAF-yM49-#$yjc>2wQD<|prEobYmIe0$`!{}Kb-2coo`wu1vyLJ_M?KF<Z
zgzv-O(uX&_qK{9lSw+52zDHg~^YAP=Nrc>9Xe@A)c=l8BV`Nv;WE*a?A%9XNNzy_L
zoDPNO;W>B~o`NsIBk(!c2X`Z^|26qfxFrQTlG|Z3bYXjq2>1~G3f_UY;7{Q-SOG=6
z2l74{#Vusu^GBLbKZzDt`mEoVo&lcyzaN82Msd!7&jPZ(?f;)3rl-A?sFl$LQW;eb
z5mhi%`kERO8tMr!4dxKJ4u2z7BDtN!AHt>-PLckOHN;pO<bXC-VfzSG6{^l*A4;PS
zrO}6Sy$?lc^r7s)xhuD}{XL&NJ-w#IV~X#=MfjKSUAP@~kROpZ$-f}qCVxV{MZQ2j
zk1`S{M?@(6H}G+GFBB4zGD)`$Bqc8lK^eWBikp*;&T0_3vaObKqJP}aB~Hp{iQNNs
zN~F|EK9@#zS?s4sLGd<1wMgIz!ngE+L<&!G(tlFre<7z1L0Wd2cccr2`crgD`GQwL
zxUw=nAdlT*ulbz3P5^pS=&z@QqoVKSNHdQPS+(Tmg<6nZxm6b%tB#5zz@|b?P`m1=
zo)f0#bHXXgemZbKRe#aJ&@C0RzcSWBZk+F@W$D2oH!kA13klxAoC5ZWjjJgyK!Rvh
zDPu2qkh9NK+(HGXi_@}2G+mL#5bvug)nYjug1pYlaUt<2;XIrQ_Jjj=stJnHsZ<?A
zg&{!SvfM8tex5W6SR;j_L3h%T$Es7w4MDV8Ny{-x0T;?B5Pyasil(Z9eyIEg0B06O
zdG+I}1t3?+Nx4@<)Pg8F1fDm5o~&yN2VQ>YhYvpZ!%KgDSUmEtAwo3<l(SGYf;5+E
zg5i>JZYY9-hJeTz$BzJk<Wb=QYl3Ei66cJfkA)ATs*Y9AU&4k4<%*v%+lp`veLkRy
zP9dTTP8DIGIe)>;&xDS>A^TJqx``Yt)feDFhP`qPH2H%aGo<}tg_$Nko|-LfOeji3
zVLtBn;e!O%xX!l~xO6ue#0(sR!sR%n9}3h^)i76eX}_q2*VIBcf(A5(T{8tZnr`et
zF;&VmrmKz+ilzm*js0Nf%wilJZY^X`{D4C7iZYX-KYu7ig^K9I=TOaN=x9<oZv~}<
zU*IvOGaLZ(Q%j12V~M~qpqw~YHAOW!UZ69qcmpvx4P$dEolt6MC@LXTMK_K6erFs^
z@MHU^gbgWZ#YCOQ56F=lxIz>~jg@d9+!p|<8^FR3z46O89`X+L{|FkDVKR*=KCFga
zpiiQDa(@LXOhuqv(Zn(D2A)$*iWP9?xYjDuR72&8P)xZsaB8NGLQ!xEEJT^5$@@&l
zWn}^^ZeW)RPRrn`s)DX)s)j;hQkJ+K48|;3tZ;NE3@t#J1TzZ-zy<!{Aa2^q<*IWL
zFmMd$$631Vqaa!-T3Ig8t7R;RGUl41aqz|bihqf-=B8$G3k;u)KD&Y<$F&GEgL7TR
zE)7q>G^mB;{>5<^s^u*u$~&k8Bo<R2P8u(H%+f7Im!Ve_H3}WoM4<uPBOpVX482HB
zH58;p4MUN!O`opFt$}NRbLOZJC;|aEJ!~k~9S?PX^fozX8BCOVfTE@bLsv^d>7vUe
z>wn1oB>Pd~T1dBalk%YI#kan}PO}UmvP)964y462q)2XplojawB0p|(QXXx!MLvZv
zk(Uev8LKM8QpjH6?QcE0ZSC3#n0jOio=<kxe_&6nfT85fJCD5rUHN}Bam&;c{7rHu
zS^q(G(#8U`9oPN_ImrKD)99aeq8;5^Gk@D~y{Yc;qR|GaY$qr?+?0o;36}064hY4%
z3+<MvAdyTF6z;r?7tUX=fy*od7JN!pMQ2iXSLD%JNIsQa;vY(XEgvc6<qcIt-G)cU
zz>)DY$+dD-gv$cDWQKZBHM|3=s;WMMhEzAzdo)vnZ`x5k75?bOa7vHb@UouDrGIuF
z&<sPv1DNju;I=~qxrQcJ(BMZOq|>1=x<ctR3x{mG>6f4|!pOzaq`Q_wBFsIp->=|o
z2$NYH=EYtZ8A}(l>7q9gnT^S(n<<%UIo(Lvcrhv&&~ha?WZ|T9De251@w?=4!%GQw
z4o~F8Yx3@8j~QNW-j(T>OG!dKZhv^E$5n08TkBd7ESLHZlU#z{l-wO-goHz;59_HR
zMTz!iLn)a=TD0hB+~MWzPmR;blN1(Az=!|p@iLvAc<P0xCSc%mO$2%94KF5-)BOcL
zSKyAg8M)O4P;1fJ(8?exib{A%CbLG@pr)*E@SFjnBFL)z5Rn9$?8AX_!hiUzh8IEs
zaVL>TFo}Cbj#r_QANi!G(yXt-Z_yz3_j*um`O+qwz@gvRM*27oA!|o&S+%^sJC|s4
zA}9%A>r%4SJktHBG`vFcmq;^BS8jwAaP_bt??pD$W~Aa4j}JJ^g>)Izd@~^lzpmX@
zD??P*-_XPOpP3n{56Czsynmfe=uB<X48K_)@Zw1DcDAHsv{?0Q{mHX*zIe76><iu&
zd}GaRYdR`$W}%DvYX=$~49_4uM?@UawUll4v0lX<G&ueB`jcOW{?ge}AaGl-ubI!>
z%y53vOC}j|qK1>8O1opJXs%kAWR<wlyjWBimmq(GqB9w2M_*Q2D1QzU_yhcQDd<gY
zs6n5oN#;LUak>^Jq%#?Fg8^Oh1g)Z=i%mhJcd3Gi+QkC;=6O$sb^w}Ee5-J*xB>1o
z6<&Xb`;k>FV~I=kflF+&z5CK`d!=*CE*>kc8b#B`>wm%V2>twlOZ8=!;VbRY-IsSo
zqsJV?ziZddvP&$F*nitX2Fa${1|3bl94*eA!#vsqflwe6F;5V6yuG4M5miyg+FC6?
zkmUpUTxYU%ux-$e_*<+NRiHa(`eddtWr2+Zc1UJOI+tEVBqf#E21(=azUyTUoJ`fr
zEL2K4P}+;_?S)l^M4|w%C*+TJe$EM)6Zh`>_xtai2n2gOf`3%#dmcRk@bIH|p?wc@
zuzY@a%Sb*yvSoP5+0{P|n&Z9QEZ?;y5QJo3kSY4EWy{#|!kySE)Ym~gym^5A3hh9i
zjFVStR>nbANXLdtl0h{?kvZa-OLho#7L6XClX>qcf!JwoXhviezp@aDNPnU>ml4}t
z*Bi++Q}@SfiGN0*mwqDBi<;?ncL5n)w|rUGc=xy+HVu-8yyl5oGF{b1IZCQ5^Dzj$
zt}3Kphd}0SkRa!CkcxWQ9hvLHebf-Yr1`6*{BfVjrX{=$9~^t&(8xL*0iTR0<>L0+
z@7{W<G^kVaZ+*7G2WePevv%h$D0+oE?jGN;uDnvCzJLGKEH!FtckbT*#Rm=#dwsC!
z+R)tLf2bif4)58%ZQ1gn6*ub<R$#gl{JG{6tJdeb>by~uOnkCTw*I1~QO``toZcSx
zOI)iCvW9G|Nis%YbUDD<hU6pHbEI&XNl6owbbv|MdA`XgVE=RtcW-CXj*t%M;0r=r
zjuMcrlYi?-*C7Ei?^ThGjTD|IWZ^W*QBuqCD)0Gs6<H|<|NZuDlWTVzJaEr}t;3z2
zB5Sn<iy>yvG-Pv6&)iX0Vgcz`WN0S0;f_Zi{=(6_WaT-moK&)!u)=J*J#q88sGUe|
z9p171{I>44AcR;z?EJIo-B0JT^$&tvXx`O^JAX2%Sj)C0b)%hDm@MY1E_r)-H91;~
zbRhu<A)%@EBSGy%9>$x*CPUCmLBhJ2zd{LdFK;EIdb@}ara;N{5%h)T|8I4d<hZ75
z#$a2vT*($?nhS2U5e`xw@i7D8QH4mzdrM+56q(PJD#cF89u{rGlal?^A6~QyhL+Kc
zi+@hsx2OJ$667`H{s;H?91Ge5Hf%q)Xb!x3i?-k#(jxe&3=~rn8wycVEU#hQaTar}
zGA0!xU8GQ37Dh*fc%jqAjzXhBKP4YruG%d{FB=>x<?=Ye4xEb&2OxAe6f4pUo-Ig%
zUa$l84`Y$=c>SW!ce9MK_G~i(LW`cB8GpHYSq`7NBQvlaOq|b6L0K(f+>E2|8TT;*
z%2zMp<Yw2<nEWA)I4mA^(zlwqmTIlk1zgccgGnn$>J%@!DSfxuB`Gy&oW^82BUkk3
zX|x&UD>p{UqK$Vfyw`D>*XgC#({}Kq|K<hSS;&jAf9BQPl6X7>7bEy!gC*ngmVXzb
zU(oSa*=2eGt<nl|Q>{n7W5jSB8VT)&Q*guh5w<deMJ{vOi}@|7rwNLLS}HOA;e8PR
zi{{gfH%4T%rC+)c-d4L*%6@bqQ-PL_3uDRL+BO;=?&`SnyUAFk`!7mmGnMdDGZ9Mo
zQ{wk$!|7Gf-^(gk{omEsHTLB9+JBrUtFhKNw8q`Fk2$aRjkljk=k+kUp+;DXvwg#s
zJCW%fY{p{I-dw`@x#SkIr)HKUxaEA(^KDui7YzU`yqX~0GF&?5XQ+<}DTVu&6iY@-
z776imEd*rcU?$bx77h{@T+uYfo_#<BLn|xy<Ph!mXfhfDiEAEv&sB0>%ztZ$u9i+!
zX$X?YpFe!?hY!K{#({vp^|p1fWG;o*^vDn3i4*Ui%=aAr{k9C#EOaX=Gr8YZ?VuW%
z+6yP%hv54s=&>!w$A%v4j+cx5nN?AyY&rhi@h$bA-SxsOzbmJ46J0GNYXQY_w0Jzy
zQ#dn;MYAs~$f%K5D3RxDzJFHqc!f+YEQlyiK%hU)4oNRXFfxaYgpA}PaLMF=biTNs
zFIeQvXH}<&ZF~{#vJJSC?@!2zlDv6#13l--W~Y=(b8K{^!s)bpp`z_$ser#r_#b}s
zTZa69n;`#n{7R!YyQVfIv-BMxIgCu4qY3n8FT);l=rRFOWj+O+Lw`v$WS)bIv2r<G
zbkdo$ro?+2smR6rVtOIzxR6;aqqF*H$acP=<mWtfKi9Z8Z#k!KfVMSK_0M}%&Np!2
zyaa*sHmv?QxPdpXORP+KrGJ{k8A&kUxH!n8=VcmW-b-)EFhSal+~P_w&f2O)8}GKE
z`j<=nif51(Gix$^k$-ei^GCtpiW)Ky8ST`Hp&dJ_NA09u|GCcx?Y?-79)(jo6PI>>
zjfaEWFp+VwT*r!?wSh!foVFYvBxLF>Vc3Dwf4zw)i@s}w#7UM^8gII_+YJQMaqH<~
z)?0-|Bvxf=U)3~qlBlXoQK{P4nwsl65j)b-;=Lsamej}`Zhs=AB`EqKq-|Nb$%d$-
z;BP<3qDBTP!G>6Mi3d!-5WWA@gEqI~t=t-$xi!G!t-<>HJ%fF;YbXcFo>g76Z$<x?
z2WL*4I=O2VT`_z7%oq1mHZJj(0Y)b2_&TdqH-mjER`dldqxC;0dc2nL=I=`zkI$}<
zZI92a;-&qMZGT?sS~p@0^cd=Mn(S|AWD-FP$t^iV1sW-ZG-CTmqorA8UT`J*=~Wok
zk*q_KV}|6o76Fp%Xp7mAprs3vhO{bC4@vOHlU51D!N%)NrCdt5QM%a+ODxS?*@2AZ
zcqy%KCfuc|tMm6fL!Z7+Zc?d==See8;pMPME6LT;i+>~&Jg|_tGzw!tT4D{y$RnCd
z6AqP9KARKK5IRA~6>f-AkB7tcw?mn*9@cJ%be4=B<D4&Q*S})>P&mxfjicUsB{6av
z*;3ndD`;v*n@kj;eOw;Gaqv;xUg|v2n1+7nqDv~F?EWPNM3IrZv1NVH%<5dZk>sqF
zWPCjV4SzjPFG#Y0n@)A2j_P>X2U#MwXWlCxqG)aLFvN<51Q#yOR%#+PI_<QhzPH;u
z?cmov&HsA9q0e;a(4y<Qqa-u8ZpiK^^sI|uq1`qZ&xH+3C|m@iftH?_tqDp^&6L5@
zulCmDyP95q&{zMe*Bk8fIK@D^CESzhNOwes@_)S$wgRz*vRZn1*htwiCzf)|aBD0X
z_DB01o12!XHQ&j6z~jzAVx#UZBR7-3s=38(s%prbX?xUfq8rCXIVds$B(2a*!el-U
zDpf&dQWcddbJ&rpkU1TsHX9(5)g1S~pDfs-zRzwXD;{3bQbjE&{D$gS5$jLN`sxmB
ztADAtqJc_=LWESyh2=N(cI7jvjzn8a$PU?&FwQPe^()Z^S6bAN2oj-CIs}V1<bSc?
zW~1q5NKaWjgC`xU`NqYUxF5cD%6n-<UgGz^`gwimO+!1Y8Srr9m%dn^#FF~!jdf~=
zOJ@BDoUEITmo_X|ga6+&Up{(N1}?p0^MBofSNRbZ!M)u_wvvZy5A|iKp(Z;l#%Liz
zxyD8bsEGcmq0U=C48KAAhltNl{XTjKxfk*K4F9YEiioRGHcK?lwMn9Bd`g$81ys(>
zn{M5(Zta@YmE!Vc-Cdbfyv>b<gNBZ<qk$Ii=o12Of(oT5jfQ>wMRf1Yyv3-eRDTQC
zd+R6KaC=Haid$&lHG1SO+RrFFIsG_&<U2>iarm=0y!WQwFvXl^yy?Ajg~FP{lls1%
z_S3nW>#>muZiW-N!A_sAZ*uQspU<~(;Andf?0fu`C+K6}eq`e(+cr9_zuw*lzZ>5&
zl2|cZS&?d`MhZVhrKg?zA6>^S9W(#{c${NkWME(b;yzxXka&KZuMFJGFMuKpH%_X4
zgVF!L{!e15U`_{eIT)Bgq5xT84OWwSCmaS10HZ?&){~qkP8R=RW<dB5eW>OE-BiZF
z007~qG`s)+ll&(}7!({7h!oxxY8BKL78bl0gcvUX0RR91E3;ZCmH~g+V$(1X^fW$V
zlR#VUvrtM~2zr7alI2Y-vX+Dng8v>nfj9PH_MV;1&a#s=+5c^WGc1s!K#2-V)M)Sk
zE3EMlk8q9)T;egF;3=NrIbPr;Ug0&~;4R+a3h(g&*Z7DVe8Mg6aF5UUf(^cArIJPw
zm&vh}T^^$J%?yGD7sr3fQ#=sGibfK4yDbArulj|uyOQnBrdW6OV1#vKN*SY6edV-@
z$y4!5cVru{cYQqeYo_ffs**eUyd~zGt=bnmwk;K{Pob|T9x_o|lRHkKl--XMVosfo
z<+P+U*ECqsOXtQSIBmWi@%xgs*$es|SN{SbIpzbIv>c@7Ia@?4J4}Um`ffSjpUbQH
zkO)7M^wbre98b)HW?IkUj#~eY$x$fn6;rp4eHz*zreCI3(`sW?V(CMj0(mhrX4xMD
K7lCP$E-QZCj!H`a

delta 8968
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
Y$P!SdMZr$@i{%MkxiF9}sen1~f3rd%u>b%7

diff --git a/static/font/font/fontello.woff2 b/static/font/font/fontello.woff2
index 6d82e24d4ef7844b588560fe2b29fcb0a71f83d4..79c35f114f4e536a89705bae21d959e29862c9f7 100755
GIT binary patch
literal 9592
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

literal 9460
zcmV<QBn#VjPew8T0RR9103`GP4*&oF07o1E03?|J0RR9100000000000000000000
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
GVE_n^6mjqX


From 3b78c9c755563823adc7716a964505853b579561 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Tue, 2 Apr 2019 13:38:07 -0400
Subject: [PATCH 06/81] #101 - update hard-coded server url

---
 src/components/emoji-selector/emoji-selector.js  | 3 +++
 src/components/emoji-selector/emoji-selector.vue | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/components/emoji-selector/emoji-selector.js b/src/components/emoji-selector/emoji-selector.js
index 07ea0442..133506b7 100644
--- a/src/components/emoji-selector/emoji-selector.js
+++ b/src/components/emoji-selector/emoji-selector.js
@@ -35,6 +35,9 @@ const EmojiSelector = {
           emojis: filterByKeyword(customEmojis, this.keyword)
         }
       }
+    },
+    serverUrl () {
+      return this.$store.state.instance.server
     }
   }
 }
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
index c9593971..f05ff1e9 100644
--- a/src/components/emoji-selector/emoji-selector.vue
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -24,7 +24,7 @@
               @click="onEmoji(emoji)"
             >
               <span v-if="!emoji.image_url">{{emoji.utf}}</span>
-              <img :src="'https://bikeshed.party' + emoji.image_url" v-else>
+              <img :src="serverUrl + emoji.image_url" v-else>
             </span>
           </div>
         </div>

From b4e53576f29d247bd890e890316d2ed026a3d057 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Fri, 5 Apr 2019 14:51:25 -0400
Subject: [PATCH 07/81] #101 - bind scroll event, highlight relevent section by
 tabs

---
 src/components/emoji-selector/emoji-selector.js | 17 ++++++++++++++++-
 .../emoji-selector/emoji-selector.vue           |  9 +++++----
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/src/components/emoji-selector/emoji-selector.js b/src/components/emoji-selector/emoji-selector.js
index 133506b7..6d45df1f 100644
--- a/src/components/emoji-selector/emoji-selector.js
+++ b/src/components/emoji-selector/emoji-selector.js
@@ -6,7 +6,8 @@ const EmojiSelector = {
   data () {
     return {
       open: false,
-      keyword: ''
+      keyword: '',
+      activeGroup: 'standard'
     }
   },
   methods: {
@@ -17,6 +18,20 @@ const EmojiSelector = {
       const value = emoji.image_url ? `:${emoji.shortcode}:` : emoji.utf
       this.$emit('emoji', ` ${value} `)
       this.open = false
+    },
+    highlight (key) {
+      const ref = this.$refs['group-' + key]
+      const top = ref[0].offsetTop
+      this.$refs['emoji-groups'].scrollTop = top + 1
+      this.activeGroup = key
+    },
+    scrolledGroup (e) {
+      const top = e.target.scrollTop
+      Object.keys(this.emojis).forEach(key => {
+        if (this.$refs['group-' + key][0].offsetTop < top) {
+          this.activeGroup = key
+        }
+      })
     }
   },
   computed: {
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
index f05ff1e9..ddab2659 100644
--- a/src/components/emoji-selector/emoji-selector.vue
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -5,7 +5,7 @@
     </span>
     <div class="emoji-dropdown-menu panel panel-default" v-if="open">
       <div class="panel-heading emoji-tabs">
-        <span class="emoji-tabs-item" v-for="(value, key) in emojis" :key="key" :title="value.text">
+        <span class="emoji-tabs-item" :class="{'active': activeGroup === key}" v-for="(value, key) in emojis" :key="key" :title="value.text" @click.prevent="highlight(key)">
           <i :class="value.icon"></i>
         </span>
       </div>
@@ -13,9 +13,9 @@
         <div class="emoji-search">
           <input type="text" class="form-control" v-model="keyword" />
         </div>
-        <div class="emoji-groups">
+        <div class="emoji-groups" ref="emoji-groups" @scroll="scrolledGroup">
           <div v-for="(value, key) in emojis" :key="key" class="emoji-group">
-            <h6 class="emoji-group-title">{{value.text}}</h6>
+            <h6 class="emoji-group-title" :ref="'group-' + key">{{value.text}}</h6>
             <span
               v-for="emoji in value.emojis"
               :key="key + emoji.shortcode"
@@ -78,7 +78,7 @@
     &-item {
       padding: 0 5px;
 
-      &:first-child, &.active {
+      &.active {
         border-bottom: 4px solid;
 
         i {
@@ -96,6 +96,7 @@
   &-groups {
     flex: 1 1 1px;
     overflow: auto;
+    position: relative;
   }
 
   &-group {

From 820a6543c7dc4e99d2a193c5ce05cc0c9453a8d8 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Mon, 8 Apr 2019 11:10:26 -0400
Subject: [PATCH 08/81] #101 - update caret pos after emoji's inserted

---
 src/components/emoji-input/emoji-input.js     | 19 +++++++++++++++++++
 src/components/emoji-input/emoji-input.vue    |  1 +
 .../emoji-selector/emoji-selector.vue         |  3 ++-
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js
index 8f7598ca..99dba1cb 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji-input/emoji-input.js
@@ -110,6 +110,25 @@ const EmojiInput = {
       const newValue = this.value.substr(0, this.caret) + emoji + this.value.substr(this.caret)
       this.$refs.input.focus()
       this.$emit('input', newValue)
+      this.caret += emoji.length
+      setTimeout(() => {
+        this.updateCaretPos()
+      })
+    },
+    updateCaretPos () {
+      const elem = this.$refs.input
+      if (elem.createTextRange) {
+        const range = elem.createTextRange()
+        range.move('character', this.caret)
+        range.select()
+      } else {
+        if (elem.selectionStart) {
+          elem.focus()
+          elem.setSelectionRange(this.caret, this.caret)
+        } else {
+          elem.focus()
+        }
+      }
     }
   }
 }
diff --git a/src/components/emoji-input/emoji-input.vue b/src/components/emoji-input/emoji-input.vue
index 151861de..26d7c32a 100644
--- a/src/components/emoji-input/emoji-input.vue
+++ b/src/components/emoji-input/emoji-input.vue
@@ -6,6 +6,7 @@
       :type="type"
       :value="value"
       :placeholder="placeholder"
+      id="good"
       @input="onInput"
       @click="setCaret"
       @keyup="setCaret"
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
index ddab2659..d5d63543 100644
--- a/src/components/emoji-selector/emoji-selector.vue
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -42,7 +42,7 @@
   &-dropdown {
     position: absolute;
     right: 0;
-    top: 100%;
+    top: 28px;
     z-index: 1;
 
     &-toggle {
@@ -50,6 +50,7 @@
       position: absolute;
       top: -25px;
       right: 2px;
+      line-height: 1;
 
       i {
         font-size: 18px;

From 2ab915b48680b3c176a201700b2dd7e859329b05 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Mon, 8 Apr 2019 11:50:12 -0400
Subject: [PATCH 09/81] #101 - click outside of emoji implementation

---
 src/components/emoji-selector/emoji-selector.js  | 12 ++++++++++++
 src/components/emoji-selector/emoji-selector.vue |  6 +++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/components/emoji-selector/emoji-selector.js b/src/components/emoji-selector/emoji-selector.js
index 6d45df1f..969b880b 100644
--- a/src/components/emoji-selector/emoji-selector.js
+++ b/src/components/emoji-selector/emoji-selector.js
@@ -3,6 +3,12 @@ const filterByKeyword = (list, keyword = '') => {
 }
 
 const EmojiSelector = {
+  mounted () {
+    document.body.addEventListener('click', this.outsideClicked)
+  },
+  destroyed () {
+    document.body.removeEventListener('click', this.outsideClicked)
+  },
   data () {
     return {
       open: false,
@@ -14,6 +20,12 @@ const EmojiSelector = {
     togglePanel () {
       this.open = !this.open
     },
+    insideClicked (e) {
+      e.stopPropagation()
+    },
+    outsideClicked () {
+      this.open = false
+    },
     onEmoji (emoji) {
       const value = emoji.image_url ? `:${emoji.shortcode}:` : emoji.utf
       this.$emit('emoji', ` ${value} `)
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
index d5d63543..98d2642e 100644
--- a/src/components/emoji-selector/emoji-selector.vue
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -1,6 +1,6 @@
 <template>
-  <div class="emoji-dropdown">
-    <span class="emoji-dropdown-toggle" @click="togglePanel">
+  <div class="emoji-dropdown" @click.prevent="insideClicked">
+    <span class="emoji-dropdown-toggle" @click.prevent="togglePanel">
       <i class="icon-smile"></i>
     </span>
     <div class="emoji-dropdown-menu panel panel-default" v-if="open">
@@ -48,7 +48,7 @@
     &-toggle {
       cursor: pointer;
       position: absolute;
-      top: -25px;
+      top: -23px;
       right: 2px;
       line-height: 1;
 

From 885f4c9924aa0372d8949666078c3630a38333ae Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Mon, 8 Apr 2019 12:02:50 -0400
Subject: [PATCH 10/81] #101 - bind outside click, add emoji to post status
 form

---
 src/components/emoji-input/emoji-input.js     |  1 -
 .../emoji-selector/emoji-selector.vue         |  4 ++
 .../post_status_form/post_status_form.js      | 27 ++++++++++-
 .../post_status_form/post_status_form.vue     | 48 +++++++++++--------
 4 files changed, 59 insertions(+), 21 deletions(-)

diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js
index 99dba1cb..112fd148 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji-input/emoji-input.js
@@ -108,7 +108,6 @@ const EmojiInput = {
     },
     onEmoji (emoji) {
       const newValue = this.value.substr(0, this.caret) + emoji + this.value.substr(this.caret)
-      this.$refs.input.focus()
       this.$emit('input', newValue)
       this.caret += emoji.length
       setTimeout(() => {
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
index 98d2642e..0630772c 100644
--- a/src/components/emoji-selector/emoji-selector.vue
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -92,6 +92,10 @@
 
   &-search {
     padding: 5px;
+
+    input {
+      width: 100%;
+    }
   }
 
   &-groups {
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index c65c27e2..8b0031de 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -2,6 +2,7 @@ import statusPoster from '../../services/status_poster/status_poster.service.js'
 import MediaUpload from '../media_upload/media_upload.vue'
 import ScopeSelector from '../scope_selector/scope_selector.vue'
 import EmojiInput from '../emoji-input/emoji-input.vue'
+import EmojiSelector from '../emoji-selector/emoji-selector.vue'
 import fileTypeService from '../../services/file_type/file_type.service.js'
 import Completion from '../../services/completion/completion.js'
 import { take, filter, reject, map, uniqBy } from 'lodash'
@@ -32,7 +33,8 @@ const PostStatusForm = {
   components: {
     MediaUpload,
     ScopeSelector,
-    EmojiInput
+    EmojiInput,
+    EmojiSelector
   },
   mounted () {
     this.resize(this.$refs.textarea)
@@ -233,6 +235,29 @@ const PostStatusForm = {
     onKeydown (e) {
       e.stopPropagation()
     },
+    onEmoji (emoji) {
+      const newValue = this.newStatus.status.substr(0, this.caret) + emoji + this.newStatus.status.substr(this.caret)
+      this.newStatus.status = newValue
+      this.caret += emoji.length
+      setTimeout(() => {
+        this.updateCaretPos()
+      })
+    },
+    updateCaretPos () {
+      const elem = this.$refs.textarea
+      if (elem.createTextRange) {
+        const range = elem.createTextRange()
+        range.move('character', this.caret)
+        range.select()
+      } else {
+        if (elem.selectionStart) {
+          elem.focus()
+          elem.setSelectionRange(this.caret, this.caret)
+        } else {
+          elem.focus()
+        }
+      }
+    },
     setCaret ({target: {selectionStart}}) {
       this.caret = selectionStart
     },
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 1ce2b647..102cb484 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -20,25 +20,28 @@
         v-model="newStatus.spoilerText"
         classname="form-control"
       />
-      <textarea
-        ref="textarea"
-        @click="setCaret"
-        @keyup="setCaret" v-model="newStatus.status" :placeholder="$t('post_status.default')" rows="1" class="form-control"
-        @keydown="onKeydown"
-        @keydown.down="cycleForward"
-        @keydown.up="cycleBackward"
-        @keydown.shift.tab="cycleBackward"
-        @keydown.tab="cycleForward"
-        @keydown.enter="replaceCandidate"
-        @keydown.meta.enter="postStatus(newStatus)"
-        @keyup.ctrl.enter="postStatus(newStatus)"
-        @drop="fileDrop"
-        @dragover.prevent="fileDrag"
-        @input="resize"
-        @paste="paste"
-        :disabled="posting"
-      >
-      </textarea>
+      <div class="status-input-wrapper">
+        <textarea
+          ref="textarea"
+          @click="setCaret"
+          @keyup="setCaret" v-model="newStatus.status" :placeholder="$t('post_status.default')" rows="1" class="form-control"
+          @keydown="onKeydown"
+          @keydown.down="cycleForward"
+          @keydown.up="cycleBackward"
+          @keydown.shift.tab="cycleBackward"
+          @keydown.tab="cycleForward"
+          @keydown.enter="replaceCandidate"
+          @keydown.meta.enter="postStatus(newStatus)"
+          @keyup.ctrl.enter="postStatus(newStatus)"
+          @drop="fileDrop"
+          @dragover.prevent="fileDrag"
+          @input="resize"
+          @paste="paste"
+          :disabled="posting"
+        >
+        </textarea>
+        <EmojiSelector @emoji="onEmoji" />
+      </div>
       <div class="visibility-tray">
         <span class="text-format" v-if="formattingOptionsEnabled">
           <label for="post-content-type" class="select">
@@ -179,6 +182,13 @@
     }
   }
 
+  .status-input-wrapper {
+    display: flex;
+    position: relative;
+    width: 100%;
+    flex-direction: column;
+  }
+
   .attachments {
     padding: 0 0.5em;
 

From 7f6f025792dcb3a10c94c8952d0312abd0b46989 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Mon, 8 Apr 2019 13:32:39 -0400
Subject: [PATCH 11/81] #101 - remove unused code

---
 src/components/emoji-input/emoji-input.vue | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/components/emoji-input/emoji-input.vue b/src/components/emoji-input/emoji-input.vue
index 26d7c32a..151861de 100644
--- a/src/components/emoji-input/emoji-input.vue
+++ b/src/components/emoji-input/emoji-input.vue
@@ -6,7 +6,6 @@
       :type="type"
       :value="value"
       :placeholder="placeholder"
-      id="good"
       @input="onInput"
       @click="setCaret"
       @keyup="setCaret"

From 259e8c52eeb4b1e52bdbf60e94b081e3af771950 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 28 Jul 2019 13:33:05 +0300
Subject: [PATCH 12/81] post-merge fix

---
 src/components/emoji-input/emoji-input.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js
index c3c5c88b..ddabcf3a 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji-input/emoji-input.js
@@ -1,4 +1,5 @@
 import Completion from '../../services/completion/completion.js'
+import EmojiSelector from '../emoji-selector/emoji-selector.vue'
 import { take } from 'lodash'
 
 /**

From 4c78fdb3934745ccbc87c10daf56552f0bfc0edc Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 28 Jul 2019 13:56:08 +0300
Subject: [PATCH 13/81] rename emoji-selector to emoji-picker

---
 src/components/emoji-input/emoji-input.js                     | 4 ++--
 .../emoji-selector.js => emoji-picker/emoji-picker.js}        | 4 ++--
 .../emoji-selector.vue => emoji-picker/emoji-picker.vue}      | 2 +-
 src/components/post_status_form/post_status_form.js           | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)
 rename src/components/{emoji-selector/emoji-selector.js => emoji-picker/emoji-picker.js} (97%)
 rename src/components/{emoji-selector/emoji-selector.vue => emoji-picker/emoji-picker.vue} (98%)

diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js
index ddabcf3a..62c58446 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji-input/emoji-input.js
@@ -1,5 +1,5 @@
 import Completion from '../../services/completion/completion.js'
-import EmojiSelector from '../emoji-selector/emoji-selector.vue'
+import EmojiPicker from '../emoji-picker/emoji-picker.vue'
 import { take } from 'lodash'
 
 /**
@@ -65,7 +65,7 @@ const EmojiInput = {
     }
   },
   components: {
-    EmojiSelector
+    EmojiPicker
   },
   computed: {
     suggestions () {
diff --git a/src/components/emoji-selector/emoji-selector.js b/src/components/emoji-picker/emoji-picker.js
similarity index 97%
rename from src/components/emoji-selector/emoji-selector.js
rename to src/components/emoji-picker/emoji-picker.js
index 969b880b..9d2595aa 100644
--- a/src/components/emoji-selector/emoji-selector.js
+++ b/src/components/emoji-picker/emoji-picker.js
@@ -2,7 +2,7 @@ const filterByKeyword = (list, keyword = '') => {
   return list.filter(x => x.shortcode.indexOf(keyword) !== -1)
 }
 
-const EmojiSelector = {
+const EmojiPicker = {
   mounted () {
     document.body.addEventListener('click', this.outsideClicked)
   },
@@ -69,4 +69,4 @@ const EmojiSelector = {
   }
 }
 
-export default EmojiSelector
+export default EmojiPicker
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-picker/emoji-picker.vue
similarity index 98%
rename from src/components/emoji-selector/emoji-selector.vue
rename to src/components/emoji-picker/emoji-picker.vue
index 0630772c..663d9e2e 100644
--- a/src/components/emoji-selector/emoji-selector.vue
+++ b/src/components/emoji-picker/emoji-picker.vue
@@ -33,7 +33,7 @@
   </div>
 </template>
 
-<script src="./emoji-selector.js"></script>
+<script src="./emoji-picker.js"></script>
 
 <style lang="scss">
 @import '../../_variables.scss';
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 5aaac8e6..3e1b83b5 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -2,7 +2,7 @@ import statusPoster from '../../services/status_poster/status_poster.service.js'
 import MediaUpload from '../media_upload/media_upload.vue'
 import ScopeSelector from '../scope_selector/scope_selector.vue'
 import EmojiInput from '../emoji-input/emoji-input.vue'
-import EmojiSelector from '../emoji-selector/emoji-selector.vue'
+import EmojiPicker from '../emoji-picker/emoji-picker.vue'
 import PollForm from '../poll/poll_form.vue'
 import StickerPicker from '../sticker_picker/sticker_picker.vue'
 import fileTypeService from '../../services/file_type/file_type.service.js'

From 03c2f29b0aa31eb502db29e5a809da8bc1c1af28 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 28 Jul 2019 16:07:01 +0300
Subject: [PATCH 14/81] cleanup and appropriation for new emoji-input component
 API, styles updates

---
 src/boot/after_store.js                       |  12 ++--
 src/components/emoji-input/emoji-input.js     |  30 ++++++++-
 src/components/emoji-input/emoji-input.vue    |  54 ++++++++++++++++-
 src/components/emoji-picker/emoji-picker.js   |  33 +++-------
 src/components/emoji-picker/emoji-picker.vue  |  57 ++++++++----------
 .../post_status_form/post_status_form.js      |   2 -
 .../post_status_form/post_status_form.vue     |   2 +
 static/font/LICENSE.txt                       |   0
 static/font/README.txt                        |   0
 static/font/config.json                       |   4 +-
 static/font/css/animation.css                 |   0
 static/font/css/fontello-codes.css            |   1 +
 static/font/css/fontello-embedded.css         |  13 ++--
 static/font/css/fontello-ie7-codes.css        |   1 +
 static/font/css/fontello-ie7.css              |   1 +
 static/font/css/fontello.css                  |  15 ++---
 static/font/demo.html                         |  15 +++--
 static/font/font/fontello.eot                 | Bin 19060 -> 19376 bytes
 static/font/font/fontello.svg                 |   2 +
 static/font/font/fontello.ttf                 | Bin 18892 -> 19208 bytes
 static/font/font/fontello.woff                | Bin 11596 -> 11808 bytes
 static/font/font/fontello.woff2               | Bin 9856 -> 10044 bytes
 22 files changed, 153 insertions(+), 89 deletions(-)
 mode change 100755 => 100644 static/font/LICENSE.txt
 mode change 100755 => 100644 static/font/README.txt
 mode change 100755 => 100644 static/font/config.json
 mode change 100755 => 100644 static/font/css/animation.css
 mode change 100755 => 100644 static/font/css/fontello-codes.css
 mode change 100755 => 100644 static/font/css/fontello-embedded.css
 mode change 100755 => 100644 static/font/css/fontello-ie7-codes.css
 mode change 100755 => 100644 static/font/css/fontello-ie7.css
 mode change 100755 => 100644 static/font/css/fontello.css
 mode change 100755 => 100644 static/font/demo.html
 mode change 100755 => 100644 static/font/font/fontello.eot
 mode change 100755 => 100644 static/font/font/fontello.svg
 mode change 100755 => 100644 static/font/font/fontello.ttf
 mode change 100755 => 100644 static/font/font/fontello.woff
 mode change 100755 => 100644 static/font/font/fontello.woff2

diff --git a/src/boot/after_store.js b/src/boot/after_store.js
index 3799359f..0e59358b 100644
--- a/src/boot/after_store.js
+++ b/src/boot/after_store.js
@@ -190,7 +190,7 @@ const getStaticEmoji = async ({ store }) => {
           imageUrl: false,
           replacement: values[key]
         }
-      })
+      }).sort((a, b) => a.displayText - b.displayText)
       store.dispatch('setInstanceOption', { name: 'emoji', value: emoji })
     } else {
       throw (res)
@@ -209,14 +209,16 @@ const getCustomEmoji = async ({ store }) => {
     if (res.ok) {
       const result = await res.json()
       const values = Array.isArray(result) ? Object.assign({}, ...result) : result
-      const emoji = Object.keys(values).map((key) => {
-        const imageUrl = values[key].image_url
+      const emoji = Object.entries(values).map(([key, value]) => {
+        const imageUrl = value.image_url
         return {
           displayText: key,
-          imageUrl: imageUrl ? store.state.instance.server + imageUrl : values[key],
+          imageUrl: imageUrl ? store.state.instance.server + imageUrl : value,
+          tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],
           replacement: `:${key}: `
         }
-      })
+        // Technically could use tags but those are kinda useless right now, should have been "pack" field, that would be more useful
+      }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : 0)
       store.dispatch('setInstanceOption', { name: 'customEmoji', value: emoji })
       store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: true })
     } else {
diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js
index 62c58446..1c49c710 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji-input/emoji-input.js
@@ -53,6 +53,11 @@ const EmojiInput = {
        */
       required: true,
       type: String
+    },
+    emojiPicker: {
+      required: false,
+      type: Boolean,
+      default: false
     }
   },
   data () {
@@ -61,7 +66,8 @@ const EmojiInput = {
       highlighted: 0,
       caret: 0,
       focused: false,
-      blurTimeout: null
+      blurTimeout: null,
+      showPicker: false,
     }
   },
   components: {
@@ -83,12 +89,15 @@ const EmojiInput = {
           highlighted: index === this.highlighted
         }))
     },
-    showPopup () {
+    showSuggestions () {
       return this.focused && this.suggestions && this.suggestions.length > 0
     },
     textAtCaret () {
       return (this.wordAtCaret || {}).word || ''
     },
+    pickerIconBottom () {
+      return this.input && this.input.tag === 'textarea'
+    },
     wordAtCaret () {
       if (this.value && this.caret) {
         const word = Completion.wordAtPosition(this.value, this.caret - 1) || {}
@@ -124,11 +133,22 @@ const EmojiInput = {
     }
   },
   methods: {
+    togglePicker () {
+      this.showPicker = !this.showPicker
+    },
     replace (replacement) {
       const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)
       this.$emit('input', newValue)
       this.caret = 0
     },
+    insert (insertion) {
+      const newValue = [
+        this.value.substring(0, this.caret),
+        insertion,
+        this.value.substring(this.caret)
+      ].join('')
+      this.$emit('input', newValue)
+    },
     replaceText (e, suggestion) {
       const len = this.suggestions.length || 0
       if (this.textAtCaret.length === 1) { return }
@@ -195,6 +215,7 @@ const EmojiInput = {
         this.blurTimeout = null
       }
 
+      this.showPicker = false
       this.focused = true
       this.setCaret(e)
       this.resize()
@@ -231,6 +252,7 @@ const EmojiInput = {
       }
     },
     onInput (e) {
+      this.showPicker = false
       this.setCaret(e)
       this.$emit('input', e.target.value)
     },
@@ -239,6 +261,9 @@ const EmojiInput = {
       this.resize()
       this.$emit('input', e.target.value)
     },
+    onClickOutside () {
+      this.showPicker = false
+    },
     setCaret ({ target: { selectionStart } }) {
       this.caret = selectionStart
     },
@@ -247,6 +272,7 @@ const EmojiInput = {
       if (!panel) return
       const { offsetHeight, offsetTop } = this.input.elm
       this.$refs.panel.style.top = (offsetTop + offsetHeight) + 'px'
+      this.$refs.picker.$el.style.top = (offsetTop + offsetHeight) + 'px'
     }
   }
 }
diff --git a/src/components/emoji-input/emoji-input.vue b/src/components/emoji-input/emoji-input.vue
index 48739ec8..605882e8 100644
--- a/src/components/emoji-input/emoji-input.vue
+++ b/src/components/emoji-input/emoji-input.vue
@@ -1,10 +1,29 @@
 <template>
-  <div class="emoji-input">
+<div
+  class="emoji-input"
+  v-click-outside="onClickOutside"
+  >
     <slot />
+    <template v-if="emojiPicker">
+      <div
+        @click.prevent="togglePicker"
+        class="emoji-picker-icon"
+        :class="pickerIconBottom ? 'picker-icon-bottom': 'picker-icon-right'"
+        >
+        <i class="icon-smile"></i>
+      </div>
+      <EmojiPicker
+        v-if="emojiPicker"
+        :class="{ hide: !showPicker }"
+        ref="picker"
+        class="emoji-picker-panel"
+        @emoji="insert"
+        />
+    </template>
     <div
       ref="panel"
       class="autocomplete-panel"
-      :class="{ hide: !showPopup }"
+      :class="{ hide: !showSuggestions }"
     >
       <div class="autocomplete-panel-body">
         <div
@@ -39,6 +58,37 @@
 .emoji-input {
   display: flex;
   flex-direction: column;
+  position: relative;
+
+  .emoji-picker-icon {
+    position: absolute;
+    margin: 0 .25em;
+    font-size: 16px;
+    cursor: pointer;
+
+    &:hover i {
+      color: $fallback--text;
+      color: var(--text, $fallback--text);
+    }
+
+    &.picker-icon-bottom {
+      bottom: 0;
+      left: 0;
+    }
+    &.picker-icon-right {
+      top: 0;
+      right: 0;
+    }
+  }
+  .emoji-picker-panel {
+    position: absolute;
+    z-index: 9;
+    margin-top: 2px;
+
+    &.hide {
+      display: none
+    }
+  }
 
   .autocomplete {
     &-panel {
diff --git a/src/components/emoji-picker/emoji-picker.js b/src/components/emoji-picker/emoji-picker.js
index 9d2595aa..92d517b7 100644
--- a/src/components/emoji-picker/emoji-picker.js
+++ b/src/components/emoji-picker/emoji-picker.js
@@ -1,33 +1,17 @@
 const filterByKeyword = (list, keyword = '') => {
-  return list.filter(x => x.shortcode.indexOf(keyword) !== -1)
+  return list.filter(x => x.displayText.includes(keyword))
 }
 
 const EmojiPicker = {
-  mounted () {
-    document.body.addEventListener('click', this.outsideClicked)
-  },
-  destroyed () {
-    document.body.removeEventListener('click', this.outsideClicked)
-  },
   data () {
     return {
-      open: false,
       keyword: '',
       activeGroup: 'standard'
     }
   },
   methods: {
-    togglePanel () {
-      this.open = !this.open
-    },
-    insideClicked (e) {
-      e.stopPropagation()
-    },
-    outsideClicked () {
-      this.open = false
-    },
     onEmoji (emoji) {
-      const value = emoji.image_url ? `:${emoji.shortcode}:` : emoji.utf
+      const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement
       this.$emit('emoji', ` ${value} `)
       this.open = false
     },
@@ -51,20 +35,17 @@ const EmojiPicker = {
       const standardEmojis = this.$store.state.instance.emoji || []
       const customEmojis = this.$store.state.instance.customEmoji || []
       return {
-        standard: {
-          text: 'Standard',
-          icon: 'icon-star',
-          emojis: filterByKeyword(standardEmojis, this.keyword)
-        },
         custom: {
           text: 'Custom',
           icon: 'icon-picture',
           emojis: filterByKeyword(customEmojis, this.keyword)
+        },
+        standard: {
+          text: 'Standard',
+          icon: 'icon-star',
+          emojis: filterByKeyword(standardEmojis, this.keyword)
         }
       }
-    },
-    serverUrl () {
-      return this.$store.state.instance.server
     }
   }
 }
diff --git a/src/components/emoji-picker/emoji-picker.vue b/src/components/emoji-picker/emoji-picker.vue
index 663d9e2e..ea93e6fc 100644
--- a/src/components/emoji-picker/emoji-picker.vue
+++ b/src/components/emoji-picker/emoji-picker.vue
@@ -1,36 +1,31 @@
 <template>
-  <div class="emoji-dropdown" @click.prevent="insideClicked">
-    <span class="emoji-dropdown-toggle" @click.prevent="togglePanel">
-      <i class="icon-smile"></i>
+<div class="emoji-dropdown-menu panel panel-default">
+  <div class="panel-heading emoji-tabs">
+    <span class="emoji-tabs-item" :class="{'active': activeGroup === key}" v-for="(value, key) in emojis" :key="key" :title="value.text" @click.prevent="highlight(key)">
+      <i :class="value.icon"></i>
     </span>
-    <div class="emoji-dropdown-menu panel panel-default" v-if="open">
-      <div class="panel-heading emoji-tabs">
-        <span class="emoji-tabs-item" :class="{'active': activeGroup === key}" v-for="(value, key) in emojis" :key="key" :title="value.text" @click.prevent="highlight(key)">
-          <i :class="value.icon"></i>
+  </div>
+  <div class="panel-body emoji-dropdown-menu-content">
+    <div class="emoji-search">
+      <input type="text" class="form-control" v-model="keyword" />
+    </div>
+    <div class="emoji-groups" ref="emoji-groups" @scroll="scrolledGroup">
+      <div v-for="(value, key) in emojis" :key="key" class="emoji-group">
+        <h6 class="emoji-group-title" :ref="'group-' + key">{{value.text}}</h6>
+        <span
+          v-for="emoji in value.emojis"
+          :key="key + emoji.displayText"
+          :title="emoji.displayText"
+          class="emoji-item"
+          @click="onEmoji(emoji)"
+          >
+          <span v-if="!emoji.imageUrl">{{emoji.replacement}}</span>
+          <img :src="emoji.imageUrl" v-else>
         </span>
       </div>
-      <div class="panel-body emoji-dropdown-menu-content">
-        <div class="emoji-search">
-          <input type="text" class="form-control" v-model="keyword" />
-        </div>
-        <div class="emoji-groups" ref="emoji-groups" @scroll="scrolledGroup">
-          <div v-for="(value, key) in emojis" :key="key" class="emoji-group">
-            <h6 class="emoji-group-title" :ref="'group-' + key">{{value.text}}</h6>
-            <span
-              v-for="emoji in value.emojis"
-              :key="key + emoji.shortcode"
-              :title="emoji.shortcode"
-              class="emoji-item"
-              @click="onEmoji(emoji)"
-            >
-              <span v-if="!emoji.image_url">{{emoji.utf}}</span>
-              <img :src="serverUrl + emoji.image_url" v-else>
-            </span>
-          </div>
-        </div>
-      </div>
     </div>
   </div>
+</div>
 </template>
 
 <script src="./emoji-picker.js"></script>
@@ -119,14 +114,14 @@
   }
 
   &-item {
-    width: 34px;
-    height: 34px;
+    width: 32px;
+    height: 32px;
     box-sizing: border-box;
     display: flex;
-    font-size: 16px;
+    font-size: 32px;
     align-items: center;
     justify-content: center;
-    padding: 5px;
+    margin: 2px;
     cursor: pointer;
 
     img {
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 3e1b83b5..40bbf6d4 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -2,7 +2,6 @@ import statusPoster from '../../services/status_poster/status_poster.service.js'
 import MediaUpload from '../media_upload/media_upload.vue'
 import ScopeSelector from '../scope_selector/scope_selector.vue'
 import EmojiInput from '../emoji-input/emoji-input.vue'
-import EmojiPicker from '../emoji-picker/emoji-picker.vue'
 import PollForm from '../poll/poll_form.vue'
 import StickerPicker from '../sticker_picker/sticker_picker.vue'
 import fileTypeService from '../../services/file_type/file_type.service.js'
@@ -37,7 +36,6 @@ const PostStatusForm = {
     EmojiInput,
     PollForm,
     StickerPicker,
-    EmojiSelector,
     ScopeSelector
   },
   mounted () {
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index d15c75ad..0b3db30d 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -61,6 +61,7 @@
         <EmojiInput
           v-if="newStatus.spoilerText || alwaysShowSubject"
           v-model="newStatus.spoilerText"
+          emojiPicker
           :suggest="emojiSuggestor"
           class="form-control"
         >
@@ -75,6 +76,7 @@
         <EmojiInput
           v-model="newStatus.status"
           :suggest="emojiUserSuggestor"
+          emojiPicker
           class="form-control main-input"
         >
           <textarea
diff --git a/static/font/LICENSE.txt b/static/font/LICENSE.txt
old mode 100755
new mode 100644
diff --git a/static/font/README.txt b/static/font/README.txt
old mode 100755
new mode 100644
diff --git a/static/font/config.json b/static/font/config.json
old mode 100755
new mode 100644
index 6a68019c..7655e4d1
--- a/static/font/config.json
+++ b/static/font/config.json
@@ -238,7 +238,7 @@
       "uid": "266d5d9adf15a61800477a5acf9a4462",
       "css": "chart-bar",
       "code": 59419,
-      "src": "fontelico"
+      "src": "fontawesome"
     },
     {
       "uid": "d862a10e1448589215be19702f98f2c1",
@@ -293,4 +293,4 @@
       ]
     }
   ]
-}
+}
\ No newline at end of file
diff --git a/static/font/css/animation.css b/static/font/css/animation.css
old mode 100755
new mode 100644
diff --git a/static/font/css/fontello-codes.css b/static/font/css/fontello-codes.css
old mode 100755
new mode 100644
index 273fce35..837b79d9
--- a/static/font/css/fontello-codes.css
+++ b/static/font/css/fontello-codes.css
@@ -37,6 +37,7 @@
 .icon-bell-alt:before { content: '\f0f3'; } /* '' */
 .icon-plus-squared:before { content: '\f0fe'; } /* '' */
 .icon-reply:before { content: '\f112'; } /* '' */
+.icon-smile:before { content: '\f118'; } /* '' */
 .icon-lock-open-alt:before { content: '\f13e'; } /* '' */
 .icon-ellipsis:before { content: '\f141'; } /* '' */
 .icon-play-circled:before { content: '\f144'; } /* '' */
diff --git a/static/font/css/fontello-embedded.css b/static/font/css/fontello-embedded.css
old mode 100755
new mode 100644
index 44b26e90..ca7dc40a
--- a/static/font/css/fontello-embedded.css
+++ b/static/font/css/fontello-embedded.css
@@ -1,15 +1,15 @@
 @font-face {
   font-family: 'fontello';
-  src: url('../font/fontello.eot?36125818');
-  src: url('../font/fontello.eot?36125818#iefix') format('embedded-opentype'),
-       url('../font/fontello.svg?36125818#fontello') format('svg');
+  src: url('../font/fontello.eot?88512238');
+  src: url('../font/fontello.eot?88512238#iefix') format('embedded-opentype'),
+       url('../font/fontello.svg?88512238#fontello') format('svg');
   font-weight: normal;
   font-style: normal;
 }
 @font-face {
   font-family: 'fontello';
-  src: url('data:application/octet-stream;base64,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') format('woff'),
-       url('data:application/octet-stream;base64,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') format('truetype');
+  src: url('data:application/octet-stream;base64,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') format('woff'),
+       url('data:application/octet-stream;base64,AAEAAAAPAIAAAwBwR1NVQiCLJXoAAAD8AAAAVE9TLzI+L1N2AAABUAAAAFZjbWFw75ShDQAAAagAAARYY3Z0IAb//vQAAD7wAAAAIGZwZ22KkZBZAAA/EAAAC3BnYXNwAAAAEAAAPugAAAAIZ2x5ZhBTvwwAAAYAAAAyhmhlYWQWUrHsAAA4iAAAADZoaGVhB8kECQAAOMAAAAAkaG10eKU2/98AADjkAAAAuGxvY2EqxhtSAAA5nAAAAF5tYXhwAYMNpgAAOfwAAAAgbmFtZcydHyEAADocAAACzXBvc3SgAaIJAAA87AAAAftwcmVw5UErvAAASoAAAACGAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAEDlwGQAAUAAAJ6ArwAAACMAnoCvAAAAeAAMQECAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAQOgA8jQDWf9xAFoDZwCeAAAAAQAAAAAAAAAAAAUAAAADAAAALAAAAAQAAAIsAAEAAAAAASYAAwABAAAALAADAAoAAAIsAAQA+gAAACQAIAAEAAToG+gy6DTwj/DJ8ODw5fDz8P7xEvEY8T7xQfFE8WTx5fI0//8AAOgA6DLoNPCO8Mnw4PDl8PPw/vES8RjxPvFB8UTxZPHl8jT//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAkAFoAWgBaAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAACLAAAAAAAAAAtAADoAAAA6AAAAAABAADoAQAA6AEAAAACAADoAgAA6AIAAAADAADoAwAA6AMAAAAEAADoBAAA6AQAAAAFAADoBQAA6AUAAAAGAADoBgAA6AYAAAAHAADoBwAA6AcAAAAIAADoCAAA6AgAAAAJAADoCQAA6AkAAAAKAADoCgAA6AoAAAALAADoCwAA6AsAAAAMAADoDAAA6AwAAAANAADoDQAA6A0AAAAOAADoDgAA6A4AAAAPAADoDwAA6A8AAAAQAADoEAAA6BAAAAARAADoEQAA6BEAAAASAADoEgAA6BIAAAATAADoEwAA6BMAAAAUAADoFAAA6BQAAAAVAADoFQAA6BUAAAAWAADoFgAA6BYAAAAXAADoFwAA6BcAAAAYAADoGAAA6BgAAAAZAADoGQAA6BkAAAAaAADoGgAA6BoAAAAbAADoGwAA6BsAAAAcAADoMgAA6DIAAAAdAADoNAAA6DQAAAAeAADwjgAA8I4AAAAfAADwjwAA8I8AAAAgAADwyQAA8MkAAAAhAADw4AAA8OAAAAAiAADw5QAA8OUAAAAjAADw8wAA8PMAAAAkAADw/gAA8P4AAAAlAADxEgAA8RIAAAAmAADxGAAA8RgAAAAnAADxPgAA8T4AAAAoAADxQQAA8UEAAAApAADxRAAA8UQAAAAqAADxZAAA8WQAAAArAADx5QAA8eUAAAAsAADyNAAA8jQAAAAtAAEAAP/2AtQCjQAkAB5AGyIZEAcEAAIBRwMBAgACbwEBAABmFBwUFAQFGCslFA8BBiIvAQcGIi8BJjQ/AScmND8BNjIfATc2Mh8BFhQPARcWAtQPTBAsEKSkECwQTBAQpKQQEEwQLBCkpBAsEEwPD6SkD3cWEEwPD6WlDw9MECwQpKQQLBBMEBCkpBAQTA8uD6SkDwAEAAD/uAOhAzUACAARACkAQABGQEM1AQcGCQACAgACRwAJBglvCAEGBwZvAAcDB28ABAACBFQFAQMBAQACAwBgAAQEAlgAAgQCTD08IzMjIjIlORgSCgUdKyU0Jg4CHgE2NzQmDgIeATY3FRQGIyEiJic1NDYXMx4BOwEyNjczMhYDBisBFRQGByMiJic1IyImPwE2Mh8BFgLKFB4UAhgaGI0UIBICFhwYRiAW/MsXHgEgFu4MNiOPIjYN7hYgtgkYjxQPjw8UAY8XExH6Ch4K+hIkDhYCEiASBBoMDhYCEiASBBqJsxYgIBazFiABHygoHx4BUhb6DxQBFg76LBH6Cgr6EQAAAAABAAD/0QOhA0cAHwAdQBoSDwoEAwUAAgFHAAIAAm8BAQAAZh0UFwMFFysBFA8BExUUDgEvAQcGIiY1NDcTJyY1NDclNzYyHwEFFgOhD8owDBUM+/oMFgwBMMsOHwEYfgsgDH0BGCAB8AwPxf7pDAsQAQeEhAcSCgQIARfFDwwVBSj+Fxf+KAUAAgAA/9EDoQNHAAkAKQAnQCQcGRQODQkIBwYFAwEMAAIBRwACAAJvAQEAAGYlJBcWEhADBRQrATcvAQ8BFwc3FxMUDwETFRQjIi8BBwYiJjU0NxMnJjU0NyU3NjIfAQUWAnuq62pp7Ksp09P+D8owFwoM+/oMFgwBMMsOHwEYfgsgDH0BGCABKaYi1dUiputvbwGyDA/F/ukMHAeEhAcSCgQIARfFDwwVBSj+Fxf+KAUAAAAAAgAA//8EMAKDACEAQwBCQD8iAQQGAUcDAQEHBgcBBm0JAQYEBwYEawgBAgAHAQIHYAAEAAAEVAAEBABYBQEABABMQkAWISUYIRYVKBMKBR0rJRQGJyEiJi8BLgEzESMiLgE/ATYyHwEWFAYHIxUhMh8BFiUUDwEGIi8BJjQ2OwE1ISIvASY0NjchMhYfAR4BFREzMhYCygoI/ekFBgIDAQIBaw8UAQizCyAMsgkWDmsBQQkFWQQBZQiyDCALswgWDmv+vgkFWQQKCAIYBAYCAwECaw4WEgcMAQIDBAEMAU8WGwrWDAzWChwUAdYGbAXiDQrWDQ3WChsW1gdrBQ0KAQIDBQIIA/6yFgAAAAUAAP/KA+gCuAAJABoAPgBEAFcAV0BUNBsCAARTBgICAFJDAgECUEIpJwgBBgYBBEcABQQFbwACAAEAAgFtAAEGAAEGawAGAwAGA2sAAwNuAAQAAARUAAQEAFgAAAQATExLEy4ZJBQdBwUaKyU3LgE3NDcGBxYBNCYHIgYVFBYyNjU0NjMyNjcUFQYCDwEGIyInJjU0Ny4BJyY0Nz4BMzIXNzYzMhYfARYHFhMUBgcTFhcUBwYHDgEjNz4BNyYnNx4BFxYBNiswOAEigFVeAWoQC0ZkEBYQRDALEMo76jscBQoHRAkZUIYyCwtW/JcyMh8FCgMOCyQLAQkVWEmdBPoLFidU3Hwpd8hFQV0jNWIgC3BPI2o9QzpBhJABZwsQAWRFCxAQCzBEEHUEAWn+WmkyCScGCgcqJHhNESoSg5gKNgkGBhQGAQX+/U6AGwEYGV4TEyQtYGpKCoRpZEA/JGI2EwAAAv///3EDoQMUAAgAIQBUQAofAQEADgEDAQJHS7AhUFhAFgAEAAABBABgAAEAAwIBA2AAAgINAkkbQB0AAgMCcAAEAAABBABgAAEDAwFUAAEBA1gAAwEDTFm3FyMUExIFBRkrATQuAQYUFj4BARQGIi8BBiMiLgI+BB4CFxQHFxYCg5LQkpLQkgEeLDoUv2R7UJJoQAI8bI6kjmw8AUW/FQGJZ5IClsqYBoz+mh0qFb9FPmqQoo5uOgRCZpZNe2S/FQAAAAIAAP+4A1oDEgAIAGoARUBCZVlMQQQABDsKAgEANCgbEAQDAQNHAAUEBW8GAQQABG8AAAEAbwABAwFvAAMCA28AAgJmXFtTUUlIKyoiIBMSBwUWKwE0JiIOARYyNiUVFAYPAQYHFhcWFAcOASciLwEGBwYHBisBIiY1JyYnBwYiJyYnJjQ3PgE3Ji8BLgEnNTQ2PwE2NyYnJjQ3PgEzMh8BNjc2NzY7ATIWHwEWFzc2MhcWFxYUBw4BBxYfAR4BAjtSeFICVnRWARwIB2gKCxMoBgUPUA0HB00ZGgkHBBB8CAwQGxdPBhAGRhYEBQgoCg8IZgcIAQoFaAgOFyUGBQ9QDQcITRgaCQgDEXwHDAEPHBdPBQ8HSBQEBAkoCg8IZgcKAWU7VFR2VFR4fAcMARAeFRsyBg4GFVABBTwNCEwcEAoHZwkMPAUGQB4FDgYMMg8cGw8BDAd8BwwBEBkaIC0HDAcUUAU8DQhMHBAKB2cJCzsFBUMcBQ4GDDIPHBoQAQwAAAACAAAAAANrAsoAJwBAAEJAPxQBAgEBRwAGAgUCBgVtAAUDAgUDawAEAwADBABtAAEAAgYBAmAAAwQAA1QAAwMAWAAAAwBMFiMZJSolJwcFGyslFBYPAQ4BByMiJjURNDY7ATIWFRcWDwEOAScjIgYHERQWFzMyHgIBFAcBBiImPQEjIiY9ATQ2NzM1NDYWFwEWAWUCAQIBCAiyQ15eQ7IICgEBAQIBCAiyJTQBNiS0BgIGAgIGC/7RCxwW+g4WFg76FhwLAS8LNQISBQ4JAgNeQwGIQ14KCAsJBg0HCAE0Jv54JTQBBAIIASwOC/7QChQPoRYO1g8UAaEOFgIJ/tAKAAAAAAEAAP/uA7YCMAAUABlAFg0BAAEBRwIBAQABbwAAAGYUFxIDBRcrCQEGIicBJjQ/ATYyFwkBNjIfARYUA6v+YgoeCv5iCwtdCh4KASgBKAscDFwLAZb+YwsLAZ0LHgpcCwv+2AEoCwtcCxwAAAH//v97A7gDZwAxAB9AHAABAAABVAABAQBYAgEAAQBMAQAqKQAxATEDBRQrFyInLgE3ATYXHgEXFgcBDgEnJjY3ATYWBwEGFxY3NjcBNiYnJgcBBh4CNwE2FgcBBvRmREgEVgHwUF4sRgwaUP4mKGAgHgYsAUwYNBr+tCwYDAwYFgHaMiA8Njb+EkIEZIZKAfAYNBr+EFKFSEbAXgHwUBoMRixgUP4mKAogGGQqAU4aNBj+tCwaCAIEFgHaMnYQDjL+EkyGYgRAAe4YLhr+EFIAAAAABP///7gELwMSAAgADwAfAC8AVUBSHRQCAQMPAQABDg0MCQQCABwVAgQCBEcAAgAEAAIEbQAGBwEDAQYDYAABAAACAQBgAAQFBQRUAAQEBVgABQQFTBEQLismIxkXEB8RHxMTEggFFysBFA4BJjQ2HgEBFSE1NxcBJSEiBgcRFBY3ITI2JxE0JhcRFAYHISImNxE0NjchMhYBZT5aPj5aPgI8/O6yWgEdAR78gwcKAQwGA30HDAEKUTQl/IMkNgE0JQN9JTQCGC0+AkJWQgQ6/vr6a7NZAR2hCgj9WgcMAQoIAqYIChL9WiU0ATYkAqYlNAE2AAv///9xBC8DEgAPAB8ALwA/AE8AXwBvAH8AjwCfAK8AxEAZkEACCQiIgGAgBAUEeDgCAwJQMAADAQAER0uwIVBYQDcAFRIMAggJFQhgEwEJEAEEBQkEYBENAgUOBgICAwUCYA8BAwoBAAEDAGALBwIBARRYABQUDRRJG0A+ABUSDAIICRUIYBMBCRABBAUJBGARDQIFDgYCAgMFAmAPAQMKAQABAwBgCwcCARQUAVQLBwIBARRYABQBFExZQCauq6ajnpuWlI6MhoR+fHZzbmtmZF5bVlROSzU1NSY1JjU1MxYFHSsXNTQmByMiBh0BFBY7ATI2JzU0JisBIgYdARQWNzMyNic1NCYnIyIGHQEUFhczMjYBETQmIyEiBhcRFBYzITI2ATU0JgcjIgYdARQWOwEyNgE1NCYHIyIGBxUUFjsBMjYDETQmByEiBhcRFBYXITI2FzU0JisBIgYHFRQWNzMyNjc1NCYnIyIGBxUUFhczMjY3NTQmByMiBgcVFBY7ATI2NxEUBiMhIiY3ETQ2NyEyFtYUD0gOFhYOSA4WARQPSA4WFg5IDhYBFA9IDhYWDkgOFgI7Fg7+Uw4WARQPAa0PFP3FFA9IDhYWDkgOFgMRFg5HDxQBFg5HDxTVFg7+Uw4WARQPAa0PFNcWDkcPFAEWDkcPFAEWDkcPFAEWDkcPFAEWDkcPFAEWDkcPFEg0JfyDJDYBNCUDfSU0JEgOFgEUD0gOFhbkSA4WFg5IDhYBFOZHDxQBFg5HDxQBFv5hAR4OFhYO/uIOFhYCkUcPFgEUEEcOFhb9i0gOFgEUD0gOFhYBuwEdDxYBFBD+4w8UARbJSA4WFg5IDhYBFOZHDxQBFg5HDxQBFuRHDxYBFBBHDhYWZ/0SJTQ0JQLuJTQBNgABAAD/xwJ0A0sAFAAXQBQJAQABAUcAAQABbwAAAGYcEgIFFisJAQYiLwEmNDcJASY0PwE2MhcBFhQCav5iCxwLXQsLASj+2AsLXQoeCgGeCgFw/mEKCl0LHAsBKQEoCxwLXQsL/mILHAAAAAABAAD/xwKYA0sAFAAXQBQBAQABAUcAAQABbwAAAGYXFwIFFisJAhYUDwEGIicBJjQ3ATYyHwEWFAKO/tcBKQoKXQscC/5iCwsBngoeCl0KArH+2P7XCh4KXQoKAZ8KHgoBngsLXQoeAAEAAAAAA7YCTQAUABlAFgUBAAIBRwACAAJvAQEAAGYXFBIDBRcrJQcGIicJAQYiLwEmNDcBNjIXARYUA6tcCx4K/tj+2AscC10LCwGeCxwLAZ4LclwKCgEp/tcKClwLHgoBngoK/mILHAAAAAQAAP91A8ADWQAqADQAPQBOALdAETY0AgQAHQ4CAQQCR0wBAQFGS7AaUFhAKQUBBAABAAQBbQMBAQYAAQZrAAYHAAYHawgBAAAMSAAHBwJYAAICDQJJG0uwJFBYQCYFAQQAAQAEAW0DAQEGAAEGawAGBwAGB2sABwACBwJcCAEAAAwASRtAJwgBAAQAbwUBBAEEbwMBAQYBbwAGBwZvAAcCAgdUAAcHAlgAAgcCTFlZQBcBAEpIREM6OTAvGxkWFRIQACoBKgkFFCsBIgYVFBcGBw4BFRQHBgcUFjsBFB4BMj4BNTMyNjUmJyY1NCYnJic2NTQmBQYHBhUzNDc2NyUHHgEHMzYnJgEyFhUUFjMyFhQGIyImNTQ2AfIWIAVHODM6OipNKh35JkFOQSb5HSpNKzo5NDdHBB/+tTseHUcWGDECOTAyLgFHAR0e/jcEBS8hBAUFBCg6BQNZHxYKDAsnJGk2tX1bQR0qJ0ImJkInKh1BW321NmkkJwsOCBYfLTZIRFFENjgtNDQtbkRQRUf9GAUEIS8FCAU6KAQFAAAAAgAAAAACgwMSAAcAHwAqQCcFAwIAAQIBAAJtAAICbgAEAQEEVAAEBAFYAAEEAUwjEyU2ExAGBRorEyE1NCYOARcFERQGByEiJicRNDYXMzU0NjIWBxUzMhazAR1UdlQBAdAgFv3pFx4BIBYRlMyWAhIXHgGsbDtUAlA9of6+Fh4BIBUBQhYgAWxmlJRmbB4AA//9/7gDWQMSAAwBvQH3AndLsAlQWEE8AL0AuwC4AJ8AlgCIAAYAAwAAAI8AAQACAAMA2gDTAG0AWQBRAEIAPgAzACAAGQAKAAcAAgGeAZgBlgGMAYsBegF1AWUBYwEDAOEA4AAMAAYABwFTAU0BKAADAAgABgH0AdsB0QHLAcABvgE4ATMACAABAAgABgBHG0uwClBYQUMAuwC4AJ8AiAAEAAUAAAC9AAEAAwAFAI8AAQACAAMA2gDTAG0AWQBRAEIAPgAzACAAGQAKAAcAAgGeAZgBlgGMAYsBegF1AWUBYwEDAOEA4AAMAAYABwFTAU0BKAADAAgABgH0AdsB0QHLAcABvgE4ATMACAABAAgABwBHAJYAAQAFAAEARhtBPAC9ALsAuACfAJYAiAAGAAMAAACPAAEAAgADANoA0wBtAFkAUQBCAD4AMwAgABkACgAHAAIBngGYAZYBjAGLAXoBdQFlAWMBAwDhAOAADAAGAAcBUwFNASgAAwAIAAYB9AHbAdEBywHAAb4BOAEzAAgAAQAIAAYAR1lZS7AJUFhANQACAwcDAgdtAAcGAwcGawAGCAMGCGsACAEDCAFrAAEBbgkBAAMDAFQJAQAAA1gFBAIDAANMG0uwClBYQDoEAQMFAgUDZQACBwUCB2sABwYFBwZrAAYIBQYIawAIAQUIAWsAAQFuCQEABQUAVAkBAAAFVgAFAAVKG0A1AAIDBwMCB20ABwYDBwZrAAYIAwYIawAIAQMIAWsAAQFuCQEAAwMAVAkBAAADWAUEAgMAA0xZWUEZAAEAAAHYAdYBuQG3AVcBVgDHAMUAtQC0ALEArgB5AHYABwAGAAAADAABAAwACgAFABQrATIeARQOASIuAj4BAQ4BBzI+ATU+ATc2FyY2PwE2PwEGJjUUBzQmBjUuBC8BJjQvAQcGFCoBFCIGIgc2JyYjNiYnMy4CJy4BBwYUHwEWBh4BBwYPAQYWFxYUBiIPAQYmJyYnJgcmJyYHMiYHPgEjNj8BNicWPwE2NzYyFjMWNCcyJyYnJgcGFyIPAQYvASYnIgc2JiM2JyYiDwEGHgEyFxYHIgYiBhYHLgEnFicjIgYiJyY3NBcnBgcyNj8BNhc3FyYHBgcWBycuASciBwYHHgIUNxYHMhcWFxYHJyYGFjMiDwEGHwEGFjcGHwMeAhcGFgciBjUeAhQWNzYnLgI1MzIfAQYeAjMeAQcyHgQfAxYyPwE2FhcWNyIfAR4BFR4BFzY1BhYzNjUGLwEmNCY2FzI2LgInBiYnFAYVIzY0PwE2LwEmByIHDgMmJy4BND8BNic2PwE2OwEyNDYmIxY2FxY3JyY3FjceAh8BFjY3FhceAT4BJjUnNS4BNjc0Nj8BNicyNycmIjc2Jz4BMxY2Jz4BNxY2Jj4BFTc2IxY3Nic2JiczMjU2JyYDNjcmIi8BNiYvASYvASYPASIPARUmJyIuAQ4BDwEmNiYGDwEGNgYVDgEVLgE3HgEXFgcGBwYXFAYWAa10xnJyxujIbgZ6vAETAggDAQIEAxEVEwoBDAIIBgMBBwYEBAoFBgQBCAECAQMDBAQEBAYBBgIICQUEBgIEAwEIDAEFHAQDAgIBCAEOAQIHCQMEBAEEAgMBBwoCBAUNAwMUDhMECAYBAgECBQkCARMJBgQCBQYKAwgEBwUCAwYJBAYBBQkEBQMDAgUEAQ4HCw8EEAMDAQgECAEIAwEIBAMCAgMEAgQSBQMMDAEDAwIMGRsDBgUFEwUDCwQNCwEEAgYECAQJBFEyBAUCBgUDARgKAQIHBQQDBAQEAQIBAQECCgcHEgQHCQQDCAQCDgEBAgIOAgQCAg8IAwQDAgMFAQQKCgEECAQFDAcCAwgDCQcWBgYFCAgQBBQKAQIEAgYDDgMEAQoFCBEKAgICAgEFAgQBCgIDDAMCCAECCAMBAwIHCwQBAgIIFAMICgECAQQCAwUCAQMCAQMBBBgDCQMBAQEDDQIOBAIDAQQDBQIGCAQCAgEIBAQHCAUHDAQEAgICBgEFBAMCAwUMBAISAQQCAgUOCQICCggFCQIGBgcFCQwKaXNQAQwBDQEEAxUBAwUCAwICAQUMCAMGBgYGAQEECAQKAQcGAgoCBAEMAQECAgQLDwECCQoBAxJ0xOrEdHTE6sR0/t0BCAIGBgEECAMFCwEMAQMCAgwBCgcCAwQCBAECBgwFBgMDAgQBAQMDBAIEAQMDAgIIBAIGBAEDBAEEBAYHAwgHCgcEBQYFDAMBAgQCAQMMCQ4DBAUHCAUDEQIDDggFDAMBAwkJBgQDBgEOBAoEAQIFAgIGCgQHBwcBCQUIBwgDAgcDAgQCBgIEBQoDAw4CBQICBQQHAgEKCA8CAwMHAwIOAwIDBAYEBgQEAQEtTwQBCAQDBAYPCgIGBAUEBQ4JFAsCAQYaAgEXBQQGAwUUAwMQBQIBBAgFCAQBCxgNBQwCAgQEDAgOBA4BCgsUBwgBBQMNAgECARIDCgQECQUGAgMKAwIDBQwCEAgSAwMEBAYCBAoHDgEFAgQBBAICEAUPBQIFAwILAggEBAICBBgOCQ4FCQEEBgECAwIBBAMGBwYFAg8KAQQBAgMBAgMIBRcEAggIAwUOAgoKBQECAwQLCQUCAgICBgIKBgoEBAQDAQQKBAYBBwIBBwYFBAIDAQUEAv4NFVUCAgUEBgIPAQECAQIBAQMCCgMGAgIFBgcDDgYCAQUEAggBAggCAgICBRwIEQkOCQwCBBAHAAIAAP+lA48DJAAMABcAIkAfFAEBAhEFAgABAkcAAgECbwABAAFvAAAAZhsWIgMFFyslFAYnIic+ASc0NjIWARYUBwEuAScBNjIB0K57UUREUgFYelgBniAh/sIUUjgBPiBe0XywASgnilI9WFgB9SBeIP7CN1QUAT4gAAAD//X/uAPzA1kADwAhADMAZEAMGxECAwIJAQIBAAJHS7AkUFhAHQACBQMFAgNtAAMAAAEDAGAAAQAEAQRcAAUFDAVJG0AiAAUCBW8AAgMCbwADAAABAwBgAAEEBAFUAAEBBFgABAEETFlACRc4JycmIwYFGislNTQmKwEiBh0BFBYXMzI2JxM0JyYrASIHBhUXFBY3MzI2AwEWBw4BByEiJicmNwE+ATIWAjsKB2wHCgoHbAcKAQoFBwd6BggFCQwHZwgMCAGsFBUJIhL8phIiCRUUAa0JIiYiWmoICgoIaggKAQzXAQEGBAYGBAj/BQgBBgIQ/O4jIxESARQQIyMDEhEUFAAAAAABAAAAAAMSAxIAIwApQCYABAMEbwABAAFwBQEDAAADVAUBAwMAWAIBAAMATCMzJSMzIwYFGisBFRQGJyMVFAYHIyImNzUjIiYnNTQ2NzM1NDY7ATIWFxUzMhYDEiAW6CAWaxYgAegXHgEgFugeF2sXHgHoFx4BvmsWIAHpFh4BIBXpHhdrFx4B6BYgIBboIAAC//3/uANfAxIABwAUACtAKAADAAABAwBgBAEBAgIBVAQBAQECWAACAQJMAAASEQwLAAcABxEFBRUrJREiDgIeAQEUDgEiLgI+ATIeAQGtU4xQAlSIAgFyxujIbgZ6vPS6fjUCYFKMpIxSATB1xHR0xOrEdHTEAAAFAAAAAAPkAxIABgAPADkAPgBIAQdAFUA+OxADAgEHAAQ0AQEAAkdBAQQBRkuwClBYQDAABwMEAwcEbQAABAEBAGUAAwAEAAMEYAgBAQAGBQEGXwAFAgIFVAAFBQJYAAIFAkwbS7ALUFhAKQAABAEBAGUHAQMABAADBGAIAQEABgUBBl8ABQICBVQABQUCWAACBQJMG0uwGFBYQDAABwMEAwcEbQAABAEBAGUAAwAEAAMEYAgBAQAGBQEGXwAFAgIFVAAFBQJYAAIFAkwbQDEABwMEAwcEbQAABAEEAAFtAAMABAADBGAIAQEABgUBBl8ABQICBVQABQUCWAACBQJMWVlZQBYAAERDPTwxLikmHhsWEwAGAAYUCQUVKyU3JwcVMxUBJg8BBhY/ATYTFRQGIyEiJjURNDY3ITIXHgEPAQYnJiMhIgYHERQWFyEyNj0BND8BNhYDFwEjNQEHJzc2Mh8BFhQB8EBVQDUBFQkJxAkSCcQJJF5D/jBDXl5DAdAjHgkDBxsICg0M/jAlNAE2JAHQJTQFJAgYN6H+iaECbzOhMxAsEFUQxEFVQR82AZIJCcQJEgnECf6+akNeXkMB0EJeAQ4EEwYcCAQDNCX+MCU0ATYkRgcFJAgIAY+g/omgAS40oTQPD1UQLAAEAAD/uANNAwYABgAUABkAJACGQBceAQIFHRYOBwQDAhkDAgMAAwEBAQAER0uwElBYQCcABQIFbwACAwJvAAMAA28AAAEBAGMGAQEEBAFSBgEBAQRXAAQBBEsbQCYABQIFbwACAwJvAAMAA28AAAEAbwYBAQQEAVIGAQEBBFcABAEES1lAEgAAISAYFxAPCQgABgAGFAcFFSszNycHFTMVATQjIgcBBhUUMzI3ATYnFwEjNQEUDwEnNzYyHwEWyzKDM0gBXwwFBP7RBA0FBAEvAx7o/jDoA00UXehdFDsWgxQzgzM8RwIGDAT+0gQGDAQBLgRx6P4v6QGaHRVd6VwVFYMWAAIAAP9xAoMDEgALAC4AY7YHAQIBAAFHS7AhUFhAGwAHCAYCAAEHAGAJBQIBBAECAwECYAADAw0DSRtAJAADAgNwAAcIBgIAAQcAYAkFAgECAgFUCQUCAQECWAQBAgECTFlADi0sEzMRFCIzFRUTCgUdKwE1NCYiBh0BFBYyNgUUBicjAw4BByMiJwMjIiYnNDYzESIuATY3ITIWFAYnETIWAQwKEAoKEAoBdxYO7x0BCgYBDwIr4Q8UAVg3HSoCLhsBZR0qKh03WAF3+ggKCgj6CAoKvQ4WAf7yBwgBDwEPFA9FbgEeKjoqASw4LAH+4m4AAAADAAD/fQOgAxIACAAUAC4AM0AwJgEEAygnEgMCBAABAQADRwADBANvAAQCBG8AAgACbwAAAQBvAAEBZhwjLRgSBQUZKzc0Jg4CHgE2JQEGIi8BJjQ3AR4BJRQHDgEnIiY0NjcyFhcWFA8BFRc2PwE2MhbWFB4UAhgaGAFm/oMVOhY7FRUBfBZUAZkNG4JPaJKSaCBGGQkJo2wCKkshDwokDhYCEiASBBr2/oMUFD0UOxYBfDdU3RYlS14BktCQAhQQBhIHXn08AhktFAoAAAAABQAA/7gEdwMSAAMABwANABEAFQBmQGMABQoFbw8BCgMKbwwBAwgDbw4BCAEIbwsBAQABbwkHAgMABgBvDQEGBAQGUg0BBgYEVgAEBgRKEhIODggIBAQAABIVEhUUEw4RDhEQDwgNCA0MCwoJBAcEBwYFAAMAAxEQBRUrAREjEQERIxEBFSERMxEBESMRJREjEQFljwFljgLK+4lHAsuPAWWPAWX+4gEeAR79xAI8/X1IA1r87gH0/lMBrdb9fQKDAAAAAAL//f9xA+sDWQAnAFAAsEAOJBYGAwECTEI0AwQDAkdLsCFQWEAmAAECAwIBA20HAQMEAgMEawACAgBYBgEAAAxIAAQEBVgABQUNBUkbS7AkUFhAIwABAgMCAQNtBwEDBAIDBGsABAAFBAVcAAICAFgGAQAADAJJG0ApAAECAwIBA20HAQMEAgMEawYBAAACAQACYAAEBQUEVAAEBAVYAAUEBUxZWUAXKSgBAEdFMS8oUClQFBIMCgAnAScIBRQrASIHBgcGBxQWHwEzMjU2NzY3NjMyFhcHBhYfARY+AS8BLgEPASYnJgEiFQYHBgcGIyInJic3NiYvASYOAR8BHgE/ARYXFjMyNzY3Njc0Ji8BAe6DcW1DRQUFBARUEwU1M1NXY0+ONDoJAgz3CxQKBDoCEglBRFpcATMTBTUzU1ZjUEhFNTsIAgv4CxQKBDoCEgpARFpdZoJxbkJFBQUEBANZQD5rboEICQIBEmJTUS8xPjg5CRMDMgMJFhDjCAsGPEYmKP4EEmJTUS8xIB44OQkTAzIDCRYQ4wgLBjxGJihAPmtugggIAgEAAAAAAv///2ID6gNZAB8AQQBJQAoEAQIAAUcxAQFES7AkUFhAEwACAAEAAgFtAAEBbgMBAAAMAEkbQA8DAQACAG8AAgECbwABAWZZQA0BACEgFBMAHwEfBAUUKwEiBwYHMTY3NhcWFxYXFgYHBhceATc+ATc2JicuAScmASIHBgcGBwYWFxYXFhcWNzY3MQYHBicmJyYnJjY3NiYnJgHyV1FURFZsamdqT0IhIQYlDhoQMxEDCgIjASUmkF5b/gUYDwQEBgEkAiQmSFt7d3l9YVZsamdrT0IhIAUlCAYOEgNZHR45RRUUHiBPQlZTs1EpGxABEQMPBlrDWV2QJiX+7hAEBggGWsNZXUhbJCIYGVFFFRQeIE9CVlOzURUhDhIAAAAAAgAAAAAD6ANZACcAPwB9QBMoAQEGEQECATcuAgQCIQEFBARHS7AkUFhAJAAEAgUCBAVtAAUDAgUDawABAAIEAQJgAAMAAAMAXAAGBgwGSRtALAAGAQZvAAQCBQIEBW0ABQMCBQNrAAEAAgQBAmAAAwAAA1QAAwMAWAAAAwBMWUAKOhslNTYlMwcFGysBFRQGIyEiJjURNDY3ITIWHQEUBiMhIgYHERQWFyEyNj0BNDY7ATIWExEUDgEvAQEGIi8BJjQ3AScmNDYzITIWAxJeQ/4wQ15eQwGJBwoKB/53JTQBNiQB0CU0CggkCArWFhwLYv6UBRAEQAYGAWxiCxYOAR0PFAFTskNeXkMB0EJeAQoIJAgKNCX+MCU0ATYksggKCgHa/uMPFAIMYv6UBgZABQ4GAWxiCxwWFgAAAAIAAP+4A1kDEgAYACgAMkAvEgkCAgABRwACAAEAAgFtAAQAAAIEAGAAAQMDAVQAAQEDWAADAQNMNTcUGTMFBRkrARE0JichIgYfAQEGFB8BFjI3ARcWMzI3NhMRFAYHISImNRE0NjchMhYCyhQP/vQYExJQ/tYLCzkLHAsBKlEKDwYIFY9eQ/3pQ15eQwIXQ14BUwEMDxQBLRBQ/tYLHgo5CgoBKlALAwoBNf3oQl4BYEECGEJeAWAAAAAAAwAAAAADWgLLAA8AHwAvADdANCgBBAUIAAIAAQJHAAUABAMFBGAAAwACAQMCYAABAAABVAABAQBYAAABAEwmNSY1JjMGBRorJRUUBgchIiYnNTQ2NyEyFgMVFAYnISImJzU0NhchMhYDFRQGIyEiJic1NDYXITIWA1kUEPzvDxQBFg4DEQ8WARQQ/O8PFAEWDgMRDxYBFBD87w8UARYOAxEPFmtHDxQBFg5HDxQBFgEQSA4WARQPSA4WARQBDkcOFhYORw8WARQAAAAAAv///7gD6QLKABkAOAAtQCoJAAICAwFHAAMCA28AAgECbwABAAABVAABAQBYAAABAEw3NCYkOjMEBRYrAREUBgchIiY3ERYXFhceAjczMj4BNzY3NjcUBgcGDwEOAicjIiYvAS4BLwEmJy4BJzQ2MyEyFgPoNCX8yiQ2ARkfykwgJkQbAhxCKB9ftyAYNinSNDUMIh4NAgweER4NIgaTYBIjPAEuKwM2JDYBzf5FJTQBNiQBuxsWiTcYGhwBGhwXRHwWvyxQHZIjJwkSDAEKChIIHANlQg4XUiQrOjQAAAACAAD/cQPoAsoAFwA9AGJADDQIAgEAJgsCAwICR0uwIVBYQBcABAUBAAEEAGAAAQACAwECYAADAw0DSRtAHgADAgNwAAQFAQABBABgAAECAgFUAAEBAlgAAgECTFlAEQEAOzokIh0bEhAAFwEXBgUUKwEiDgEHFBYfAQcGBzY/ARcWMzI+Ai4BARQOASMiJwYHBgcjIiYnNSY2Jj8BNj8BPgI/AS4BJzQ+ASAeAQH0csZ0AVBJMA8NGlVFGCAmInLGdAJ4wgGAhuaIJypukxskAwgOAgIEAgMMBA0UBxQQBw9YZAGG5gEQ5oYCg06ETD5yKRw1My4kPBUDBU6EmIRO/uJhpGAEYSYIBAwJAQIIBAMPBQ4WCBwcEyoyklRhpGBgpAAAAgAA/3EDxANaAAwANACeQAsaDQIBBgABAgACR0uwIVBYQCcAAQYDBgEDbQUBAwAGAwBrAAACBgACawAGBgxIAAICBFgABAQNBEkbS7AkUFhAJAABBgMGAQNtBQEDAAYDAGsAAAIGAAJrAAIABAIEXAAGBgwGSRtAJQAGAQZvAAEDAW8FAQMAA28AAAIAbwACBAQCVAACAgRYAAQCBExZWUAKHyISIyMTEgcFGysFNCMiJjc0IhUUFjcyJRQGKwEUBiImNSMiJjU+BDc0NjcmNTQ+ARYVFAceARcUHgMB/QkhMAESOigJAccqHfpUdlT6HSocLjAkEgKEaQUgLCAFaoIBFiIwMFkIMCEJCSk6AakdKjtUVDsqHRgyVF6ITVSSEAoLFx4CIhULChCSVE6GYFI0AAACAAD/uANZAxIAIwAzAEFAPg0BAAEfAQQDAkcCAQABAwEAA20FAQMEAQMEawAHAAEABwFgAAQGBgRUAAQEBlgABgQGTDU1IzMWIyQjCAUcKwE1NCYHIzU0JicjIgYHFSMiBgcVFBY3MxUUFjsBMjY3NTMyNhMRFAYHISImNRE0NjchMhYCyhQPsxYORw8UAbIPFAEWDrIWDkcPFAGzDhaOXkP96UNeXkMCF0NeAUFIDhYBsw8UARYOsxQPSA4WAbMOFhYOsxQBP/3oQl4BYEECGEJeAWAAAAABAAD/uAPoAzUAKwApQCYmAQQDAUcAAwQDbwAEAQRvAAECAW8AAgACbwAAAGYjFxM9FwUFGSslFAcOAgcGIiY1NDY3NjU0LgUrARUUBiInASY0NwE2MhYHFTMgFxYD6EcBCgQFBxEKAgEDFCI4PlZWN30UIAn+4wsLAR0LHBgCfQGOWh7oXZ8EEhAECgwIBRQDJh84WkAwHhIGjw4WCwEeCh4KAR4KFA+P4UsABf/9/7gDXwMSABMAHAAlADYAQwBCQD8dFAICAwFHAAkABgMJBmAFAQMEAQIBAwJgAAEAAAcBAGAABwgIB1QABwcIWAAIBwhMQUAXFxYTFBMZGRIKBR0rAQ4BLgEnJj4BFhceATI2Nz4BHgElFAYiJj4CFgUUBiIuAT4BFhc0LgIiDgIeAz4DNxQOASIuAj4BMh4BAnkVcI5yFAQOHBoEDkxeSg8EHBoQ/uYqOiwCKD4mASAqPCgCLDgujTpeho6IXDwCOGCEkoJiNklyxujIbgZ6vPS6fgEBQ1QCUEUOGgkMECw4OCwPDgoa5R4qKjwoAiwcHioqPCgCLKtJhGA4OGCEkoRePAQ0ZnxNdcR0dMTqxHR0xAAAAAEAAAAAAoMDWgAjAGZLsCRQWEAgAAQFAAUEAG0CBgIAAQUAAWsAAQFuAAUFA1gAAwMMBUkbQCUABAUABQQAbQIGAgABBQABawABAW4AAwUFA1QAAwMFWAAFAwVMWUATAQAgHxsYFBMQDgkGACMBIwcFFCsBMhYXERQGByEiJicRNDYXMzU0Nh4BBxQGKwEiJjU0JiIGFxUCTRceASAW/ekXHgEgFhGUzJYCFA8kDhZUdlQBAaweF/6+Fh4BIBUBQhYgAbNnlAKQaQ4WFg47VFQ7swAAAwAAAAADEgH0AA8AHwAvACJAHwUDAgEAAAFUBQMCAQEAWAQCAgABAEw1NTU1NTMGBRorExUUBicjIiYnNTQ2NzMyFgUVFAYnIyImNzU0NjczMhYFFRQGJyMiJj0BNDY3MzIW1h4XaxceASAWaxYgAR0gFmsWIAEeF2sXHgEfIBZrFiAgFmsXHgG+axYgAR4XaxceASAWaxYgAR4XaxceASAWaxYgAR4XaxceASAAAAAC//3/uANZAxIADAAaACZAIwMBAAIAbwACAQECVAACAgFYAAECAUwBABkYBwYADAEMBAUUKwEyHgEUDgEiLgI+AQE2NCclJgYVERQXFjI3Aa10xnJyxujIbgZ6vAFQEhL+0BEkEgkSCAMSdMTqxHR0xOrEdP40CioKsgsVFP6aFAsEBQADAAD/uAN9AxIACAAYAFUATkBLSgEIBx8bAgADAAEBADERAgIBBEcABwgHbwAIAwhvBgEDAANvAAABAG8ABAIEcAABAgIBVAABAQJYBQECAQJMLywVJD8mNRMSCQUdKzc0LgEOAR4BNhMRFAYHIyImJxE0NhczMhYFFAcWFRYHFgcGBxYHBgcjIi4BJyYnIiYnETQ+Ajc2Nz4CNz4DMzIeBAYXFA4BBw4CBzMyFo8WHRQBFh0UWhQQoA8UARYOoA8WApQfCQEZCQkJFgUgJEpIJVYyKkUTDxQBFBs6HCYSCg4GBQQGEBUPGSoYFAgGAgIMCAwBCAQDmytAaw8UARYdFAEWASz+mw8UARYOAWUOFgEUDzAjGRIqIh8jHxU+JysBEg4PGAEWDgFlDhYBQCMxEgoiFBgWGCIWDBIaGCASDRUsFhQEDA4GQAAAAAUAAP9xA+gDWQAQABQAJQAvADkA20AXMykCBwghAQUCHRUNDAQABQNHBAEFAUZLsCFQWEAtBgwDCwQBBwIHAQJtAAIFBwIFawAFAAcFAGsJAQcHCFgKAQgIDEgEAQAADQBJG0uwJFBYQCwGDAMLBAEHAgcBAm0AAgUHAgVrAAUABwUAawQBAABuCQEHBwhYCgEICAwHSRtAMgYMAwsEAQcCBwECbQACBQcCBWsABQAHBQBrBAEAAG4KAQgHBwhUCgEICAdWCQEHCAdKWVlAIBERAAA3NTIxLSsoJyQiHx4bGREUERQTEgAQAA83DQUVKwERFAYHERQGByEiJicREzYzIREjEQERFAYHISImJxEiJicRMzIXJRUjNTQ2OwEyFgUVIzU0NjsBMhYBiRYOFBD+4w8UAYsEDQGfjgI7Fg7+4w8UAQ8UAe0NBP4+xQoIoQgKAXfFCgihCAoCpv5UDxQB/r8PFAEWDgEdAegM/ngBiP4M/uMPFAEWDgFBFg4BrAytfX0ICgoIfX0ICgoAAAADAAD/uAR4AxMACAAsAE8Ad0B0LCUCCgcgHw4DAwIyEwIECANHAAEHAW8ABwoHbw4BAAoNCgANbQALDQINCwJtDAEKAA0LCg1gBgECBQEDCAIDYAAIBAQIVAAICARYCQEECARMAQBNS0pIRURBPzYzMS8pKCQiHBsXFRIQCgkFBAAIAQgPBRQrASImPgEeAgYFMzIWBxUUBisBFRQGByMiJj0BIyImJzU0NjczNTQ2FzMyFhcBFBY3MxUGIyEiJjU0PgUXMhceATI2NzYzMhcjIgYVAYlZfgJ6tngGhAHDxAcMAQoIxAwGawgKxQcKAQwGxQoIawcKAf5lKh2PJjn+GENSBAwSHiY6IQsLLFRkVCwLC0kwfR0qAWV+sIACfLR6SQwGawgKxQcKAQwGxQoIawcKAcQHDAEKCP6/HSwBhRxOQx44QjY4IhoCCiIiIiIKNiodAAAAAAEAAAABAABZIo1OXw889QALA+gAAAAA2WM3HwAAAADZYzcf//X/YgR4A2cAAAAIAAIAAAAAAAAAAQAAA1n/cQAABHb/9f/zBHgAAQAAAAAAAAAAAAAAAAAAAC4D6AAAAxEAAAOgAAADoAAAA6AAAAQvAAAD6AAAA6D//wNZAAADoAAAA+gAAAOr//4EL///BC///wLKAAACygAAA+gAAAPoAAACggAAA1n//QOgAAAD6P/1AxEAAANZ//0D6AAAA1kAAAKCAAADoAAABHYAAAPo//0D6f//A+gAAANZAAADWQAAA+j//wPoAAAD6AAAA1kAAAPoAAADWf/9AoIAAAMRAAADWf/9A6AAAAPoAAAEdgAAAAAAAABKAM4BEgFsAfICpAMGA8gESgSABOoFZAa2BuwHIAdWCCYIbgxyDLANNA18DbgOrg8wD6oQEhB0EUoR2hJ4EtYTPBOsFD4U2BVEFZoWJhaQFugXKhfQGJgZQwAAAAEAAAAuAfgACwAAAAAAAgAsADwAcwAAAKoLcAAAAAAAAAASAN4AAQAAAAAAAAA1AAAAAQAAAAAAAQAIADUAAQAAAAAAAgAHAD0AAQAAAAAAAwAIAEQAAQAAAAAABAAIAEwAAQAAAAAABQALAFQAAQAAAAAABgAIAF8AAQAAAAAACgArAGcAAQAAAAAACwATAJIAAwABBAkAAABqAKUAAwABBAkAAQAQAQ8AAwABBAkAAgAOAR8AAwABBAkAAwAQAS0AAwABBAkABAAQAT0AAwABBAkABQAWAU0AAwABBAkABgAQAWMAAwABBAkACgBWAXMAAwABBAkACwAmAclDb3B5cmlnaHQgKEMpIDIwMTkgYnkgb3JpZ2luYWwgYXV0aG9ycyBAIGZvbnRlbGxvLmNvbWZvbnRlbGxvUmVndWxhcmZvbnRlbGxvZm9udGVsbG9WZXJzaW9uIDEuMGZvbnRlbGxvR2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAxADkAIABiAHkAIABvAHIAaQBnAGkAbgBhAGwAIABhAHUAdABoAG8AcgBzACAAQAAgAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAGYAbwBuAHQAZQBsAGwAbwBSAGUAZwB1AGwAYQByAGYAbwBuAHQAZQBsAGwAbwBmAG8AbgB0AGUAbABsAG8AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAZQBsAGwAbwBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8ABmNhbmNlbAZ1cGxvYWQEc3RhcgpzdGFyLWVtcHR5B3JldHdlZXQHZXllLW9mZgZzZWFyY2gDY29nBmxvZ291dAlkb3duLW9wZW4GYXR0YWNoB3BpY3R1cmUFdmlkZW8KcmlnaHQtb3BlbglsZWZ0LW9wZW4HdXAtb3Blbg5iZWxsLXJpbmdpbmctbwRsb2NrBWdsb2JlBWJydXNoCWF0dGVudGlvbgRwbHVzBmFkanVzdARlZGl0BnBlbmNpbANwaW4Gd3JlbmNoCWNoYXJ0LWJhcgVzcGluMwVzcGluNAhsaW5rLWV4dAxsaW5rLWV4dC1hbHQEbWVudQhtYWlsLWFsdA1jb21tZW50LWVtcHR5CGJlbGwtYWx0DHBsdXMtc3F1YXJlZAVyZXBseQVzbWlsZQ1sb2NrLW9wZW4tYWx0CGVsbGlwc2lzDHBsYXktY2lyY2xlZA10aHVtYnMtdXAtYWx0CmJpbm9jdWxhcnMJdXNlci1wbHVzAAAAAAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAABgAGAAYABgDZ/9iA2f/YrAALCCwAFVYRVkgIEu4AA5RS7AGU1pYsDQbsChZYGYgilVYsAIlYbkIAAgAY2MjYhshIbAAWbAAQyNEsgABAENgQi2wASywIGBmLbACLCBkILDAULAEJlqyKAEKQ0VjRVJbWCEjIRuKWCCwUFBYIbBAWRsgsDhQWCGwOFlZILEBCkNFY0VhZLAoUFghsQEKQ0VjRSCwMFBYIbAwWRsgsMBQWCBmIIqKYSCwClBYYBsgsCBQWCGwCmAbILA2UFghsDZgG2BZWVkbsAErWVkjsABQWGVZWS2wAywgRSCwBCVhZCCwBUNQWLAFI0KwBiNCGyEhWbABYC2wBCwjISMhIGSxBWJCILAGI0KxAQpDRWOxAQpDsAFgRWOwAyohILAGQyCKIIqwASuxMAUlsAQmUVhgUBthUllYI1khILBAU1iwASsbIbBAWSOwAFBYZVktsAUssAdDK7IAAgBDYEItsAYssAcjQiMgsAAjQmGwAmJmsAFjsAFgsAUqLbAHLCAgRSCwC0NjuAQAYiCwAFBYsEBgWWawAWNgRLABYC2wCCyyBwsAQ0VCKiGyAAEAQ2BCLbAJLLAAQyNEsgABAENgQi2wCiwgIEUgsAErI7AAQ7AEJWAgRYojYSBkILAgUFghsAAbsDBQWLAgG7BAWVkjsABQWGVZsAMlI2FERLABYC2wCywgIEUgsAErI7AAQ7AEJWAgRYojYSBksCRQWLAAG7BAWSOwAFBYZVmwAyUjYUREsAFgLbAMLCCwACNCsgsKA0VYIRsjIVkqIS2wDSyxAgJFsGRhRC2wDiywAWAgILAMQ0qwAFBYILAMI0JZsA1DSrAAUlggsA0jQlktsA8sILAQYmawAWMguAQAY4ojYbAOQ2AgimAgsA4jQiMtsBAsS1RYsQRkRFkksA1lI3gtsBEsS1FYS1NYsQRkRFkbIVkksBNlI3gtsBIssQAPQ1VYsQ8PQ7ABYUKwDytZsABDsAIlQrEMAiVCsQ0CJUKwARYjILADJVBYsQEAQ2CwBCVCioogiiNhsA4qISOwAWEgiiNhsA4qIRuxAQBDYLACJUKwAiVhsA4qIVmwDENHsA1DR2CwAmIgsABQWLBAYFlmsAFjILALQ2O4BABiILAAUFiwQGBZZrABY2CxAAATI0SwAUOwAD6yAQEBQ2BCLbATLACxAAJFVFiwDyNCIEWwCyNCsAojsAFgQiBgsAFhtRAQAQAOAEJCimCxEgYrsHIrGyJZLbAULLEAEystsBUssQETKy2wFiyxAhMrLbAXLLEDEystsBgssQQTKy2wGSyxBRMrLbAaLLEGEystsBsssQcTKy2wHCyxCBMrLbAdLLEJEystsB4sALANK7EAAkVUWLAPI0IgRbALI0KwCiOwAWBCIGCwAWG1EBABAA4AQkKKYLESBiuwcisbIlktsB8ssQAeKy2wICyxAR4rLbAhLLECHistsCIssQMeKy2wIyyxBB4rLbAkLLEFHistsCUssQYeKy2wJiyxBx4rLbAnLLEIHistsCgssQkeKy2wKSwgPLABYC2wKiwgYLAQYCBDI7ABYEOwAiVhsAFgsCkqIS2wKyywKiuwKiotsCwsICBHICCwC0NjuAQAYiCwAFBYsEBgWWawAWNgI2E4IyCKVVggRyAgsAtDY7gEAGIgsABQWLBAYFlmsAFjYCNhOBshWS2wLSwAsQACRVRYsAEWsCwqsAEVMBsiWS2wLiwAsA0rsQACRVRYsAEWsCwqsAEVMBsiWS2wLywgNbABYC2wMCwAsAFFY7gEAGIgsABQWLBAYFlmsAFjsAErsAtDY7gEAGIgsABQWLBAYFlmsAFjsAErsAAWtAAAAAAARD4jOLEvARUqLbAxLCA8IEcgsAtDY7gEAGIgsABQWLBAYFlmsAFjYLAAQ2E4LbAyLC4XPC2wMywgPCBHILALQ2O4BABiILAAUFiwQGBZZrABY2CwAENhsAFDYzgtsDQssQIAFiUgLiBHsAAjQrACJUmKikcjRyNhIFhiGyFZsAEjQrIzAQEVFCotsDUssAAWsAQlsAQlRyNHI2GwCUMrZYouIyAgPIo4LbA2LLAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjILAIQyCKI0cjRyNhI0ZgsARDsAJiILAAUFiwQGBZZrABY2AgsAErIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbACYiCwAFBYsEBgWWawAWNhIyAgsAQmI0ZhOBsjsAhDRrACJbAIQ0cjRyNhYCCwBEOwAmIgsABQWLBAYFlmsAFjYCMgsAErI7AEQ2CwASuwBSVhsAUlsAJiILAAUFiwQGBZZrABY7AEJmEgsAQlYGQjsAMlYGRQWCEbIyFZIyAgsAQmI0ZhOFktsDcssAAWICAgsAUmIC5HI0cjYSM8OC2wOCywABYgsAgjQiAgIEYjR7ABKyNhOC2wOSywABawAyWwAiVHI0cjYbAAVFguIDwjIRuwAiWwAiVHI0cjYSCwBSWwBCVHI0cjYbAGJbAFJUmwAiVhuQgACABjYyMgWGIbIVljuAQAYiCwAFBYsEBgWWawAWNgIy4jICA8ijgjIVktsDossAAWILAIQyAuRyNHI2EgYLAgYGawAmIgsABQWLBAYFlmsAFjIyAgPIo4LbA7LCMgLkawAiVGUlggPFkusSsBFCstsDwsIyAuRrACJUZQWCA8WS6xKwEUKy2wPSwjIC5GsAIlRlJYIDxZIyAuRrACJUZQWCA8WS6xKwEUKy2wPiywNSsjIC5GsAIlRlJYIDxZLrErARQrLbA/LLA2K4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrErARQrsARDLrArKy2wQCywABawBCWwBCYgLkcjRyNhsAlDKyMgPCAuIzixKwEUKy2wQSyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKyAAEAKrEABUKzCgIBCCqxAAVCsw4AAQgqsQAGQroCwAABAAkqsQAHQroAQAABAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbMMAgEMKrgB/4WwBI2xAgBEAAA=') format('truetype');
 }
 /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
 /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
@@ -17,7 +17,7 @@
 @media screen and (-webkit-min-device-pixel-ratio:0) {
   @font-face {
     font-family: 'fontello';
-    src: url('../font/fontello.svg?36125818#fontello') format('svg');
+    src: url('../font/fontello.svg?88512238#fontello') format('svg');
   }
 }
 */
@@ -90,6 +90,7 @@
 .icon-bell-alt:before { content: '\f0f3'; } /* '' */
 .icon-plus-squared:before { content: '\f0fe'; } /* '' */
 .icon-reply:before { content: '\f112'; } /* '' */
+.icon-smile:before { content: '\f118'; } /* '' */
 .icon-lock-open-alt:before { content: '\f13e'; } /* '' */
 .icon-ellipsis:before { content: '\f141'; } /* '' */
 .icon-play-circled:before { content: '\f144'; } /* '' */
diff --git a/static/font/css/fontello-ie7-codes.css b/static/font/css/fontello-ie7-codes.css
old mode 100755
new mode 100644
index 5df45a1d..bfaead9f
--- a/static/font/css/fontello-ie7-codes.css
+++ b/static/font/css/fontello-ie7-codes.css
@@ -37,6 +37,7 @@
 .icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;&nbsp;'); }
 .icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;&nbsp;'); }
 .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;&nbsp;'); }
+.icon-smile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;&nbsp;'); }
 .icon-lock-open-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;&nbsp;'); }
 .icon-ellipsis { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;&nbsp;'); }
 .icon-play-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf144;&nbsp;'); }
diff --git a/static/font/css/fontello-ie7.css b/static/font/css/fontello-ie7.css
old mode 100755
new mode 100644
index f700ae78..e0e0af3b
--- a/static/font/css/fontello-ie7.css
+++ b/static/font/css/fontello-ie7.css
@@ -48,6 +48,7 @@
 .icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;&nbsp;'); }
 .icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;&nbsp;'); }
 .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;&nbsp;'); }
+.icon-smile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;&nbsp;'); }
 .icon-lock-open-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;&nbsp;'); }
 .icon-ellipsis { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;&nbsp;'); }
 .icon-play-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf144;&nbsp;'); }
diff --git a/static/font/css/fontello.css b/static/font/css/fontello.css
old mode 100755
new mode 100644
index 6c14be64..653ada3c
--- a/static/font/css/fontello.css
+++ b/static/font/css/fontello.css
@@ -1,11 +1,11 @@
 @font-face {
   font-family: 'fontello';
-  src: url('../font/fontello.eot?91349539');
-  src: url('../font/fontello.eot?91349539#iefix') format('embedded-opentype'),
-       url('../font/fontello.woff2?91349539') format('woff2'),
-       url('../font/fontello.woff?91349539') format('woff'),
-       url('../font/fontello.ttf?91349539') format('truetype'),
-       url('../font/fontello.svg?91349539#fontello') format('svg');
+  src: url('../font/fontello.eot?94788965');
+  src: url('../font/fontello.eot?94788965#iefix') format('embedded-opentype'),
+       url('../font/fontello.woff2?94788965') format('woff2'),
+       url('../font/fontello.woff?94788965') format('woff'),
+       url('../font/fontello.ttf?94788965') format('truetype'),
+       url('../font/fontello.svg?94788965#fontello') format('svg');
   font-weight: normal;
   font-style: normal;
 }
@@ -15,7 +15,7 @@
 @media screen and (-webkit-min-device-pixel-ratio:0) {
   @font-face {
     font-family: 'fontello';
-    src: url('../font/fontello.svg?91349539#fontello') format('svg');
+    src: url('../font/fontello.svg?94788965#fontello') format('svg');
   }
 }
 */
@@ -93,6 +93,7 @@
 .icon-bell-alt:before { content: '\f0f3'; } /* '' */
 .icon-plus-squared:before { content: '\f0fe'; } /* '' */
 .icon-reply:before { content: '\f112'; } /* '' */
+.icon-smile:before { content: '\f118'; } /* '' */
 .icon-lock-open-alt:before { content: '\f13e'; } /* '' */
 .icon-ellipsis:before { content: '\f141'; } /* '' */
 .icon-play-circled:before { content: '\f144'; } /* '' */
diff --git a/static/font/demo.html b/static/font/demo.html
old mode 100755
new mode 100644
index 61dfae76..1a28bc77
--- a/static/font/demo.html
+++ b/static/font/demo.html
@@ -229,11 +229,11 @@ body {
 }
 @font-face {
       font-family: 'fontello';
-      src: url('./font/fontello.eot?82370835');
-      src: url('./font/fontello.eot?82370835#iefix') format('embedded-opentype'),
-           url('./font/fontello.woff?82370835') format('woff'),
-           url('./font/fontello.ttf?82370835') format('truetype'),
-           url('./font/fontello.svg?82370835#fontello') format('svg');
+      src: url('./font/fontello.eot?31206390');
+      src: url('./font/fontello.eot?31206390#iefix') format('embedded-opentype'),
+           url('./font/fontello.woff?31206390') format('woff'),
+           url('./font/fontello.ttf?31206390') format('truetype'),
+           url('./font/fontello.svg?31206390#fontello') format('svg');
       font-weight: normal;
       font-style: normal;
     }
@@ -354,13 +354,16 @@ body {
       <div class="row">
         <div class="the-icons span3" title="Code: 0xf0fe"><i class="demo-icon icon-plus-squared">&#xf0fe;</i> <span class="i-name">icon-plus-squared</span><span class="i-code">0xf0fe</span></div>
         <div class="the-icons span3" title="Code: 0xf112"><i class="demo-icon icon-reply">&#xf112;</i> <span class="i-name">icon-reply</span><span class="i-code">0xf112</span></div>
+        <div class="the-icons span3" title="Code: 0xf118"><i class="demo-icon icon-smile">&#xf118;</i> <span class="i-name">icon-smile</span><span class="i-code">0xf118</span></div>
         <div class="the-icons span3" title="Code: 0xf13e"><i class="demo-icon icon-lock-open-alt">&#xf13e;</i> <span class="i-name">icon-lock-open-alt</span><span class="i-code">0xf13e</span></div>
-        <div class="the-icons span3" title="Code: 0xf141"><i class="demo-icon icon-ellipsis">&#xf141;</i> <span class="i-name">icon-ellipsis</span><span class="i-code">0xf141</span></div>
       </div>
       <div class="row">
+        <div class="the-icons span3" title="Code: 0xf141"><i class="demo-icon icon-ellipsis">&#xf141;</i> <span class="i-name">icon-ellipsis</span><span class="i-code">0xf141</span></div>
         <div class="the-icons span3" title="Code: 0xf144"><i class="demo-icon icon-play-circled">&#xf144;</i> <span class="i-name">icon-play-circled</span><span class="i-code">0xf144</span></div>
         <div class="the-icons span3" title="Code: 0xf164"><i class="demo-icon icon-thumbs-up-alt">&#xf164;</i> <span class="i-name">icon-thumbs-up-alt</span><span class="i-code">0xf164</span></div>
         <div class="the-icons span3" title="Code: 0xf1e5"><i class="demo-icon icon-binoculars">&#xf1e5;</i> <span class="i-name">icon-binoculars</span><span class="i-code">0xf1e5</span></div>
+      </div>
+      <div class="row">
         <div class="the-icons span3" title="Code: 0xf234"><i class="demo-icon icon-user-plus">&#xf234;</i> <span class="i-name">icon-user-plus</span><span class="i-code">0xf234</span></div>
       </div>
     </div>
diff --git a/static/font/font/fontello.eot b/static/font/font/fontello.eot
old mode 100755
new mode 100644
index ca8d57f6df5a71bbf02fcf19c0089526a018b0b6..197a604204720591bf46f3c9f0ee25dc3fe14d46
GIT binary patch
delta 883
zcmZ{iUr1AN6vxl`-MhO@Z5ui_U2CnW%eJ*h)^?M1b7_Rr!2S@aVOu)2aCOxs7Lj2R
zQDoW#d#I?O2zoL0A|cd6L{ULcLJ-tLixEMa*-M%0%++K3_}<U?p7T4u1Bbgfg)`GA
z%rpV0nkEG=KOeNUPS#x>83Mo-065SY4a?uA?yMsJ0DwQ(ITW)B+2ut5DNS{2x7-uG
zG&#`<uw4gGDEEX1Wy(`5rHHDYzEj=0eNT!21hO?3dL!X3!`??<0mO@x@b*$d`I1+Y
ze@ecxHyRth=RJ`9K#5P3nC&~!8FoBhy%%8X4e}k)@UV>MSKTMSMBaKl9F4rbxpo~u
ztr>v5kxvZ9ZsT2g&`(3~mpl-WlL6-(K=54rHn!t*d<lEDxd5pf&<@;6<RTVOzYBQy
zNrg(VQpBfLr)pB3^wsps^v85E{XM;$DbAF|Z?P(ESw_kPG7XuoOme}K&Bpt=iVCE@
zwv}@T{&V8RT)Sc;O%@XU977$@YF6gv0I)GJ%D=)rWdIoxtS3r&K{YXu7i=Il<OL35
zS6<*GCi4Opz=9_)dUi_K;v7+Ae`ja8!(1_xfElX53-z$0Zu=TNV;t@RH3*zq2q}=`
zks-%Ixz#8ULZDQsl>0%cR2>ABQq>%&Ga3yg`jYbU;sV7QCu-1*>+KR6j25i%`Xsbq
zm0qyfC1y|%-IyzR+#}4UVHQr}e0mMq+)Tn63$jzC^7w$B*O*Pbrnw`i<;^DD@@Ge_
zi&aZ@v^xCN%q6<7)OK7Lzj(;c#L(Ea(Iei*f#<0g$A!~#i;vGD*6(L6J2fVCk<KNG
zF0H1(l(aZjI?aFiuyHI@F6NrYI{dt+`^@f>&tkD>UveLS#EZ=hg1OZeoIkAf|A0a+
z_w&NLPT$&pj8}_3bjL&D4W4Vw{*Et+M@#L72}8>0FupCjUS3ZZX<Oh<3~eps=;o-u
Xjp3%md%qh6#bESkUnEf=9V_|+j=J4{

delta 552
zcmdlmo$<>QMz#_!28J`96WPpI<izrNCOUN2S1>Rz1~4!%geB)D7M$PsTMx)z!N9=c
zlw4M#!1n*&7X}8~EkJpNw1V{9u89*Of&42B4BQ3jiNys#aRDHI4UpzY&#6o^FkfNE
zz`**3fx$2@BQ-HaOs)6_1A}=CP~I#9D8PP_g#*Z+0_3Y?<d#${yc72S5l~<UP+&_=
zesZE<uyi;BgGCOIACsF{QNY;5y9~%b0pu&>CFZ7{nJcdd<iB8GU^-inUtF>{WS=Vo
zgEde;<L82+)Pkpu+ItunJY6O)V2oy*Ir$G`y0sDmBTzR3qYMKxn56@xxq$kW7+4rS
z040<d6o4$I7t$|`UYLC7|8VldgAY$XeE#t7qtN69OsbQQGwCTZ0#!wTVH5*aI9ZB0
z8fZM*<VNN{lRq%A^Yei0WKsZ;K%ld^hvhV*J1}fM0x^R+kamP%1`QzX0>KQLKsp72
z8MJ`(QwV0zW?=Ya0>KPA3=ErBu$gLa{%YjRCexEACKu0d^Ob>{85kxE3^#oxRAKbw
z5KD7L-N`+cb0+IpWeT#0#fZ%lcah+c*bWW{-Oa14xS4?pw%JB)7P8Z0-0Wtb#RC9?
C36pgI

diff --git a/static/font/font/fontello.svg b/static/font/font/fontello.svg
old mode 100755
new mode 100644
index 7849638e..6d9903ca
--- a/static/font/font/fontello.svg
+++ b/static/font/font/fontello.svg
@@ -82,6 +82,8 @@
 
 <glyph glyph-name="reply" unicode="&#xf112;" d="M1000 232q0-93-71-252-1-4-6-13t-7-17-7-12q-7-10-16-10-8 0-13 6t-5 14q0 5 1 15t2 13q3 38 3 69 0 56-10 101t-27 77-45 56-59 39-74 24-86 12-98 3h-125v-143q0-14-10-25t-26-11-25 11l-285 286q-11 10-11 25t11 25l285 286q11 10 25 10t26-10 10-25v-143h125q398 0 488-225 30-75 30-186z" horiz-adv-x="1000" />
 
+<glyph glyph-name="smile" unicode="&#xf118;" d="M633 257q-21-67-77-109t-127-41-128 41-77 109q-4 14 3 27t21 18q14 4 27-2t17-22q14-44 52-72t85-28 84 28 52 72q4 15 18 22t27 2 21-18 2-27z m-276 243q0-30-21-51t-50-21-51 21-21 51 21 50 51 21 50-21 21-50z m286 0q0-30-21-51t-51-21-50 21-21 51 21 50 50 21 51-21 21-50z m143-143q0 73-29 139t-76 114-114 76-138 28-139-28-114-76-76-114-29-139 29-139 76-113 114-77 139-28 138 28 114 77 76 113 29 139z m71 0q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+
 <glyph glyph-name="lock-open-alt" unicode="&#xf13e;" d="M589 428q23 0 38-15t16-38v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v179q0 103 74 177t176 73 177-73 73-177q0-14-10-25t-25-11h-36q-14 0-25 11t-11 25q0 59-42 101t-101 42-101-42-41-101v-179h410z" horiz-adv-x="642.9" />
 
 <glyph glyph-name="ellipsis" unicode="&#xf141;" d="M214 446v-107q0-22-15-38t-38-15h-107q-23 0-38 15t-16 38v107q0 23 16 38t38 16h107q22 0 38-16t15-38z m286 0v-107q0-22-16-38t-38-15h-107q-22 0-38 15t-15 38v107q0 23 15 38t38 16h107q23 0 38-16t16-38z m286 0v-107q0-22-16-38t-38-15h-107q-22 0-38 15t-16 38v107q0 23 16 38t38 16h107q23 0 38-16t16-38z" horiz-adv-x="785.7" />
diff --git a/static/font/font/fontello.ttf b/static/font/font/fontello.ttf
old mode 100755
new mode 100644
index e0fd784f6bc90b538c00cd762f805a7a40f90daf..6ec04a304334c68b5f43d48fd4ee57e46f4400a1
GIT binary patch
delta 856
zcmZ{iT}V@57{{OIJ!fZ|+7zApYOQ5CZ9AT5tZmskX%?Xvlu4+CZR(tfvxBavh>Vhu
zpt4R>7X=j*L07RGiJ&ebl0K-LAaClT#fYHU7h&mow$)|4{Lk<CKVL7roM$RdT*S%c
zV+R0m8vyL=jYpKv7p^ZNe;a`B=sl2d3fYBk0CI-v&VD5pKXq=h6JSFbK(P{wj4G6;
zSWXjlv7tl#Wjh{}00?BgCkLXDK2zJ>PXNIQO85sTp`GUS<R6k>F%VB2yy@SWeM^b=
zl$aXY*Bfy^Ufc$-_6qs#c;ujhCl=iz|C_vXI1-OOySj84K)oG+Jy-UPCa&QPS{R~B
z@Ru?YRZ@+f`v5J+&i&klm(+HQtrr1l7|;b=J`#yVG%f-Ub5vLXPKx;S;<PvI%bd+j
zXWnH}nXj3J+45P7`U9)cqT1N1YFa_PUHP*c{&Unpwo6k-t%CZB&8ZDcUrO(hzbyxV
zy5tP^6t`OdW=T*(lna7dVq-zDlDMfLa1;9q0uM1&5QqR@d<D_kPntEJF->+pJH_qc
z%Ao@6Pz`=)f{hIumKYi1a0}=`;PgURgB*_xITp@6h!!CXTAfbY4qC0Q19VzlYh#1i
zY^pF;Sgqwnnk61IpoBFp8BJyfdi?<z9awD?s$4QNX^0Z$N<L|fRT-FrlevJ=fK?Kc
z(d$5Vs8TsIV&n~W8*gasZYkyMwz7o}?s}2c$}V)eL$yo{N~i0)PoA0B9b&=o`1#{K
z{^pU#=_kX&;rrk29Yt(vXWKR#Z2FQiF&Gp}4Mnz;!=0bB|K*+L@vt?R8y@ct@xJ~e
zTlYUoBp!XteE^cq)tdx+XI0DVJ*A=VP|W52Sa{PLSo)9Zu|NPNbt-U$=Q^|VYI|^R
xrOPyFN}Jv0mzK-cCTgVD0x9_-Sj<u9%(^aytCGHugo0)?zIP~^>{&lp@&^kH(Ov)m

delta 521
zcmeB}#&~8j;{@gU3I+zo00stzu;kptg7X`H>jC*I7#LWblFLdI*#7_f!oXm=1t_nO
zR*;_CHE}{Dkbi}Nfx93*vA6&zE&$}O0n!}lIhAP!<}2(N7+BvhFc{`#q$Z|_sTKcV
zU@(sX%9~{X1=vrrZ~*yJfP9sV+>(lgcf$TZ0t)N^3T(;APfipJmJVlNu*d=OV{#KK
z3K*MsmjU@FfP96##N5;~bLAC*{1*%iOlJ%7i%S-V>~m#cum<X9{9I6!TJY3Sdk+JH
zr_012(Tp=EhcKpFD={zvH8U{EFffBzIzXBWs9lMHh2aBGLWw~E$YOdS{le&l$%p<A
zCqF#+@btsy5C1+2P5!~CI$54cPmvL*Dgq3n7_h?0MNH9~&ol8baw>o<0|K4RPnb_L
zx&uSwBM>vF18GMHX3zlAE)dM138YgXm_Z9jKZRfhZ3c!<CJ@Y^!@#hK%~X4{uaPsG
zOi!MeTs*(cR|aloU?4Cs-1L=Dh0&AOSeP^FPJUuBXL5^WrXY)0jMzMJ7YQDT?O>nl
ZZf3ILW(F$YvyIxEWvj=yd7fPs4*+_Li;@5U

diff --git a/static/font/font/fontello.woff b/static/font/font/fontello.woff
old mode 100755
new mode 100644
index 286c7d4dbdc73a5fd0019799366688dfea3bcabe..231c2c460bc3ea24df9adffb9ce13fcfd74db20b
GIT binary patch
delta 9629
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
TO@TaLMi<3j*e8tQlh7=DDj=2O

delta 9451
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

diff --git a/static/font/font/fontello.woff2 b/static/font/font/fontello.woff2
old mode 100755
new mode 100644
index 5e5a3a2c42e51bd751ebc491cbd92615a4081c2d..bf84b560808b374b95d17f03678527246b28944d
GIT binary patch
literal 10044
zcmV-CC&SoxPew8T0RR9104F>E4*&oF080n}04Cx90RR9100000000000000000000
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
SA<wWgkgE%HqZ0-X146Jj;C4*_

literal 9856
zcmV-`CV$y?Pew8T0RR91049I{4*&oF07=XM045~>0RR9100000000000000000000
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


From fd66afe1e5917405d3e99e558432212f06a03e71 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Mon, 29 Jul 2019 00:10:43 +0300
Subject: [PATCH 15/81] linting

---
 src/components/emoji-input/emoji-input.js     |  2 +-
 src/components/emoji-input/emoji-input.vue    | 16 ++---
 src/components/emoji-picker/emoji-picker.vue  | 71 +++++++++++++------
 .../post_status_form/post_status_form.vue     |  4 +-
 4 files changed, 60 insertions(+), 33 deletions(-)

diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js
index 1c49c710..f751f6a0 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji-input/emoji-input.js
@@ -67,7 +67,7 @@ const EmojiInput = {
       caret: 0,
       focused: false,
       blurTimeout: null,
-      showPicker: false,
+      showPicker: false
     }
   },
   components: {
diff --git a/src/components/emoji-input/emoji-input.vue b/src/components/emoji-input/emoji-input.vue
index 605882e8..05418657 100644
--- a/src/components/emoji-input/emoji-input.vue
+++ b/src/components/emoji-input/emoji-input.vue
@@ -1,24 +1,24 @@
 <template>
-<div
-  class="emoji-input"
-  v-click-outside="onClickOutside"
+  <div
+    v-click-outside="onClickOutside"
+    class="emoji-input"
   >
     <slot />
     <template v-if="emojiPicker">
       <div
-        @click.prevent="togglePicker"
         class="emoji-picker-icon"
         :class="pickerIconBottom ? 'picker-icon-bottom': 'picker-icon-right'"
-        >
-        <i class="icon-smile"></i>
+        @click.prevent="togglePicker"
+      >
+        <i class="icon-smile" />
       </div>
       <EmojiPicker
         v-if="emojiPicker"
-        :class="{ hide: !showPicker }"
         ref="picker"
+        :class="{ hide: !showPicker }"
         class="emoji-picker-panel"
         @emoji="insert"
-        />
+      />
     </template>
     <div
       ref="panel"
diff --git a/src/components/emoji-picker/emoji-picker.vue b/src/components/emoji-picker/emoji-picker.vue
index ea93e6fc..ec48fc45 100644
--- a/src/components/emoji-picker/emoji-picker.vue
+++ b/src/components/emoji-picker/emoji-picker.vue
@@ -1,31 +1,58 @@
 <template>
-<div class="emoji-dropdown-menu panel panel-default">
-  <div class="panel-heading emoji-tabs">
-    <span class="emoji-tabs-item" :class="{'active': activeGroup === key}" v-for="(value, key) in emojis" :key="key" :title="value.text" @click.prevent="highlight(key)">
-      <i :class="value.icon"></i>
-    </span>
-  </div>
-  <div class="panel-body emoji-dropdown-menu-content">
-    <div class="emoji-search">
-      <input type="text" class="form-control" v-model="keyword" />
+  <div class="emoji-dropdown-menu panel panel-default">
+    <div class="panel-heading emoji-tabs">
+      <span
+        v-for="(value, key) in emojis"
+        :key="key"
+        class="emoji-tabs-item"
+        :class="{'active': activeGroup === key}"
+        :title="value.text"
+        @click.prevent="highlight(key)"
+      >
+        <i :class="value.icon" />
+      </span>
     </div>
-    <div class="emoji-groups" ref="emoji-groups" @scroll="scrolledGroup">
-      <div v-for="(value, key) in emojis" :key="key" class="emoji-group">
-        <h6 class="emoji-group-title" :ref="'group-' + key">{{value.text}}</h6>
-        <span
-          v-for="emoji in value.emojis"
-          :key="key + emoji.displayText"
-          :title="emoji.displayText"
-          class="emoji-item"
-          @click="onEmoji(emoji)"
+    <div class="panel-body emoji-dropdown-menu-content">
+      <div class="emoji-search">
+        <input
+          v-model="keyword"
+          type="text"
+          class="form-control"
+        >
+      </div>
+      <div
+        ref="emoji-groups"
+        class="emoji-groups"
+        @scroll="scrolledGroup"
+      >
+        <div
+          v-for="(value, key) in emojis"
+          :key="key"
+          class="emoji-group"
+        >
+          <h6
+            :ref="'group-' + key"
+            class="emoji-group-title"
           >
-          <span v-if="!emoji.imageUrl">{{emoji.replacement}}</span>
-          <img :src="emoji.imageUrl" v-else>
-        </span>
+            {{ value.text }}
+          </h6>
+          <span
+            v-for="emoji in value.emojis"
+            :key="key + emoji.displayText"
+            :title="emoji.displayText"
+            class="emoji-item"
+            @click="onEmoji(emoji)"
+          >
+            <span v-if="!emoji.imageUrl">{{ emoji.replacement }}</span>
+            <img
+              v-else
+              :src="emoji.imageUrl"
+            >
+          </span>
+        </div>
       </div>
     </div>
   </div>
-</div>
 </template>
 
 <script src="./emoji-picker.js"></script>
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 0b3db30d..e691acad 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -61,7 +61,7 @@
         <EmojiInput
           v-if="newStatus.spoilerText || alwaysShowSubject"
           v-model="newStatus.spoilerText"
-          emojiPicker
+          emoji-picker
           :suggest="emojiSuggestor"
           class="form-control"
         >
@@ -76,7 +76,7 @@
         <EmojiInput
           v-model="newStatus.status"
           :suggest="emojiUserSuggestor"
-          emojiPicker
+          emoji-picker
           class="form-control main-input"
         >
           <textarea

From 920bd05081903c52a2521da5ea86714dfc82b452 Mon Sep 17 00:00:00 2001
From: Exilat <quentinantonin@free.fr>
Date: Sat, 3 Aug 2019 13:55:05 +0000
Subject: [PATCH 16/81] Update for Interactions, new search, sticker picker,
 update copy.

---
 src/i18n/oc.json | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/i18n/oc.json b/src/i18n/oc.json
index 6100a4d2..2b2bd88a 100644
--- a/src/i18n/oc.json
+++ b/src/i18n/oc.json
@@ -65,6 +65,7 @@
     "timeline": "Flux d’actualitat",
     "twkn": "Lo malhum conegut",
     "user_search": "Cèrca d’utilizaires",
+    "search": "Cercar",
     "who_to_follow": "Qual seguir",
     "preferences": "Preferéncias"
   },
@@ -91,7 +92,15 @@
 	"expires_in": "Lo sondatge s’acabarà {0}",
 	"expired": "Sondatge acabat {0}",
 	"not_enough_options": "I a pas pro d’opcions"
-	},  
+	},
+	"stickers": {
+	 "add_sticker": "Add Sticker"
+	},
+  "interactions": {
+    "favs_repeats": "Repeticions e favorits",
+    "follows": "Nòus seguidors",
+    "load_older": "Cargar d’interaccions anterioras"
+  },  
   "post_status": {
     "new_status": "Publicar d’estatuts novèls",
     "account_not_locked_warning": "Vòstre compte es pas {0}. Qual que siá pòt vos seguir per veire vòstras publicacions destinadas pas qu’a vòstres seguidors.",
@@ -269,7 +278,7 @@
     "streaming": "Activar lo cargament automatic dels novèls estatus en anar amont",
     "text": "Tèxte",
     "theme": "Tèma",
-    "theme_help_v2_1": "You can also override certain component's colors and opacity by toggling the checkbox, use \"Clear all\" button to clear all overrides.",
+    "theme_help_v2_1": "Podètz tanben remplaçar la color d’unes compausants en clicant la case, utilizatz lo boton \"O escafar tot\" per escafar totes las subrecargadas.",
     "theme_help_v2_2": "Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.",
     "theme_help": "Emplegatz los còdis de color hex (#rrggbb) per personalizar vòstre tèma de color.",
     "tooltipRadius": "Astúcias/alèrtas",
@@ -280,12 +289,12 @@
       "true": "òc"
     },
     "notifications": "Notificacions",
-    "notification_setting": "Receber las notificacions de :",
+    "notification_setting": "Recebre las notificacions de :",
     "notification_setting_follows": "Utilizaires que seguissètz",
     "notification_setting_non_follows": "Utilizaires que seguissètz pas",
     "notification_setting_followers": "Utilizaires que vos seguisson",
     "notification_setting_non_followers": "Utilizaires que vos seguisson pas",
-    "notification_mutes": "Per receber pas mai d’un utilizaire en particular, botatz-lo en silenci.",
+    "notification_mutes": "Per recebre pas mai d’un utilizaire en particular, botatz-lo en silenci.",
     "notification_blocks": "Blocar un utilizaire arrèsta totas las notificacions tan coma quitar de los seguir.",
 	"enable_web_push_notifications": "Activar las notificacions web push",
     "style": {
@@ -477,6 +486,8 @@
     "per_day": "per jorn",
     "remote_follow": "Seguir a distància",
     "statuses": "Estatuts",
+    "subscribe": "S’abonar",
+    "unsubscribe": "Se desabonar",
     "unblock": "Desblocar",
     "unblock_progress": "Desblocatge...",
     "block_progress": "Blocatge...",
@@ -532,5 +543,12 @@
       "GiB": "Gio",
       "TiB": "Tio"
     }
+  },
+    "search": {
+	    "people": "Gent",
+	    "hashtags": "Etiquetas",
+	    "person_talking": "{count} persona ne parla",
+	    "people_talking": "{count} personas ne parlan",
+	    "no_results": "Cap de resultats"
   }
 }
\ No newline at end of file

From 39106dc5450d4a927848477764bed2e31fe435c4 Mon Sep 17 00:00:00 2001
From: Exilat <quentinantonin@free.fr>
Date: Sat, 3 Aug 2019 14:04:49 +0000
Subject: [PATCH 17/81] Update oc.json

---
 src/i18n/oc.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/i18n/oc.json b/src/i18n/oc.json
index 2b2bd88a..54f42294 100644
--- a/src/i18n/oc.json
+++ b/src/i18n/oc.json
@@ -94,7 +94,7 @@
 	"not_enough_options": "I a pas pro d’opcions"
 	},
 	"stickers": {
-	 "add_sticker": "Add Sticker"
+	 "add_sticker": "Ajustar un pegasolet"
 	},
   "interactions": {
     "favs_repeats": "Repeticions e favorits",

From 036882d27c22d768782c208a12625116ddc6ae7e Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Mon, 12 Aug 2019 13:18:37 +0300
Subject: [PATCH 18/81] rename for consistency

---
 .../emoji-input.js => emoji_input/emoji_input.js}             | 2 +-
 .../emoji-input.vue => emoji_input/emoji_input.vue}           | 2 +-
 src/components/{emoji-input => emoji_input}/suggestor.js      | 0
 .../emoji-picker.js => emoji_picker/emoji_picker.js}          | 0
 .../emoji-picker.vue => emoji_picker/emoji_picker.vue}        | 2 +-
 src/components/post_status_form/post_status_form.js           | 4 ++--
 src/components/user_settings/user_settings.js                 | 4 ++--
 7 files changed, 7 insertions(+), 7 deletions(-)
 rename src/components/{emoji-input/emoji-input.js => emoji_input/emoji_input.js} (99%)
 rename src/components/{emoji-input/emoji-input.vue => emoji_input/emoji_input.vue} (98%)
 rename src/components/{emoji-input => emoji_input}/suggestor.js (100%)
 rename src/components/{emoji-picker/emoji-picker.js => emoji_picker/emoji_picker.js} (100%)
 rename src/components/{emoji-picker/emoji-picker.vue => emoji_picker/emoji_picker.vue} (98%)

diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji_input/emoji_input.js
similarity index 99%
rename from src/components/emoji-input/emoji-input.js
rename to src/components/emoji_input/emoji_input.js
index f751f6a0..5a9d1406 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -1,5 +1,5 @@
 import Completion from '../../services/completion/completion.js'
-import EmojiPicker from '../emoji-picker/emoji-picker.vue'
+import EmojiPicker from '../emoji_picker/emoji_picker.vue'
 import { take } from 'lodash'
 
 /**
diff --git a/src/components/emoji-input/emoji-input.vue b/src/components/emoji_input/emoji_input.vue
similarity index 98%
rename from src/components/emoji-input/emoji-input.vue
rename to src/components/emoji_input/emoji_input.vue
index 05418657..3ca12af1 100644
--- a/src/components/emoji-input/emoji-input.vue
+++ b/src/components/emoji_input/emoji_input.vue
@@ -50,7 +50,7 @@
   </div>
 </template>
 
-<script src="./emoji-input.js"></script>
+<script src="./emoji_input.js"></script>
 
 <style lang="scss">
 @import '../../_variables.scss';
diff --git a/src/components/emoji-input/suggestor.js b/src/components/emoji_input/suggestor.js
similarity index 100%
rename from src/components/emoji-input/suggestor.js
rename to src/components/emoji_input/suggestor.js
diff --git a/src/components/emoji-picker/emoji-picker.js b/src/components/emoji_picker/emoji_picker.js
similarity index 100%
rename from src/components/emoji-picker/emoji-picker.js
rename to src/components/emoji_picker/emoji_picker.js
diff --git a/src/components/emoji-picker/emoji-picker.vue b/src/components/emoji_picker/emoji_picker.vue
similarity index 98%
rename from src/components/emoji-picker/emoji-picker.vue
rename to src/components/emoji_picker/emoji_picker.vue
index ec48fc45..70d08700 100644
--- a/src/components/emoji-picker/emoji-picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -55,7 +55,7 @@
   </div>
 </template>
 
-<script src="./emoji-picker.js"></script>
+<script src="./emoji_picker.js"></script>
 
 <style lang="scss">
 @import '../../_variables.scss';
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 40bbf6d4..f646aeb5 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -1,12 +1,12 @@
 import statusPoster from '../../services/status_poster/status_poster.service.js'
 import MediaUpload from '../media_upload/media_upload.vue'
 import ScopeSelector from '../scope_selector/scope_selector.vue'
-import EmojiInput from '../emoji-input/emoji-input.vue'
+import EmojiInput from '../emoji_input/emoji_input.vue'
 import PollForm from '../poll/poll_form.vue'
 import StickerPicker from '../sticker_picker/sticker_picker.vue'
 import fileTypeService from '../../services/file_type/file_type.service.js'
 import { reject, map, uniqBy } from 'lodash'
-import suggestor from '../emoji-input/suggestor.js'
+import suggestor from '../emoji_input/suggestor.js'
 
 const buildMentionsString = ({ user, attentions }, currentUser) => {
   let allAttentions = [...attentions]
diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js
index b5a7f0df..ae04ce73 100644
--- a/src/components/user_settings/user_settings.js
+++ b/src/components/user_settings/user_settings.js
@@ -11,8 +11,8 @@ import BlockCard from '../block_card/block_card.vue'
 import MuteCard from '../mute_card/mute_card.vue'
 import SelectableList from '../selectable_list/selectable_list.vue'
 import ProgressButton from '../progress_button/progress_button.vue'
-import EmojiInput from '../emoji-input/emoji-input.vue'
-import suggestor from '../emoji-input/suggestor.js'
+import EmojiInput from '../emoji_input/emoji_input.vue'
+import suggestor from '../emoji_input/suggestor.js'
 import Autosuggest from '../autosuggest/autosuggest.vue'
 import Importer from '../importer/importer.vue'
 import Exporter from '../exporter/exporter.vue'

From 579b5c9e77154db5fe1bc712969b6fa39830442f Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Mon, 12 Aug 2019 14:20:08 +0300
Subject: [PATCH 19/81] initial attempts at making emoji-picker somewhat
 extensible

---
 src/components/emoji_picker/emoji_picker.js   |   6 +-
 src/components/emoji_picker/emoji_picker.scss |  83 ++++++++
 src/components/emoji_picker/emoji_picker.vue  | 201 +++++-------------
 3 files changed, 144 insertions(+), 146 deletions(-)
 create mode 100644 src/components/emoji_picker/emoji_picker.scss

diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 92d517b7..e25f98ff 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -6,7 +6,8 @@ const EmojiPicker = {
   data () {
     return {
       keyword: '',
-      activeGroup: 'standard'
+      activeGroup: 'standard',
+      showingAdditional: false
     }
   },
   methods: {
@@ -28,6 +29,9 @@ const EmojiPicker = {
           this.activeGroup = key
         }
       })
+    },
+    toggleAdditional (value) {
+      this.showingAdditional = value
     }
   },
   computed: {
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
new file mode 100644
index 00000000..72889441
--- /dev/null
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -0,0 +1,83 @@
+@import '../../_variables.scss';
+
+.emoji-picker {
+  position: absolute;
+  z-index: 1;
+  right: 0;
+  width: 300px;
+  height: 300px;
+  display: flex;
+  flex-direction: column;
+  margin: 0 !important;
+
+  .emoji {
+    &-tabs {
+      &-item {
+        padding: 0 5px;
+
+        &.active {
+          border-bottom: 4px solid;
+
+          i {
+            color: $fallback--lightText;
+            color: var(--lightText, $fallback--lightText);
+          }
+        }
+      }
+    }
+
+    &-content {
+      display: flex;
+      flex-direction: column;
+    }
+
+    &-search {
+      padding: 5px;
+      flex: 0 0 1px;
+
+      input {
+        width: 100%;
+      }
+    }
+
+    &-groups {
+      flex: 1 1 1px;
+      position: relative;
+      overflow: auto;
+    }
+
+    &-group {
+      display: flex;
+      align-items: center;
+      flex-wrap: wrap;
+      padding: 5px;
+      justify-content: space-between;
+
+      &-title {
+        font-size: 12px;
+        width: 100%;
+        margin: 0;
+      }
+    }
+
+    &-item {
+      width: 32px;
+      height: 32px;
+      box-sizing: border-box;
+      display: flex;
+      font-size: 32px;
+      align-items: center;
+      justify-content: center;
+      margin: 2px;
+
+      cursor: pointer;
+
+      img {
+        max-width: 100%;
+        max-height: 100%;
+      }
+    }
+
+  }
+
+}
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 70d08700..ec1702f3 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -1,161 +1,72 @@
 <template>
-  <div class="emoji-dropdown-menu panel panel-default">
-    <div class="panel-heading emoji-tabs">
-      <span
-        v-for="(value, key) in emojis"
-        :key="key"
-        class="emoji-tabs-item"
-        :class="{'active': activeGroup === key}"
-        :title="value.text"
-        @click.prevent="highlight(key)"
-      >
-        <i :class="value.icon" />
+  <div class="emoji-picker panel panel-default">
+    <div class="panel-heading">
+      <span class="emoji-tabs">
+        <span
+          v-for="(value, key) in emojis"
+          :key="key"
+          class="emoji-tabs-item"
+          :class="{'active': activeGroup === key}"
+          :title="value.text"
+          @click.prevent="highlight(key)"
+        >
+          <i :class="value.icon" />
+        </span>
+      </span>
+      <span class="additional-tabs">
+        <slot name="tabs" />
       </span>
     </div>
     <div class="panel-body emoji-dropdown-menu-content">
-      <div class="emoji-search">
-        <input
-          v-model="keyword"
-          type="text"
-          class="form-control"
-        >
-      </div>
       <div
-        ref="emoji-groups"
-        class="emoji-groups"
-        @scroll="scrolledGroup"
+        v-if="!showingAdditional"
+        class="emoji-content"
       >
+        <div class="emoji-search">
+          <input
+            v-model="keyword"
+            type="text"
+            class="form-control"
+          >
+        </div>
         <div
-          v-for="(value, key) in emojis"
-          :key="key"
-          class="emoji-group"
+          ref="emoji-groups"
+          class="emoji-groups"
+          @scroll="scrolledGroup"
         >
-          <h6
-            :ref="'group-' + key"
-            class="emoji-group-title"
+          <div
+            v-for="(value, key) in emojis"
+            :key="key"
+            class="emoji-group"
           >
-            {{ value.text }}
-          </h6>
-          <span
-            v-for="emoji in value.emojis"
-            :key="key + emoji.displayText"
-            :title="emoji.displayText"
-            class="emoji-item"
-            @click="onEmoji(emoji)"
-          >
-            <span v-if="!emoji.imageUrl">{{ emoji.replacement }}</span>
-            <img
-              v-else
-              :src="emoji.imageUrl"
+            <h6
+              :ref="'group-' + key"
+              class="emoji-group-title"
             >
-          </span>
+              {{ value.text }}
+            </h6>
+            <span
+              v-for="emoji in value.emojis"
+              :key="key + emoji.displayText"
+              :title="emoji.displayText"
+              class="emoji-item"
+              @click="onEmoji(emoji)"
+            >
+              <span v-if="!emoji.imageUrl">{{ emoji.replacement }}</span>
+              <img
+                v-else
+                :src="emoji.imageUrl"
+              >
+            </span>
+          </div>
         </div>
       </div>
+      <div v-if="showingAdditional" class="additional-tabs-content">
+        <slot name="tab-content" />
+      </div>
     </div>
-  </div>
+</div>
 </template>
 
 <script src="./emoji_picker.js"></script>
-
-<style lang="scss">
-@import '../../_variables.scss';
-
-.emoji {
-  &-dropdown {
-    position: absolute;
-    right: 0;
-    top: 28px;
-    z-index: 1;
-
-    &-toggle {
-      cursor: pointer;
-      position: absolute;
-      top: -23px;
-      right: 2px;
-      line-height: 1;
-
-      i {
-        font-size: 18px;
-      }
-    }
-
-    &-menu {
-      position: absolute;
-      z-index: 1;
-      right: 0;
-      width: 300px;
-      height: 300px;
-      display: flex;
-      flex-direction: column;
-      margin: 0 !important;
-
-      &-content {
-        flex: 1 1 1px;
-        display: flex;
-        flex-direction: column;
-      }
-    }
-  }
-
-  &-tabs {
-    &-item {
-      padding: 0 5px;
-
-      &.active {
-        border-bottom: 4px solid;
-
-        i {
-          color: $fallback--lightText;
-          color: var(--lightText, $fallback--lightText);
-        }
-      }
-    }
-  }
-
-  &-search {
-    padding: 5px;
-
-    input {
-      width: 100%;
-    }
-  }
-
-  &-groups {
-    flex: 1 1 1px;
-    overflow: auto;
-    position: relative;
-  }
-
-  &-group {
-    display: flex;
-    align-items: center;
-    flex-wrap: wrap;
-    width: 100%;
-
-    &-title {
-      font-size: 12px;
-      width: 100%;
-      margin: 0;
-      padding: 5px;
-    }
-  }
-
-  &-item {
-    width: 32px;
-    height: 32px;
-    box-sizing: border-box;
-    display: flex;
-    font-size: 32px;
-    align-items: center;
-    justify-content: center;
-    margin: 2px;
-    cursor: pointer;
-
-    img {
-      max-width: 100%;
-      max-height: 100%;
-    }
-  }
-
-}
-</style>
+<style lang="scss" src="./emoji_picker.scss"></style>

From 5851f97eb058b3e2df91f9122ba899bc7e4affaf Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Mon, 12 Aug 2019 20:01:38 +0300
Subject: [PATCH 20/81] fixed a lot of bugs with emoji picker, improved
 relevant components

---
 src/components/emoji_input/emoji_input.js     | 33 ++++++-
 src/components/emoji_input/emoji_input.vue    | 16 ++--
 src/components/emoji_picker/emoji_picker.js   | 86 ++++++++++++++-----
 src/components/emoji_picker/emoji_picker.scss | 82 +++++++++++++-----
 src/components/emoji_picker/emoji_picker.vue  | 60 ++++++++-----
 .../post_status_form/post_status_form.js      | 25 ++----
 .../post_status_form/post_status_form.vue     | 26 +++---
 .../sticker_picker/sticker_picker.js          |  4 +-
 .../sticker_picker/sticker_picker.vue         | 72 ++++++++--------
 src/components/tab_switcher/tab_switcher.js   | 26 +++++-
 src/components/tab_switcher/tab_switcher.scss | 11 +++
 src/i18n/en.json                              |  9 +-
 12 files changed, 300 insertions(+), 150 deletions(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 5a9d1406..5ff27b20 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -58,6 +58,16 @@ const EmojiInput = {
       required: false,
       type: Boolean,
       default: false
+    },
+    emojiPickerExternalTrigger: {
+      required: false,
+      type: Boolean,
+      default: false
+    },
+    stickerPicker: {
+      required: false,
+      type: Boolean,
+      default: false
     }
   },
   data () {
@@ -95,9 +105,6 @@ const EmojiInput = {
     textAtCaret () {
       return (this.wordAtCaret || {}).word || ''
     },
-    pickerIconBottom () {
-      return this.input && this.input.tag === 'textarea'
-    },
     wordAtCaret () {
       if (this.value && this.caret) {
         const word = Completion.wordAtPosition(this.value, this.caret - 1) || {}
@@ -133,6 +140,9 @@ const EmojiInput = {
     }
   },
   methods: {
+    triggerShowPicker () {
+      this.showPicker = true
+    },
     togglePicker () {
       this.showPicker = !this.showPicker
     },
@@ -148,6 +158,15 @@ const EmojiInput = {
         this.value.substring(this.caret)
       ].join('')
       this.$emit('input', newValue)
+      const position = this.caret + insertion.length
+
+      this.$nextTick(function () {
+        // Re-focus inputbox after clicking suggestion
+        this.input.elm.focus()
+        // Set selection right after the replacement instead of the very end
+        this.input.elm.setSelectionRange(position, position)
+        this.caret = position
+      })
     },
     replaceText (e, suggestion) {
       const len = this.suggestions.length || 0
@@ -264,6 +283,14 @@ const EmojiInput = {
     onClickOutside () {
       this.showPicker = false
     },
+    onStickerUploaded (e) {
+      this.showPicker = false
+      this.$emit('sticker-uploaded', e)
+    },
+    onStickerUploadFailed (e) {
+      this.showPicker = false
+      this.$emit('sticker-upload-Failed', e)
+    },
     setCaret ({ target: { selectionStart } }) {
       this.caret = selectionStart
     },
diff --git a/src/components/emoji_input/emoji_input.vue b/src/components/emoji_input/emoji_input.vue
index 3ca12af1..b077e6e9 100644
--- a/src/components/emoji_input/emoji_input.vue
+++ b/src/components/emoji_input/emoji_input.vue
@@ -6,8 +6,8 @@
     <slot />
     <template v-if="emojiPicker">
       <div
+        v-if="!emojiPickerExternalTrigger"
         class="emoji-picker-icon"
-        :class="pickerIconBottom ? 'picker-icon-bottom': 'picker-icon-right'"
         @click.prevent="togglePicker"
       >
         <i class="icon-smile" />
@@ -16,8 +16,11 @@
         v-if="emojiPicker"
         ref="picker"
         :class="{ hide: !showPicker }"
+        :sticker-picker="stickerPicker"
         class="emoji-picker-panel"
         @emoji="insert"
+        @sticker-uploaded="onStickerUploaded"
+        @sticker-upload-failed="onStickerUploadFailed"
       />
     </template>
     <div
@@ -62,6 +65,8 @@
 
   .emoji-picker-icon {
     position: absolute;
+    top: 0;
+    right: 0;
     margin: 0 .25em;
     font-size: 16px;
     cursor: pointer;
@@ -70,15 +75,6 @@
       color: $fallback--text;
       color: var(--text, $fallback--text);
     }
-
-    &.picker-icon-bottom {
-      bottom: 0;
-      left: 0;
-    }
-    &.picker-icon-right {
-      top: 0;
-      right: 0;
-    }
   }
   .emoji-picker-panel {
     position: absolute;
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index e25f98ff..0a64f759 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -1,15 +1,26 @@
+
 const filterByKeyword = (list, keyword = '') => {
   return list.filter(x => x.displayText.includes(keyword))
 }
 
 const EmojiPicker = {
+  props: {
+    stickerPicker: {
+      required: false,
+      type: Boolean,
+      default: false
+    }
+  },
   data () {
     return {
       keyword: '',
-      activeGroup: 'standard',
-      showingAdditional: false
+      activeGroup: 'custom',
+      showingStickers: false
     }
   },
+  components: {
+    StickerPicker: () => import('../sticker_picker/sticker_picker.vue')
+  },
   methods: {
     onEmoji (emoji) {
       const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement
@@ -19,37 +30,72 @@ const EmojiPicker = {
     highlight (key) {
       const ref = this.$refs['group-' + key]
       const top = ref[0].offsetTop
-      this.$refs['emoji-groups'].scrollTop = top + 1
+      this.setShowStickers(false)
       this.activeGroup = key
-    },
-    scrolledGroup (e) {
-      const top = e.target.scrollTop
-      Object.keys(this.emojis).forEach(key => {
-        if (this.$refs['group-' + key][0].offsetTop < top) {
-          this.activeGroup = key
-        }
+      this.$nextTick(() => {
+        this.$refs['emoji-groups'].scrollTop = top + 1
       })
     },
-    toggleAdditional (value) {
-      this.showingAdditional = value
+    scrolledGroup (e) {
+      const target = (e && e.target) || this.$refs['emoji-groups']
+      const top = target.scrollTop + 5
+      this.$nextTick(() => {
+        this.emojisView.forEach(group => {
+          const ref = this.$refs['group-' + group.id]
+          if (ref[0].offsetTop <= top) {
+            this.activeGroup = group.id
+          }
+        })
+      })
+    },
+    toggleStickers () {
+      this.showingStickers = !this.showingStickers
+    },
+    setShowStickers (value) {
+      this.showingStickers = value
+    },
+    onStickerUploaded (e) {
+      this.$emit('sticker-uploaded', e)
+    },
+    onStickerUploadFailed (e) {
+      this.$emit('sticker-upload-failed', e)
+    }
+  },
+  watch: {
+    keyword () {
+      this.scrolledGroup()
     }
   },
   computed: {
+    activeGroupView () {
+      return this.showingStickers ? '' : this.activeGroup
+    },
+    stickersAvailable () {
+      if (this.$store.state.instance.stickers) {
+        return this.$store.state.instance.stickers.length > 0
+      }
+      return 0
+    },
     emojis () {
       const standardEmojis = this.$store.state.instance.emoji || []
       const customEmojis = this.$store.state.instance.customEmoji || []
-      return {
-        custom: {
-          text: 'Custom',
-          icon: 'icon-picture',
+      return [
+        {
+          id: 'custom',
+          text: this.$t('emoji.custom'),
+          icon: 'icon-smile',
           emojis: filterByKeyword(customEmojis, this.keyword)
         },
-        standard: {
-          text: 'Standard',
-          icon: 'icon-star',
+        {
+          id: 'standard',
+          text: this.$t('emoji.unicode'),
+          icon: 'icon-picture',
           emojis: filterByKeyword(standardEmojis, this.keyword)
         }
-      }
+      ]
+    },
+    emojisView () {
+      return this.emojis.filter(value => value.emojis.length > 0)
     }
   }
 }
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 72889441..6c13e82b 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -1,39 +1,78 @@
 @import '../../_variables.scss';
 
 .emoji-picker {
-  position: absolute;
-  z-index: 1;
-  right: 0;
-  width: 300px;
-  height: 300px;
   display: flex;
   flex-direction: column;
+  position: absolute;
+  right: 0;
+  left: 0;
+  height: 300px;
   margin: 0 !important;
+  z-index: 1;
 
-  .emoji {
-    &-tabs {
-      &-item {
-        padding: 0 5px;
+  .panel-body {
+    display: flex;
+    flex-direction: column;
+    flex: 1 1 0;
+    min-height: 0px;
+  }
 
-        &.active {
-          border-bottom: 4px solid;
+  .additional-tabs {
+    border-left: 1px solid;
+    border-left-color: $fallback--icon;
+    border-left-color: var(--icon, $fallback--icon);
+    padding-left: 5px;
+    flex: 0 0 0;
+  }
 
-          i {
-            color: $fallback--lightText;
-            color: var(--lightText, $fallback--lightText);
-          }
+  .emoji-tabs {
+    flex: 1 1 0;
+  }
+
+  .additional-tabs,
+  .emoji-tabs {
+    &-item {
+      padding: 0 5px;
+      cursor: pointer;
+      font-size: 24px;
+
+      &.disabled {
+        opacity: 0.5;
+        pointer-events: none;
+      }
+      &.active {
+        border-bottom: 4px solid;
+
+        i {
+          color: $fallback--lightText;
+          color: var(--lightText, $fallback--lightText);
         }
       }
     }
+  }
 
+  .sticker-picker {
+    flex: 1 1 0
+  }
+
+  .stickers,
+  .emoji {
     &-content {
       display: flex;
       flex-direction: column;
-    }
+      flex: 1 1 0;
+      min-height: 0;
 
+      &.hidden {
+        display: none
+      }
+    }
+  }
+
+  .emoji {
     &-search {
       padding: 5px;
-      flex: 0 0 1px;
+      flex: 0 0 0;
 
       input {
         width: 100%;
@@ -50,13 +89,16 @@
       display: flex;
       align-items: center;
       flex-wrap: wrap;
-      padding: 5px;
-      justify-content: space-between;
+      padding-left: 5px;
+      justify-content: left;
 
       &-title {
         font-size: 12px;
         width: 100%;
         margin: 0;
+        &.disabled {
+          display: none;
+        }
       }
     }
 
@@ -68,7 +110,7 @@
       font-size: 32px;
       align-items: center;
       justify-content: center;
-      margin: 2px;
+      margin: 4px;
 
       cursor: pointer;
 
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index ec1702f3..12b1569e 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -3,30 +3,44 @@
     <div class="panel-heading">
       <span class="emoji-tabs">
         <span
-          v-for="(value, key) in emojis"
-          :key="key"
+          v-for="group in emojis"
+          :key="group.id"
           class="emoji-tabs-item"
-          :class="{'active': activeGroup === key}"
-          :title="value.text"
-          @click.prevent="highlight(key)"
+          :class="{
+            active: activeGroupView === group.id,
+            disabled: group.emojis.length === 0
+          }"
+          :title="group.text"
+          @click.prevent="highlight(group.id)"
         >
-          <i :class="value.icon" />
+          <i :class="group.icon" />
         </span>
       </span>
-      <span class="additional-tabs">
-        <slot name="tabs" />
+      <span
+        v-if="stickerPicker"
+        class="additional-tabs"
+      >
+        <span
+          class="stickers-tab-icon additional-tabs-item"
+          :class="{active: showingStickers}"
+          :title="$t('emoji.stickers')"
+          @click.prevent="toggleStickers"
+        >
+          <i class="icon-star" />
+        </span>
       </span>
     </div>
-    <div class="panel-body emoji-dropdown-menu-content">
+    <div class="panel-body">
       <div
-        v-if="!showingAdditional"
         class="emoji-content"
+        :class="{hidden: showingStickers}"
       >
         <div class="emoji-search">
           <input
             v-model="keyword"
             type="text"
             class="form-control"
+            :placeholder="$t('emoji.search_emoji')"
           >
         </div>
         <div
@@ -35,22 +49,22 @@
           @scroll="scrolledGroup"
         >
           <div
-            v-for="(value, key) in emojis"
-            :key="key"
+            v-for="group in emojisView"
+            :key="group.id"
             class="emoji-group"
           >
             <h6
-              :ref="'group-' + key"
+              :ref="'group-' + group.id"
               class="emoji-group-title"
             >
-              {{ value.text }}
+              {{ group.text }}
             </h6>
             <span
-              v-for="emoji in value.emojis"
-              :key="key + emoji.displayText"
+              v-for="emoji in group.emojis"
+              :key="group.id + emoji.displayText"
               :title="emoji.displayText"
               class="emoji-item"
-              @click="onEmoji(emoji)"
+              @click.stop.prevent="onEmoji(emoji)"
             >
               <span v-if="!emoji.imageUrl">{{ emoji.replacement }}</span>
               <img
@@ -61,11 +75,17 @@
           </div>
         </div>
       </div>
-      <div v-if="showingAdditional" class="additional-tabs-content">
-        <slot name="tab-content" />
+      <div
+        v-if="showingStickers"
+        class="stickers-content"
+      >
+        <sticker-picker
+          @uploaded="onStickerUploaded"
+          @upload-failed="onStickerUploadFailed"
+        />
       </div>
     </div>
-</div>
+  </div>
 </template>
 
 <script src="./emoji_picker.js"></script>
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index f646aeb5..1359e75a 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -3,7 +3,6 @@ import MediaUpload from '../media_upload/media_upload.vue'
 import ScopeSelector from '../scope_selector/scope_selector.vue'
 import EmojiInput from '../emoji_input/emoji_input.vue'
 import PollForm from '../poll/poll_form.vue'
-import StickerPicker from '../sticker_picker/sticker_picker.vue'
 import fileTypeService from '../../services/file_type/file_type.service.js'
 import { reject, map, uniqBy } from 'lodash'
 import suggestor from '../emoji_input/suggestor.js'
@@ -35,7 +34,6 @@ const PostStatusForm = {
     MediaUpload,
     EmojiInput,
     PollForm,
-    StickerPicker,
     ScopeSelector
   },
   mounted () {
@@ -84,8 +82,7 @@ const PostStatusForm = {
         contentType
       },
       caret: 0,
-      pollFormVisible: false,
-      stickerPickerVisible: false
+      pollFormVisible: false
     }
   },
   computed: {
@@ -161,12 +158,6 @@ const PostStatusForm = {
     safeDMEnabled () {
       return this.$store.state.instance.safeDM
     },
-    stickersAvailable () {
-      if (this.$store.state.instance.stickers) {
-        return this.$store.state.instance.stickers.length > 0
-      }
-      return 0
-    },
     pollsAvailable () {
       return this.$store.state.instance.pollsAvailable &&
         this.$store.state.instance.pollLimits.max_options >= 2
@@ -222,7 +213,6 @@ const PostStatusForm = {
             poll: {}
           }
           this.pollFormVisible = false
-          this.stickerPickerVisible = false
           this.$refs.mediaUpload.clearFile()
           this.clearPollForm()
           this.$emit('posted')
@@ -239,7 +229,6 @@ const PostStatusForm = {
     addMediaFile (fileInfo) {
       this.newStatus.files.push(fileInfo)
       this.enableSubmit()
-      this.stickerPickerVisible = false
     },
     removeMediaFile (fileInfo) {
       let index = this.newStatus.files.indexOf(fileInfo)
@@ -293,20 +282,16 @@ const PostStatusForm = {
         target.style.height = null
       }
     },
+    showEmoji () {
+      this.$refs['textarea'].focus()
+      this.$refs['emoji-input'].triggerShowPicker()
+    },
     clearError () {
       this.error = null
     },
     changeVis (visibility) {
       this.newStatus.visibility = visibility
     },
-    toggleStickerPicker () {
-      this.stickerPickerVisible = !this.stickerPickerVisible
-    },
-    clearStickerPicker () {
-      if (this.$refs.stickerPicker) {
-        this.$refs.stickerPicker.clear()
-      }
-    },
     togglePollForm () {
       this.pollFormVisible = !this.pollFormVisible
     },
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index e691acad..ad2c2218 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -74,10 +74,15 @@
           >
         </EmojiInput>
         <EmojiInput
+          ref="emoji-input"
           v-model="newStatus.status"
           :suggest="emojiUserSuggestor"
-          emoji-picker
           class="form-control main-input"
+          emoji-picker
+          emoji-picker-external-trigger
+          sticker-picker
+          @sticker-uploaded="addMediaFile"
+          @sticker-upload-failed="uploadFailed"
         >
           <textarea
             ref="textarea"
@@ -160,14 +165,12 @@
             @upload-failed="uploadFailed"
           />
           <div
-            v-if="stickersAvailable"
-            class="sticker-icon"
+            class="emoji-icon"
           >
             <i
-              :title="$t('stickers.add_sticker')"
-              class="icon-picture btn btn-default"
-              :class="{ selected: stickerPickerVisible }"
-              @click="toggleStickerPicker"
+              :title="$t('emoji.add_emoji')"
+              class="icon-smile btn btn-default"
+              @click.stop.prevent="showEmoji"
             />
           </div>
           <div
@@ -260,11 +263,6 @@
         <label for="filesSensitive">{{ $t('post_status.attachments_sensitive') }}</label>
       </div>
     </form>
-    <sticker-picker
-      v-if="stickerPickerVisible"
-      ref="stickerPicker"
-      @uploaded="addMediaFile"
-    />
   </div>
 </template>
 
@@ -327,7 +325,7 @@
     }
   }
 
-  .poll-icon, .sticker-icon {
+  .poll-icon, .emoji-icon {
     font-size: 26px;
     flex: 1;
 
@@ -337,7 +335,7 @@
     }
   }
 
-  .sticker-icon {
+  .emoji-icon {
     flex: 0;
     min-width: 50px;
   }
diff --git a/src/components/sticker_picker/sticker_picker.js b/src/components/sticker_picker/sticker_picker.js
index a6dcded3..8daf3f07 100644
--- a/src/components/sticker_picker/sticker_picker.js
+++ b/src/components/sticker_picker/sticker_picker.js
@@ -3,9 +3,9 @@ import statusPosterService from '../../services/status_poster/status_poster.serv
 import TabSwitcher from '../tab_switcher/tab_switcher.js'
 
 const StickerPicker = {
-  components: [
+  components: {
     TabSwitcher
-  ],
+  },
   data () {
     return {
       meta: {
diff --git a/src/components/sticker_picker/sticker_picker.vue b/src/components/sticker_picker/sticker_picker.vue
index 938204c8..323855b9 100644
--- a/src/components/sticker_picker/sticker_picker.vue
+++ b/src/components/sticker_picker/sticker_picker.vue
@@ -2,32 +2,30 @@
   <div
     class="sticker-picker"
   >
-    <div
-      class="sticker-picker-panel"
+    <tab-switcher
+      class="tab-switcher"
+      :render-only-focused="true"
+      scrollable-tabs
     >
-      <tab-switcher
-        :render-only-focused="true"
+      <div
+        v-for="stickerpack in pack"
+        :key="stickerpack.path"
+        :image-tooltip="stickerpack.meta.title"
+        :image="stickerpack.path + stickerpack.meta.tabIcon"
+        class="sticker-picker-content"
       >
         <div
-          v-for="stickerpack in pack"
-          :key="stickerpack.path"
-          :image-tooltip="stickerpack.meta.title"
-          :image="stickerpack.path + stickerpack.meta.tabIcon"
-          class="sticker-picker-content"
+          v-for="sticker in stickerpack.meta.stickers"
+          :key="sticker"
+          class="sticker"
+          @click.stop.prevent="pick(stickerpack.path + sticker, stickerpack.meta.title)"
         >
-          <div
-            v-for="sticker in stickerpack.meta.stickers"
-            :key="sticker"
-            class="sticker"
-            @click="pick(stickerpack.path + sticker, stickerpack.meta.title)"
+          <img
+            :src="stickerpack.path + sticker"
           >
-            <img
-              :src="stickerpack.path + sticker"
-            >
-          </div>
         </div>
-      </tab-switcher>
-    </div>
+      </div>
+    </tab-switcher>
   </div>
 </template>
 
@@ -37,22 +35,24 @@
 @import '../../_variables.scss';
 
 .sticker-picker {
-  .sticker-picker-panel {
-    display: inline-block;
-    width: 100%;
-    .sticker-picker-content {
-      max-height: 300px;
-      overflow-y: scroll;
-      overflow-x: auto;
-      .sticker {
-        display: inline-block;
-        width: 20%;
-        height: 20%;
-        img {
-          width: 100%;
-          &:hover {
-            filter: drop-shadow(0 0 5px var(--link, $fallback--link));
-          }
+  width: 100%;
+  position: relative;
+  .tab-switcher {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+  }
+  .sticker-picker-content {
+    .sticker {
+      display: inline-block;
+      width: 20%;
+      height: 20%;
+      img {
+        width: 100%;
+        &:hover {
+          filter: drop-shadow(0 0 5px var(--link, $fallback--link));
         }
       }
     }
diff --git a/src/components/tab_switcher/tab_switcher.js b/src/components/tab_switcher/tab_switcher.js
index a5fe019c..99428044 100644
--- a/src/components/tab_switcher/tab_switcher.js
+++ b/src/components/tab_switcher/tab_switcher.js
@@ -4,7 +4,26 @@ import './tab_switcher.scss'
 
 export default Vue.component('tab-switcher', {
   name: 'TabSwitcher',
-  props: ['renderOnlyFocused', 'onSwitch', 'customActive'],
+  props: {
+    renderOnlyFocused: {
+      required: false,
+      type: Boolean,
+      default: false
+    },
+    onSwitch: {
+      required: false,
+      type: Function
+    },
+    customActive: {
+      required: false,
+      type: String
+    },
+    scrollableTabs: {
+      required: false,
+      type: Boolean,
+      default: false
+    }
+  },
   data () {
     return {
       active: this.$slots.default.findIndex(_ => _.tag)
@@ -18,7 +37,8 @@ export default Vue.component('tab-switcher', {
   },
   methods: {
     activateTab (index, dataset) {
-      return () => {
+      return (e) => {
+        e.preventDefault()
         if (typeof this.onSwitch === 'function') {
           this.onSwitch.call(null, index, this.$slots.default[index].elm.dataset)
         }
@@ -85,7 +105,7 @@ export default Vue.component('tab-switcher', {
         <div class="tabs">
           {tabs}
         </div>
-        <div class="contents">
+        <div class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}>
           {contents}
         </div>
       </div>
diff --git a/src/components/tab_switcher/tab_switcher.scss b/src/components/tab_switcher/tab_switcher.scss
index 4eeb42e0..3e5eacd5 100644
--- a/src/components/tab_switcher/tab_switcher.scss
+++ b/src/components/tab_switcher/tab_switcher.scss
@@ -1,10 +1,21 @@
 @import '../../_variables.scss';
 
 .tab-switcher {
+  display: flex;
+  flex-direction: column;
+
   .contents {
+    flex: 1 0 auto;
+    min-height: 0px;
+
     .hidden {
       display: none;
     }
+
+    &.scrollable-tabs {
+      flex-basis: 0;
+      overflow-y: auto;
+    }
   }
   .tabs {
     display: flex;
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 60a3e284..13f7168f 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -106,8 +106,13 @@
     "expired": "Poll ended {0} ago",
     "not_enough_options": "Too few unique options in poll"
   },
-  "stickers": {
-    "add_sticker": "Add Sticker"
+  "emoji": {
+    "stickers": "Stickers",
+    "emoji": "Emoji",
+    "search_emoji": "Search for an emoji",
+    "add_emoji": "Insert emoji",
+    "custom": "Custom emoji",
+    "unicode": "Unicode emoji"
   },
   "interactions": {
     "favs_repeats": "Repeats and Favorites",

From 66a34b7ecf65ded39882b9e4e7df9bbd2067afc3 Mon Sep 17 00:00:00 2001
From: rinpatch <rinpatch@sdf.org>
Date: Wed, 4 Sep 2019 12:19:39 +0300
Subject: [PATCH 21/81] Properly detect thread-muted posts and set `with_muted`
 when fetching notifications

---
 src/components/status/status.js                              | 2 +-
 .../notifications_fetcher/notifications_fetcher.service.js   | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/components/status/status.js b/src/components/status/status.js
index 502d9583..d037f150 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -117,7 +117,7 @@ const Status = {
 
       return hits
     },
-    muted () { return !this.unmuted && (this.status.user.muted || this.muteWordHits.length > 0) },
+    muted () { return !this.unmuted && (this.status.muted || this.muteWordHits.length > 0) },
     hideFilteredStatuses () {
       return typeof this.$store.state.config.hideFilteredStatuses === 'undefined'
         ? this.$store.state.instance.hideFilteredStatuses
diff --git a/src/services/notifications_fetcher/notifications_fetcher.service.js b/src/services/notifications_fetcher/notifications_fetcher.service.js
index f9ec3f6e..b6c4cf80 100644
--- a/src/services/notifications_fetcher/notifications_fetcher.service.js
+++ b/src/services/notifications_fetcher/notifications_fetcher.service.js
@@ -10,6 +10,11 @@ const fetchAndUpdate = ({ store, credentials, older = false }) => {
   const args = { credentials }
   const rootState = store.rootState || store.state
   const timelineData = rootState.statuses.notifications
+  const hideMutedPosts = typeof rootState.config.hideMutedPosts === 'undefined'
+    ? rootState.instance.hideMutedPosts
+    : rootState.config.hideMutedPosts
+
+  args['withMuted'] = !hideMutedPosts
 
   args['timeline'] = 'notifications'
   if (older) {

From 1a5a7bbebf45e93dbd47a99bb4eb05a5be5979f1 Mon Sep 17 00:00:00 2001
From: rinpatch <rinpatch@sdf.org>
Date: Wed, 4 Sep 2019 21:11:13 +0300
Subject: [PATCH 22/81] Set thread_muted for all statuses with the same
 conversation id on status mute/unmute

---
 src/components/extra_buttons/extra_buttons.vue         |  4 ++--
 src/components/status/status.js                        |  2 +-
 src/modules/statuses.js                                | 10 ++++++----
 .../entity_normalizer/entity_normalizer.service.js     |  1 +
 4 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/components/extra_buttons/extra_buttons.vue b/src/components/extra_buttons/extra_buttons.vue
index ed0f3aa4..6781a4f8 100644
--- a/src/components/extra_buttons/extra_buttons.vue
+++ b/src/components/extra_buttons/extra_buttons.vue
@@ -10,14 +10,14 @@
     <div slot="popover">
       <div class="dropdown-menu">
         <button
-          v-if="canMute && !status.muted"
+          v-if="canMute && !status.thread_muted"
           class="dropdown-item dropdown-item-icon"
           @click.prevent="muteConversation"
         >
           <i class="icon-eye-off" /><span>{{ $t("status.mute_conversation") }}</span>
         </button>
         <button
-          v-if="canMute && status.muted"
+          v-if="canMute && status.thread_muted"
           class="dropdown-item dropdown-item-icon"
           @click.prevent="unmuteConversation"
         >
diff --git a/src/components/status/status.js b/src/components/status/status.js
index d037f150..b72d2f58 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -117,7 +117,7 @@ const Status = {
 
       return hits
     },
-    muted () { return !this.unmuted && (this.status.muted || this.muteWordHits.length > 0) },
+    muted () { return !this.unmuted && (this.status.user.muted || this.status.thread_muted || this.muteWordHits.length > 0) },
     hideFilteredStatuses () {
       return typeof this.$store.state.config.hideFilteredStatuses === 'undefined'
         ? this.$store.state.instance.hideFilteredStatuses
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index 4356d0a7..9ba32976 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -426,9 +426,11 @@ export const mutations = {
       newStatus.favoritedBy.push(user)
     }
   },
-  setMuted (state, status) {
+  setMutedStatus (state, status) {
     const newStatus = state.allStatusesObject[status.id]
-    newStatus.muted = status.muted
+    newStatus.thread_muted = status.thread_muted
+
+    state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })
   },
   setRetweeted (state, { status, value }) {
     const newStatus = state.allStatusesObject[status.id]
@@ -566,11 +568,11 @@ const statuses = {
     },
     muteConversation ({ rootState, commit }, statusId) {
       return rootState.api.backendInteractor.muteConversation(statusId)
-        .then((status) => commit('setMuted', status))
+        .then((status) => commit('setMutedStatus', status))
     },
     unmuteConversation ({ rootState, commit }, statusId) {
       return rootState.api.backendInteractor.unmuteConversation(statusId)
-        .then((status) => commit('setMuted', status))
+        .then((status) => commit('setMutedStatus', status))
     },
     retweet ({ rootState, commit }, status) {
       // Optimistic retweeting...
diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js
index 6cc1851d..7438cd90 100644
--- a/src/services/entity_normalizer/entity_normalizer.service.js
+++ b/src/services/entity_normalizer/entity_normalizer.service.js
@@ -224,6 +224,7 @@ export const parseStatus = (data) => {
       output.statusnet_conversation_id = data.pleroma.conversation_id
       output.is_local = pleroma.local
       output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct
+      output.thread_muted = pleroma.thread_muted
     } else {
       output.text = data.content
       output.summary = data.spoiler_text

From b33667a74342a9fc91386d12763b5c2f1101868a Mon Sep 17 00:00:00 2001
From: rinpatch <rinpatch@sdf.org>
Date: Wed, 4 Sep 2019 22:17:29 +0300
Subject: [PATCH 23/81] Avoid iterating over statuses to set thread_muted if
 the backend does not support the extension

---
 src/modules/statuses.js | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index 9ba32976..918065d2 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -430,7 +430,9 @@ export const mutations = {
     const newStatus = state.allStatusesObject[status.id]
     newStatus.thread_muted = status.thread_muted
 
-    state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })
+    if (newStatus.thread_muted !== undefined) {
+      state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })
+    }
   },
   setRetweeted (state, { status, value }) {
     const newStatus = state.allStatusesObject[status.id]

From f48d12b4bcf022d25d731d8b21bb8904cd09285e Mon Sep 17 00:00:00 2001
From: tarteka <info@tarteka.net>
Date: Fri, 6 Sep 2019 14:24:37 +0200
Subject: [PATCH 24/81] update eu translate

---
 src/i18n/eu.json | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/i18n/eu.json b/src/i18n/eu.json
index 1efaa310..d3925126 100644
--- a/src/i18n/eu.json
+++ b/src/i18n/eu.json
@@ -508,7 +508,9 @@
     "pinned": "Ainguratuta",
     "delete_confirm": "Mezu hau benetan ezabatu nahi duzu?",
     "reply_to": "Erantzun",
-    "replies_list": "Erantzunak:"
+    "replies_list": "Erantzunak:",
+    "mute_conversation": "Elkarrizketa isilarazi",
+    "unmute_conversation": "Elkarrizketa aktibatu"
   },
   "user_card": {
     "approve": "Onartu",
@@ -606,5 +608,16 @@
     "person_talking": "{count} pertsona hitzegiten",
     "people_talking": "{count} gende hitzegiten",
     "no_results": "Emaitzarik ez"
+  },
+  "password_reset": {
+    "forgot_password": "Pasahitza ahaztua?",
+    "password_reset": "Pasahitza berrezarri",
+    "instruction": "Idatzi zure helbide elektronikoa edo erabiltzaile izena. Pasahitza berrezartzeko esteka bidaliko dizugu.",
+    "placeholder": "Zure e-posta edo erabiltzaile izena",
+    "check_email": "Begiratu zure posta elektronikoa pasahitza berrezarri ahal izateko.",
+    "return_home": "Itzuli hasierara",
+    "not_found": "Ezin izan dugu helbide elektroniko edo erabiltzaile hori aurkitu.",
+    "too_many_requests": "Saiakera gehiegi burutu ditzu, saiatu berriro geroxeago.",
+    "password_reset_disabled": "Pasahitza berrezartzea debekatuta dago. Mesedez, jarri harremanetan instantzia administratzailearekin."
   }
 }
\ No newline at end of file

From 1167bafb1977ddbd24536878d36798965f7c41a9 Mon Sep 17 00:00:00 2001
From: tarteka <info@tarteka.net>
Date: Fri, 6 Sep 2019 14:58:20 +0200
Subject: [PATCH 25/81] Update es translate

---
 src/i18n/es.json | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/i18n/es.json b/src/i18n/es.json
index 009599f5..91c7f383 100644
--- a/src/i18n/es.json
+++ b/src/i18n/es.json
@@ -508,7 +508,9 @@
     "pinned": "Fijado",
     "delete_confirm": "¿Realmente quieres borrar la publicación?",
     "reply_to": "Respondiendo a",
-    "replies_list": "Respuestas:"
+    "replies_list": "Respuestas:",
+    "mute_conversation": "Silenciar la conversación",
+    "unmute_conversation": "Mostrar la conversación"
   },
   "user_card": {
     "approve": "Aprobar",
@@ -606,5 +608,16 @@
     "person_talking": "{count} personas hablando",
     "people_talking": "{count} gente hablando",
     "no_results": "Sin resultados"
+  },
+  "password_reset": {
+    "forgot_password": "¿Contraseña olvidada?",
+    "password_reset": "Restablecer la contraseña",
+    "instruction": "Ingrese su dirección de correo electrónico o nombre de usuario. Le enviaremos un enlace para restablecer su contraseña.",
+    "placeholder": "Su correo electrónico o nombre de usuario",
+    "check_email": "Revise su correo electrónico para obtener un enlace para restablecer su contraseña.",
+    "return_home": "Volver a la página de inicio",
+    "not_found": "No pudimos encontrar ese correo electrónico o nombre de usuario.",
+    "too_many_requests": "Has alcanzado el límite de intentos, vuelve a intentarlo más tarde.",
+    "password_reset_disabled": "El restablecimiento de contraseñas está deshabilitado. Póngase en contacto con el administrador de su instancia."
   }
 }
\ No newline at end of file

From 17a97ee6f5bc60c19be0d9d9e9e8e2f1c28be672 Mon Sep 17 00:00:00 2001
From: tarteka <info@tarteka.net>
Date: Sat, 7 Sep 2019 09:00:25 +0200
Subject: [PATCH 26/81] fix some translates

---
 src/i18n/eu.json | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/i18n/eu.json b/src/i18n/eu.json
index d3925126..6cbdb115 100644
--- a/src/i18n/eu.json
+++ b/src/i18n/eu.json
@@ -88,7 +88,7 @@
     "followed_you": "Zu jarraitzen zaitu",
     "load_older": "Kargatu jakinarazpen zaharragoak",
     "notifications": "Jakinarazpenak",
-    "read": "Irakurri!",
+    "read": "Irakurrita!",
     "repeated_you": "zure mezua errepikatu du",
     "no_more_notifications": "Ez dago jakinarazpen gehiago"
   },
@@ -116,7 +116,7 @@
   },
   "post_status": {
     "new_status": "Mezu berri bat idatzi",
-    "account_not_locked_warning": "Zure kontua ez dago {0}. Edozeinek jarraitzen hastearekin, zure mezuak irakur dezake.",
+    "account_not_locked_warning": "Zure kontua ez dago {0}. Edozeinek jarraitzen hastearekin, zure mezuak irakur ditzake.",
     "account_not_locked_warning_link": "Blokeatuta",
     "attachments_sensitive": "Nabarmendu eranskinak hunkigarri gisa ",
     "content_type": {
@@ -136,10 +136,10 @@
       "unlisted": "Mezu hau ez da argitaratuko Denbora-lerro Publikoan ezta Ezagutzen den Sarean"
     },
     "scope": {
-      "direct": "Zuzena - Bidali aipatutako erabiltzaileei besterik ez",
-      "private": "Jarraitzaileentzako bakarrik- Bidali jarraitzaileentzat bakarrik",
-      "public": "Publickoa - Bistaratu denbora-lerro publikoetan",
-      "unlisted": "Zerrendatu gabea - ez bidali denbora-lerro publikoetan"
+      "direct": "Zuzena: Bidali aipatutako erabiltzaileei besterik ez",
+      "private": "Jarraitzaileentzako bakarrik: Bidali jarraitzaileentzat bakarrik",
+      "public": "Publikoa: Bistaratu denbora-lerro publikoetan",
+      "unlisted": "Zerrendatu gabea: ez bidali denbora-lerro publikoetara"
     }
   },
   "registration": {
@@ -276,7 +276,7 @@
     "no_blocks": "Ez daude erabiltzaile blokeatutak",
     "no_mutes": "Ez daude erabiltzaile mututuak",
     "hide_follows_description": "Ez erakutsi nor jarraitzen ari naizen",
-    "hide_followers_description": "Ez erakutsi nor ari de ni jarraitzen",
+    "hide_followers_description": "Ez erakutsi nor ari den ni jarraitzen",
     "show_admin_badge": "Erakutsi Administratzaile etiketa nire profilan",
     "show_moderator_badge": "Erakutsi Moderatzaile etiketa nire profilan",
     "nsfw_clickthrough": "Gaitu klika hunkigarri eranskinak ezkutatzeko",
@@ -456,8 +456,8 @@
   "time": {
     "day": "{0} egun",
     "days": "{0} egun",
-    "day_short": "{0}d",
-    "days_short": "{0}d",
+    "day_short": "{0}e",
+    "days_short": "{0}e",
     "hour": "{0} ordu",
     "hours": "{0} ordu",
     "hour_short": "{0}o",
@@ -492,7 +492,7 @@
     "conversation": "Elkarrizketa",
     "error_fetching": "Errorea eguneraketak eskuratzen",
     "load_older": "Kargatu mezu zaharragoak",
-    "no_retweet_hint": "Mezu hau jarraitzailentzko bakarrik markatuta dago eta ezin da errepikatu",
+    "no_retweet_hint": "Mezu hau jarraitzailentzako bakarrik markatuta dago eta ezin da errepikatu",
     "repeated": "Errepikatuta",
     "show_new": "Berriena erakutsi",
     "up_to_date": "Eguneratuta",
@@ -507,7 +507,7 @@
     "unpin": "Aingura ezeztatu profilatik",
     "pinned": "Ainguratuta",
     "delete_confirm": "Mezu hau benetan ezabatu nahi duzu?",
-    "reply_to": "Erantzun",
+    "reply_to": "Erantzuten",
     "replies_list": "Erantzunak:",
     "mute_conversation": "Elkarrizketa isilarazi",
     "unmute_conversation": "Elkarrizketa aktibatu"
@@ -583,7 +583,7 @@
   },
   "tool_tip": {
     "media_upload": "Multimedia igo",
-    "repeat": "Erreplikatu",
+    "repeat": "Errepikatu",
     "reply": "Erantzun",
     "favorite": "Gogokoa",
     "user_settings": "Erabiltzaile ezarpenak"

From 5026d3719ad4605fd24e8961be8b0fbeab5f4796 Mon Sep 17 00:00:00 2001
From: tarteka <info@tarteka.net>
Date: Sat, 7 Sep 2019 09:07:34 +0200
Subject: [PATCH 27/81] fix some translates

---
 src/i18n/eu.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/i18n/eu.json b/src/i18n/eu.json
index 6cbdb115..0120acc5 100644
--- a/src/i18n/eu.json
+++ b/src/i18n/eu.json
@@ -228,7 +228,7 @@
     "avatar_size_instruction": "Avatar irudien gomendatutako gutxieneko tamaina 150x150 pixel dira.",
     "export_theme": "Gorde aurre-ezarpena",
     "filtering": "Iragazten",
-    "filtering_explanation": "Hitz hauek dituzten muzu guztiak isilduak izango dira. Lerro bakoitzeko bat",
+    "filtering_explanation": "Hitz hauek dituzten mezu guztiak isilduak izango dira. Lerro bakoitzeko bat",
     "follow_export": "Jarraitzen dituzunak esportatu",
     "follow_export_button": "Esportatu zure jarraitzaileak csv fitxategi batean",
     "follow_import": "Jarraitzen dituzunak inportatu",

From 14df84d89bfc58f564697b7d72d7c66134c64697 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 8 Sep 2019 15:51:17 +0300
Subject: [PATCH 28/81] fixed some bugs, added spam mode, minor collateral
 fixes

---
 src/components/emoji_input/emoji_input.js     | 28 ++++++++++++----
 src/components/emoji_picker/emoji_picker.js   |  7 ++--
 src/components/emoji_picker/emoji_picker.scss | 33 +++++++++++++++----
 src/components/emoji_picker/emoji_picker.vue  | 16 +++++++--
 .../post_status_form/post_status_form.js      |  2 +-
 .../post_status_form/post_status_form.vue     |  2 +-
 src/components/status/status.vue              |  2 +-
 src/components/user_panel/user_panel.vue      |  2 +-
 src/i18n/en.json                              |  1 +
 9 files changed, 69 insertions(+), 24 deletions(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 5ff27b20..b1640753 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -77,7 +77,9 @@ const EmojiInput = {
       caret: 0,
       focused: false,
       blurTimeout: null,
-      showPicker: false
+      showPicker: false,
+      spamMode: false,
+      disableClickOutside: false
     }
   },
   components: {
@@ -100,7 +102,7 @@ const EmojiInput = {
         }))
     },
     showSuggestions () {
-      return this.focused && this.suggestions && this.suggestions.length > 0
+      return this.focused && this.suggestions && this.suggestions.length > 0 && !this.showPicker
     },
     textAtCaret () {
       return (this.wordAtCaret || {}).word || ''
@@ -142,6 +144,13 @@ const EmojiInput = {
   methods: {
     triggerShowPicker () {
       this.showPicker = true
+      // This temporarily disables "click outside" handler
+      // since external trigger also means click originates
+      // from outside, thus preventing picker from opening
+      this.disableClickOutside = true
+      setTimeout(() => {
+        this.disableClickOutside = false
+      }, 0)
     },
     togglePicker () {
       this.showPicker = !this.showPicker
@@ -151,12 +160,13 @@ const EmojiInput = {
       this.$emit('input', newValue)
       this.caret = 0
     },
-    insert (insertion) {
+    insert ({ insertion, spamMode }) {
       const newValue = [
         this.value.substring(0, this.caret),
         insertion,
         this.value.substring(this.caret)
       ].join('')
+      this.spamMode = spamMode
       this.$emit('input', newValue)
       const position = this.caret + insertion.length
 
@@ -191,7 +201,7 @@ const EmojiInput = {
     },
     cycleBackward (e) {
       const len = this.suggestions.length || 0
-      if (len > 0) {
+      if (len > 1) {
         this.highlighted -= 1
         if (this.highlighted < 0) {
           this.highlighted = this.suggestions.length - 1
@@ -203,7 +213,7 @@ const EmojiInput = {
     },
     cycleForward (e) {
       const len = this.suggestions.length || 0
-      if (len > 0) {
+      if (len > 1) {
         this.highlighted += 1
         if (this.highlighted >= len) {
           this.highlighted = 0
@@ -234,7 +244,10 @@ const EmojiInput = {
         this.blurTimeout = null
       }
 
-      this.showPicker = false
+      console.log(this.spamMode)
+      if (!this.spamMode) {
+        this.showPicker = false
+      }
       this.focused = true
       this.setCaret(e)
       this.resize()
@@ -280,7 +293,8 @@ const EmojiInput = {
       this.resize()
       this.$emit('input', e.target.value)
     },
-    onClickOutside () {
+    onClickOutside (e) {
+      if (this.disableClickOutside) return
       this.showPicker = false
     },
     onStickerUploaded (e) {
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 0a64f759..bce5026e 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -13,9 +13,11 @@ const EmojiPicker = {
   },
   data () {
     return {
+      labelKey: String(Math.random() * 100000),
       keyword: '',
       activeGroup: 'custom',
-      showingStickers: false
+      showingStickers: false,
+      spamMode: false
     }
   },
   components: {
@@ -24,8 +26,7 @@ const EmojiPicker = {
   methods: {
     onEmoji (emoji) {
       const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement
-      this.$emit('emoji', ` ${value} `)
-      this.open = false
+      this.$emit('emoji', { insertion: ` ${value} `, spamMode: this.spamMode })
     },
     highlight (key) {
       const ref = this.$refs['group-' + key]
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 6c13e82b..079eb362 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -10,29 +10,48 @@
   margin: 0 !important;
   z-index: 1;
 
-  .panel-body {
+  .spam-mode {
+    padding: 7px;
+    line-height: normal;
+  }
+  .spam-mode-label {
+    padding: 7px;
+  }
+
+  .heading {
+    display: flex;
+    height: 32px;
+    padding: 10px 7px 5px;
+  }
+
+  .content {
     display: flex;
     flex-direction: column;
     flex: 1 1 0;
     min-height: 0px;
   }
 
+  .emoji-tabs {
+    flex-grow: 1;
+  }
+
   .additional-tabs {
     border-left: 1px solid;
     border-left-color: $fallback--icon;
     border-left-color: var(--icon, $fallback--icon);
-    padding-left: 5px;
+    padding-left: 7px;
     flex: 0 0 0;
   }
 
-  .emoji-tabs {
-    flex: 1 1 0;
-  }
-
   .additional-tabs,
   .emoji-tabs {
+    display: block;
+    min-width: 0;
+    flex-basis: auto;
+    flex-shrink: 1;
+
     &-item {
-      padding: 0 5px;
+      padding: 0 7px;
       cursor: pointer;
       font-size: 24px;
 
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 12b1569e..901520aa 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -1,6 +1,6 @@
 <template>
-  <div class="emoji-picker panel panel-default">
-    <div class="panel-heading">
+  <div class="emoji-picker panel panel-default panel-body">
+    <div class="heading">
       <span class="emoji-tabs">
         <span
           v-for="group in emojis"
@@ -30,7 +30,7 @@
         </span>
       </span>
     </div>
-    <div class="panel-body">
+    <div class="content">
       <div
         class="emoji-content"
         :class="{hidden: showingStickers}"
@@ -74,6 +74,16 @@
             </span>
           </div>
         </div>
+        <div
+          class="spam-mode"
+          >
+          <input
+            :id="labelKey + 'spam-mode'"
+            v-model="spamMode"
+            type="checkbox"
+            >
+          <label class="spam-mode-label" :for="labelKey + 'spam-mode'">{{ $t('emoji.spam') }}</label>
+        </div>
       </div>
       <div
         v-if="showingStickers"
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 1359e75a..d468be76 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -282,7 +282,7 @@ const PostStatusForm = {
         target.style.height = null
       }
     },
-    showEmoji () {
+    showEmojiPicker () {
       this.$refs['textarea'].focus()
       this.$refs['emoji-input'].triggerShowPicker()
     },
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index ad2c2218..026cb8fe 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -170,7 +170,7 @@
             <i
               :title="$t('emoji.add_emoji')"
               class="icon-smile btn btn-default"
-              @click.stop.prevent="showEmoji"
+              @click="showEmojiPicker"
             />
           </div>
           <div
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 64218f6e..771615f3 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -413,7 +413,7 @@
         v-if="replying"
         class="container"
       >
-        <post-status-form
+        <PostStatusForm
           class="reply-body"
           :reply-to="status.id"
           :attentions="status.attentions"
diff --git a/src/components/user_panel/user_panel.vue b/src/components/user_panel/user_panel.vue
index c92630e3..5cdb2914 100644
--- a/src/components/user_panel/user_panel.vue
+++ b/src/components/user_panel/user_panel.vue
@@ -11,7 +11,7 @@
         rounded="top"
       />
       <div class="panel-footer">
-        <post-status-form v-if="user" />
+        <PostStatusForm v-if="user" />
       </div>
     </div>
     <auth-form
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 12920b92..e74469ed 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -109,6 +109,7 @@
   "emoji": {
     "stickers": "Stickers",
     "emoji": "Emoji",
+    "spam": "Keep open after adding emoji",
     "search_emoji": "Search for an emoji",
     "add_emoji": "Insert emoji",
     "custom": "Custom emoji",

From 94afc5ee1963464fb0fd7c9a31266b37c924f3a3 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 8 Sep 2019 15:57:49 +0300
Subject: [PATCH 29/81] fixed scroll when switching back to emoji

---
 src/components/emoji_picker/emoji_picker.scss | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 079eb362..e3a83bdd 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -83,7 +83,9 @@
       min-height: 0;
 
       &.hidden {
-        display: none
+        opacity: 0;
+        pointer-events: none;
+        position: absolute;
       }
     }
   }

From 83f45167b61d5f10f00ea8e3e3e946c72e5fc33f Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 8 Sep 2019 16:56:54 +0300
Subject: [PATCH 30/81] added emoji zoom for picker

---
 src/components/emoji_picker/emoji_picker.js   |  8 +++++++
 src/components/emoji_picker/emoji_picker.scss | 18 +++++++++++++++
 src/components/emoji_picker/emoji_picker.vue  | 22 ++++++++++++++++---
 3 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index bce5026e..03870a99 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -17,6 +17,7 @@ const EmojiPicker = {
       keyword: '',
       activeGroup: 'custom',
       showingStickers: false,
+      zoomEmoji: false,
       spamMode: false
     }
   },
@@ -60,6 +61,13 @@ const EmojiPicker = {
     },
     onStickerUploadFailed (e) {
       this.$emit('sticker-upload-failed', e)
+    },
+    setZoomEmoji (e, emoji) {
+      this.zoomEmoji = emoji
+      const { x, y } = e.target.getBoundingClientRect()
+      console.log(e.target)
+      this.$refs['zoom-portal'].style.left = (x - 32) + 'px'
+      this.$refs['zoom-portal'].style.top = (y - 32) + 'px'
     }
   },
   watch: {
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index e3a83bdd..872af2de 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -10,6 +10,20 @@
   margin: 0 !important;
   z-index: 1;
 
+  .zoom-portal {
+    position: fixed;
+    pointer-events: none;
+    width: 96px;
+    height: 96px;
+    font-size: 96px;
+    line-height: 96px;
+    z-index: 10;
+    img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+
   .spam-mode {
     padding: 7px;
     line-height: normal;
@@ -135,6 +149,10 @@
 
       cursor: pointer;
 
+      &:hover {
+        opacity: 0
+      }
+
       img {
         max-width: 100%;
         max-height: 100%;
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 901520aa..5a8961d2 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -65,12 +65,16 @@
               :title="emoji.displayText"
               class="emoji-item"
               @click.stop.prevent="onEmoji(emoji)"
-            >
-              <span v-if="!emoji.imageUrl">{{ emoji.replacement }}</span>
+              @mouseenter="setZoomEmoji($event, emoji)"
+              @mouseleave="setZoomEmoji($event, false)"
+              >
+              <span v-if="!emoji.imageUrl">
+                {{ emoji.replacement }}
+              </span>
               <img
                 v-else
                 :src="emoji.imageUrl"
-              >
+                >
             </span>
           </div>
         </div>
@@ -95,6 +99,18 @@
         />
       </div>
     </div>
+    <div ref="zoom-portal" class="zoom-portal">
+      <span v-if="zoomEmoji">
+        <span v-if="!zoomEmoji.imageUrl">
+          {{ zoomEmoji.replacement }}
+        </span>
+        <img
+          v-else
+          :key="zoomEmoji.imageUrl"
+          :src="zoomEmoji.imageUrl"
+          >
+      </span>
+    </div>
   </div>
 </template>
 

From 4f88bb4ea1ed6c4b9fa0ee6a388dd9ba19ee910e Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 8 Sep 2019 17:01:28 +0300
Subject: [PATCH 31/81] scale emoji on hover

---
 src/components/status/status.vue | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 771615f3..5e849dd7 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -705,6 +705,14 @@ $status-margin: 0.75em;
       &.emoji {
         width: 32px;
         height: 32px;
+        transition: transform 200ms;
+        transform: scale(1);
+        z-index: 1;
+
+        &:hover {
+          transform: scale(3);
+          z-index: 2;
+        }
       }
     }
 

From 2237da01513408ae2b2b8fbf1ea519dee6f82d33 Mon Sep 17 00:00:00 2001
From: HJ <30-hj@users.noreply.git.pleroma.social>
Date: Sun, 8 Sep 2019 14:08:39 +0000
Subject: [PATCH 32/81] Apply suggestion to
 src/components/emoji_input/emoji_input.js

---
 src/components/emoji_input/emoji_input.js | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index b1640753..c74c531b 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -244,7 +244,6 @@ const EmojiInput = {
         this.blurTimeout = null
       }
 
-      console.log(this.spamMode)
       if (!this.spamMode) {
         this.showPicker = false
       }

From 7360a4d9efe278aef672e96320f7161ad4f0d0f2 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 8 Sep 2019 17:11:45 +0300
Subject: [PATCH 33/81] fix aspect

---
 src/components/emoji_picker/emoji_picker.scss | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 872af2de..7e76aa52 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -19,6 +19,7 @@
     line-height: 96px;
     z-index: 10;
     img {
+      object-fit: contain;
       width: 100%;
       height: 100%;
     }
@@ -154,6 +155,7 @@
       }
 
       img {
+        object-fit: contain;
         max-width: 100%;
         max-height: 100%;
       }

From 9146bee7aa7229f041bcc77814d9fa40809329a6 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 8 Sep 2019 21:18:05 +0300
Subject: [PATCH 34/81] better hitbox for status emoji

---
 src/components/status/status.vue              | 23 ++++++++++++++-----
 .../entity_normalizer.service.js              |  2 +-
 .../entity_normalizer.spec.js                 |  4 ++--
 3 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 5e849dd7..a0756ae4 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -696,6 +696,22 @@ $status-margin: 0.75em;
     line-height: 1.4em;
     white-space: pre-wrap;
 
+    .emoji-container {
+      display: inline-block;
+      width: 32px;
+      height: 32px;
+      z-index: 1;
+
+      &:hover {
+        z-index: 2;
+
+        .emoji {
+          transform: scale(3);
+          z-index: 2;
+        }
+      }
+    }
+
     img, video {
       max-width: 100%;
       max-height: 400px;
@@ -707,12 +723,7 @@ $status-margin: 0.75em;
         height: 32px;
         transition: transform 200ms;
         transform: scale(1);
-        z-index: 1;
-
-        &:hover {
-          transform: scale(3);
-          z-index: 2;
-        }
+        pointer-events: none;
       }
     }
 
diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js
index 6cc1851d..17b4a6e0 100644
--- a/src/services/entity_normalizer/entity_normalizer.service.js
+++ b/src/services/entity_normalizer/entity_normalizer.service.js
@@ -194,7 +194,7 @@ export const addEmojis = (string, emojis) => {
   return emojis.reduce((acc, emoji) => {
     return acc.replace(
       new RegExp(`:${emoji.shortcode}:`, 'g'),
-      `<img src='${emoji.url}' alt='${emoji.shortcode}' title='${emoji.shortcode}' class='emoji' />`
+      `<span class='emoji-container'><img src='${emoji.url}' alt='${emoji.shortcode}' title='${emoji.shortcode}' class='emoji' /></span>`
     )
   }, string)
 }
diff --git a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js
index 20e03cb0..24aef5cd 100644
--- a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js
+++ b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js
@@ -323,9 +323,9 @@ describe('API Entities normalizer', () => {
 
   describe('MastoAPI emoji adder', () => {
     const emojis = makeMockEmojiMasto()
-    const imageHtml = '<img src="https://example.com/image.png" alt="image" title="image" class="emoji" />'
+    const imageHtml = '<span class="emoji-container"><img src="https://example.com/image.png" alt="image" title="image" class="emoji" /></span>'
       .replace(/"/g, '\'')
-    const thinkHtml = '<img src="https://example.com/think.png" alt="thinking" title="thinking" class="emoji" />'
+    const thinkHtml = '<span class="emoji-container"><img src="https://example.com/think.png" alt="thinking" title="thinking" class="emoji" /></span>'
       .replace(/"/g, '\'')
 
     it('correctly replaces shortcodes in supplied string', () => {

From 96512939564aeb00660acd10a409879c1bfb33e4 Mon Sep 17 00:00:00 2001
From: HJ <30-hj@users.noreply.git.pleroma.social>
Date: Mon, 9 Sep 2019 19:42:33 +0000
Subject: [PATCH 35/81] Apply suggestion to
 src/components/emoji_picker/emoji_picker.js

---
 src/components/emoji_picker/emoji_picker.js | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 03870a99..d9d41bf6 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -65,7 +65,6 @@ const EmojiPicker = {
     setZoomEmoji (e, emoji) {
       this.zoomEmoji = emoji
       const { x, y } = e.target.getBoundingClientRect()
-      console.log(e.target)
       this.$refs['zoom-portal'].style.left = (x - 32) + 'px'
       this.$refs['zoom-portal'].style.top = (y - 32) + 'px'
     }

From 6217ef4718ae6241bad7be04054dc062821cba5f Mon Sep 17 00:00:00 2001
From: tarteka <info@tarteka.net>
Date: Tue, 10 Sep 2019 10:09:07 +0200
Subject: [PATCH 36/81] fix some translates

---
 src/i18n/eu.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/i18n/eu.json b/src/i18n/eu.json
index 0120acc5..ad8f4c05 100644
--- a/src/i18n/eu.json
+++ b/src/i18n/eu.json
@@ -603,10 +603,10 @@
     }
   },
   "search": {
-    "people": "Gendea",
+    "people": "Erabiltzaileak",
     "hashtags": "Traolak",
     "person_talking": "{count} pertsona hitzegiten",
-    "people_talking": "{count} gende hitzegiten",
+    "people_talking": "{count} jende hitzegiten",
     "no_results": "Emaitzarik ez"
   },
   "password_reset": {

From 4f0195b05c3124104b3e09d4b9d1f73c9d74440a Mon Sep 17 00:00:00 2001
From: HJ <30-hj@users.noreply.git.pleroma.social>
Date: Tue, 10 Sep 2019 18:39:45 +0000
Subject: [PATCH 37/81] Apply suggestion to
 src/components/emoji_picker/emoji_picker.vue

---
 src/components/emoji_picker/emoji_picker.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 5a8961d2..1c91c8b7 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -67,7 +67,7 @@
               @click.stop.prevent="onEmoji(emoji)"
               @mouseenter="setZoomEmoji($event, emoji)"
               @mouseleave="setZoomEmoji($event, false)"
-              >
+            >
               <span v-if="!emoji.imageUrl">
                 {{ emoji.replacement }}
               </span>

From 0d8b68632b02565e5ba7a833e91e41daabb4a1dc Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Thu, 12 Sep 2019 19:15:22 +0300
Subject: [PATCH 38/81] Remove emoji zoom

---
 src/components/emoji_picker/emoji_picker.js   |  7 -------
 src/components/emoji_picker/emoji_picker.scss | 19 ------------------
 src/components/emoji_picker/emoji_picker.vue  | 20 ++-----------------
 src/components/status/status.vue              | 19 ------------------
 .../entity_normalizer.service.js              |  2 +-
 .../entity_normalizer.spec.js                 |  4 ++--
 6 files changed, 5 insertions(+), 66 deletions(-)

diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index d9d41bf6..bce5026e 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -17,7 +17,6 @@ const EmojiPicker = {
       keyword: '',
       activeGroup: 'custom',
       showingStickers: false,
-      zoomEmoji: false,
       spamMode: false
     }
   },
@@ -61,12 +60,6 @@ const EmojiPicker = {
     },
     onStickerUploadFailed (e) {
       this.$emit('sticker-upload-failed', e)
-    },
-    setZoomEmoji (e, emoji) {
-      this.zoomEmoji = emoji
-      const { x, y } = e.target.getBoundingClientRect()
-      this.$refs['zoom-portal'].style.left = (x - 32) + 'px'
-      this.$refs['zoom-portal'].style.top = (y - 32) + 'px'
     }
   },
   watch: {
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 7e76aa52..472db35b 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -10,21 +10,6 @@
   margin: 0 !important;
   z-index: 1;
 
-  .zoom-portal {
-    position: fixed;
-    pointer-events: none;
-    width: 96px;
-    height: 96px;
-    font-size: 96px;
-    line-height: 96px;
-    z-index: 10;
-    img {
-      object-fit: contain;
-      width: 100%;
-      height: 100%;
-    }
-  }
-
   .spam-mode {
     padding: 7px;
     line-height: normal;
@@ -150,10 +135,6 @@
 
       cursor: pointer;
 
-      &:hover {
-        opacity: 0
-      }
-
       img {
         object-fit: contain;
         max-width: 100%;
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 1c91c8b7..901520aa 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -65,16 +65,12 @@
               :title="emoji.displayText"
               class="emoji-item"
               @click.stop.prevent="onEmoji(emoji)"
-              @mouseenter="setZoomEmoji($event, emoji)"
-              @mouseleave="setZoomEmoji($event, false)"
             >
-              <span v-if="!emoji.imageUrl">
-                {{ emoji.replacement }}
-              </span>
+              <span v-if="!emoji.imageUrl">{{ emoji.replacement }}</span>
               <img
                 v-else
                 :src="emoji.imageUrl"
-                >
+              >
             </span>
           </div>
         </div>
@@ -99,18 +95,6 @@
         />
       </div>
     </div>
-    <div ref="zoom-portal" class="zoom-portal">
-      <span v-if="zoomEmoji">
-        <span v-if="!zoomEmoji.imageUrl">
-          {{ zoomEmoji.replacement }}
-        </span>
-        <img
-          v-else
-          :key="zoomEmoji.imageUrl"
-          :src="zoomEmoji.imageUrl"
-          >
-      </span>
-    </div>
   </div>
 </template>
 
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index a0756ae4..771615f3 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -696,22 +696,6 @@ $status-margin: 0.75em;
     line-height: 1.4em;
     white-space: pre-wrap;
 
-    .emoji-container {
-      display: inline-block;
-      width: 32px;
-      height: 32px;
-      z-index: 1;
-
-      &:hover {
-        z-index: 2;
-
-        .emoji {
-          transform: scale(3);
-          z-index: 2;
-        }
-      }
-    }
-
     img, video {
       max-width: 100%;
       max-height: 400px;
@@ -721,9 +705,6 @@ $status-margin: 0.75em;
       &.emoji {
         width: 32px;
         height: 32px;
-        transition: transform 200ms;
-        transform: scale(1);
-        pointer-events: none;
       }
     }
 
diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js
index 17b4a6e0..6cc1851d 100644
--- a/src/services/entity_normalizer/entity_normalizer.service.js
+++ b/src/services/entity_normalizer/entity_normalizer.service.js
@@ -194,7 +194,7 @@ export const addEmojis = (string, emojis) => {
   return emojis.reduce((acc, emoji) => {
     return acc.replace(
       new RegExp(`:${emoji.shortcode}:`, 'g'),
-      `<span class='emoji-container'><img src='${emoji.url}' alt='${emoji.shortcode}' title='${emoji.shortcode}' class='emoji' /></span>`
+      `<img src='${emoji.url}' alt='${emoji.shortcode}' title='${emoji.shortcode}' class='emoji' />`
     )
   }, string)
 }
diff --git a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js
index 24aef5cd..20e03cb0 100644
--- a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js
+++ b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js
@@ -323,9 +323,9 @@ describe('API Entities normalizer', () => {
 
   describe('MastoAPI emoji adder', () => {
     const emojis = makeMockEmojiMasto()
-    const imageHtml = '<span class="emoji-container"><img src="https://example.com/image.png" alt="image" title="image" class="emoji" /></span>'
+    const imageHtml = '<img src="https://example.com/image.png" alt="image" title="image" class="emoji" />'
       .replace(/"/g, '\'')
-    const thinkHtml = '<span class="emoji-container"><img src="https://example.com/think.png" alt="thinking" title="thinking" class="emoji" /></span>'
+    const thinkHtml = '<img src="https://example.com/think.png" alt="thinking" title="thinking" class="emoji" />'
       .replace(/"/g, '\'')
 
     it('correctly replaces shortcodes in supplied string', () => {

From 9bd0ed7912291fb815c952180422381bea9eb3c0 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Thu, 12 Sep 2019 20:14:35 +0300
Subject: [PATCH 39/81] updated logic for hiding picker and also added ability
 to hide suggestions with esc key

---
 src/components/emoji_input/emoji_input.js | 62 +++++++++++++++++------
 1 file changed, 46 insertions(+), 16 deletions(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index c74c531b..6dc006f8 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -78,6 +78,7 @@ const EmojiInput = {
       focused: false,
       blurTimeout: null,
       showPicker: false,
+      temporarilyHideSuggestions: false,
       spamMode: false,
       disableClickOutside: false
     }
@@ -102,7 +103,11 @@ const EmojiInput = {
         }))
     },
     showSuggestions () {
-      return this.focused && this.suggestions && this.suggestions.length > 0 && !this.showPicker
+      return this.focused &&
+        this.suggestions &&
+        this.suggestions.length > 0 &&
+        !this.showPicker &&
+        !this.temporarilyHideSuggestions
     },
     textAtCaret () {
       return (this.wordAtCaret || {}).word || ''
@@ -153,6 +158,7 @@ const EmojiInput = {
       }, 0)
     },
     togglePicker () {
+      this.input.elm.focus()
       this.showPicker = !this.showPicker
     },
     replace (replacement) {
@@ -250,44 +256,68 @@ const EmojiInput = {
       this.focused = true
       this.setCaret(e)
       this.resize()
+      this.temporarilyHideSuggestions = false
     },
     onKeyUp (e) {
+      const { key } = e
       this.setCaret(e)
       this.resize()
+
+      // Setting hider in keyUp to prevent suggestions from blinking
+      // when moving away from suggested spot
+      if (key === 'Escape') {
+        this.temporarilyHideSuggestions = true
+      } else {
+        this.temporarilyHideSuggestions = false
+      }
     },
     onPaste (e) {
       this.setCaret(e)
       this.resize()
     },
     onKeyDown (e) {
-      this.setCaret(e)
-      this.resize()
-
       const { ctrlKey, shiftKey, key } = e
-      if (key === 'Tab') {
-        if (shiftKey) {
+      // Disable suggestions hotkeys if suggestions are hidden
+      if (!this.temporarilyHideSuggestions) {
+        if (key === 'Tab') {
+          if (shiftKey) {
+            this.cycleBackward(e)
+          } else {
+            this.cycleForward(e)
+          }
+        }
+        if (key === 'ArrowUp') {
           this.cycleBackward(e)
-        } else {
+        } else if (key === 'ArrowDown') {
           this.cycleForward(e)
         }
-      }
-      if (key === 'ArrowUp') {
-        this.cycleBackward(e)
-      } else if (key === 'ArrowDown') {
-        this.cycleForward(e)
-      }
-      if (key === 'Enter') {
-        if (!ctrlKey) {
-          this.replaceText(e)
+        if (key === 'Enter') {
+          if (!ctrlKey) {
+            this.replaceText(e)
+          }
         }
       }
+      // Probably add optional keyboard controls for emoji picker?
+
+      // Escape hides suggestions, if suggestions are hidden it
+      // de-focuses the element (i.e. default browser behavior)
+      if (key === 'Escape') {
+        if (!this.temporarilyHideSuggestions) {
+          this.input.elm.focus()
+        }
+      }
+
+      this.showPicker = false
+      this.resize()
     },
     onInput (e) {
       this.showPicker = false
       this.setCaret(e)
+      this.resize()
       this.$emit('input', e.target.value)
     },
     onCompositionUpdate (e) {
+      this.showPicker = false
       this.setCaret(e)
       this.resize()
       this.$emit('input', e.target.value)

From 3505e53756562b4d7b304d0da9910c4528b25959 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Thu, 12 Sep 2019 20:36:43 +0300
Subject: [PATCH 40/81] review/naming + bugfix for stickers

---
 src/components/emoji_input/emoji_input.js       | 17 ++++++++++++++---
 src/components/emoji_input/emoji_input.vue      |  8 ++++----
 src/components/emoji_picker/emoji_picker.js     |  5 ++++-
 src/components/emoji_picker/emoji_picker.vue    |  2 +-
 .../post_status_form/post_status_form.vue       |  8 ++++----
 5 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 6dc006f8..94af6e2f 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -54,17 +54,28 @@ const EmojiInput = {
       required: true,
       type: String
     },
-    emojiPicker: {
+    enableEmojiPicker: {
+      /**
+       * Enables emoji picker support, this implies that custom emoji are supported
+       */
       required: false,
       type: Boolean,
       default: false
     },
-    emojiPickerExternalTrigger: {
+    hideEmojiButton: {
+      /**
+    enableStickerPicker: {
+       * intended to use with external picker trigger, i.e. you have a button outside
+       * input that will open up the picker, see triggerShowPicker()
+       */
       required: false,
       type: Boolean,
       default: false
     },
-    stickerPicker: {
+    enableStickerPicker: {
+      /**
+       * Enables sticker picker support, only makes sense when enableEmojiPicker=true
+       */
       required: false,
       type: Boolean,
       default: false
diff --git a/src/components/emoji_input/emoji_input.vue b/src/components/emoji_input/emoji_input.vue
index b077e6e9..53b38573 100644
--- a/src/components/emoji_input/emoji_input.vue
+++ b/src/components/emoji_input/emoji_input.vue
@@ -4,19 +4,19 @@
     class="emoji-input"
   >
     <slot />
-    <template v-if="emojiPicker">
+    <template v-if="enableEmojiPicker">
       <div
-        v-if="!emojiPickerExternalTrigger"
+        v-if="!hideEmojiButton"
         class="emoji-picker-icon"
         @click.prevent="togglePicker"
       >
         <i class="icon-smile" />
       </div>
       <EmojiPicker
-        v-if="emojiPicker"
+        v-if="enableEmojiPicker"
         ref="picker"
         :class="{ hide: !showPicker }"
-        :sticker-picker="stickerPicker"
+        :enable-sticker-picker="enableStickerPicker"
         class="emoji-picker-panel"
         @emoji="insert"
         @sticker-uploaded="onStickerUploaded"
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index bce5026e..570ace13 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -5,7 +5,7 @@ const filterByKeyword = (list, keyword = '') => {
 
 const EmojiPicker = {
   props: {
-    stickerPicker: {
+    enableStickerPicker: {
       required: false,
       type: Boolean,
       default: false
@@ -97,6 +97,9 @@ const EmojiPicker = {
     },
     emojisView () {
       return this.emojis.filter(value => value.emojis.length > 0)
+    },
+    stickerPickerEnabled () {
+      return (this.$store.state.instance.stickers || []).length !== 0
     }
   }
 }
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 901520aa..5c139d0e 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -17,7 +17,7 @@
         </span>
       </span>
       <span
-        v-if="stickerPicker"
+        v-if="stickerPickerEnabled"
         class="additional-tabs"
       >
         <span
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 026cb8fe..0e0b0e60 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -61,7 +61,7 @@
         <EmojiInput
           v-if="newStatus.spoilerText || alwaysShowSubject"
           v-model="newStatus.spoilerText"
-          emoji-picker
+          enable-emoji-picker
           :suggest="emojiSuggestor"
           class="form-control"
         >
@@ -78,9 +78,9 @@
           v-model="newStatus.status"
           :suggest="emojiUserSuggestor"
           class="form-control main-input"
-          emoji-picker
-          emoji-picker-external-trigger
-          sticker-picker
+          enable-emoji-picker
+          hide-emoji-button
+          enable-sticker-picker
           @sticker-uploaded="addMediaFile"
           @sticker-upload-failed="uploadFailed"
         >

From f0cb6fe03faa1994fb667255d4051fe611b2afbc Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 15 Sep 2019 01:16:54 +0300
Subject: [PATCH 41/81] Fixed scrollability not being obvious, added fade
 effect

---
 src/components/emoji_picker/emoji_picker.js   |  8 ++++++++
 src/components/emoji_picker/emoji_picker.scss | 18 +++++++++++++++++-
 src/components/emoji_picker/emoji_picker.vue  |  1 +
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 570ace13..8c60916b 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -17,6 +17,7 @@ const EmojiPicker = {
       keyword: '',
       activeGroup: 'custom',
       showingStickers: false,
+      groupsScrolledClass: 'scrolled-top',
       spamMode: false
     }
   },
@@ -40,6 +41,13 @@ const EmojiPicker = {
     scrolledGroup (e) {
       const target = (e && e.target) || this.$refs['emoji-groups']
       const top = target.scrollTop + 5
+      if (target.scrollTop <= 5) {
+        this.groupsScrolledClass = 'scrolled-top'
+      } else if (target.scrollTop >= target.scrollTopMax - 5) {
+        this.groupsScrolledClass = 'scrolled-bottom'
+      } else {
+        this.groupsScrolledClass = 'scrolled-middle'
+      }
       this.$nextTick(() => {
         this.emojisView.forEach(group => {
           const ref = this.$refs['group-' + group.id]
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 472db35b..8c07fd27 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -6,7 +6,7 @@
   position: absolute;
   right: 0;
   left: 0;
-  height: 300px;
+  height: 320px;
   margin: 0 !important;
   z-index: 1;
 
@@ -104,6 +104,22 @@
       flex: 1 1 1px;
       position: relative;
       overflow: auto;
+      mask: linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,
+            linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,
+            linear-gradient(to top, white, white);
+      transition: mask-size 150ms;
+      mask-size: 100% 20px, 100% 20px, auto;
+      // Autoprefixed seem to ignore this one, and also syntax is different
+      -webkit-mask-composite: xor;
+      mask-composite: exclude;
+      &.scrolled {
+        &-top {
+          mask-size: 100% 20px, 100% 0, auto;
+        }
+        &-bottom {
+          mask-size: 100% 0, 100% 20px, auto;
+        }
+      }
     }
 
     &-group {
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 5c139d0e..8bc7c382 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -46,6 +46,7 @@
         <div
           ref="emoji-groups"
           class="emoji-groups"
+          :class="groupsScrolledClass"
           @scroll="scrolledGroup"
         >
           <div

From d2fe79782119c061173c1b07753f634f0766bae9 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 15 Sep 2019 02:14:40 +0300
Subject: [PATCH 42/81] update status/user card to use same gradient mask
 fading effect instead of background hack

---
 src/components/status/status.vue       | 16 ++++++++------
 src/components/user_card/user_card.js  | 11 +---------
 src/components/user_card/user_card.vue | 30 ++++++++++++++++++++++----
 3 files changed, 37 insertions(+), 20 deletions(-)

diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 771615f3..93f37a49 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -665,6 +665,15 @@ $status-margin: 0.75em;
     height: 220px;
     overflow-x: hidden;
     overflow-y: hidden;
+    z-index: 1;
+    .status-content {
+      height: 100%;
+      mask: linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,
+            linear-gradient(to top, white, white);
+      // Autoprefixed seem to ignore this one, and also syntax is different
+      -webkit-mask-composite: xor;
+      mask-composite: exclude;
+    }
   }
 
   .tall-status-hider {
@@ -676,12 +685,7 @@ $status-margin: 0.75em;
     width: 100%;
     text-align: center;
     line-height: 110px;
-    background: linear-gradient(to bottom, rgba(0, 0, 0, 0), $fallback--bg 80%);
-    background: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--bg, $fallback--bg) 80%);
-    &_focused {
-      background: linear-gradient(to bottom, rgba(0, 0, 0, 0), $fallback--lightBg 80%);
-      background: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--lightBg, $fallback--lightBg) 80%);
-    }
+    z-index: 2;
   }
 
   .status-unhider, .cw-status-hider {
diff --git a/src/components/user_card/user_card.js b/src/components/user_card/user_card.js
index 82d3b835..e41a3180 100644
--- a/src/components/user_card/user_card.js
+++ b/src/components/user_card/user_card.js
@@ -38,19 +38,10 @@ export default {
         const rgb = (typeof color === 'string') ? hex2rgb(color) : color
         const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .5)`
 
-        const gradient = [
-          [tintColor, this.hideBio ? '60%' : ''],
-          this.hideBio ? [
-            color, '100%'
-          ] : [
-            tintColor, ''
-          ]
-        ].map(_ => _.join(' ')).join(', ')
-
         return {
           backgroundColor: `rgb(${Math.floor(rgb.r * 0.53)}, ${Math.floor(rgb.g * 0.56)}, ${Math.floor(rgb.b * 0.59)})`,
           backgroundImage: [
-            `linear-gradient(to bottom, ${gradient})`,
+            `linear-gradient(to bottom, ${tintColor}, ${tintColor})`,
             `url(${this.user.cover_photo})`
           ].join(', ')
         }
diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue
index fc18e240..c2626260 100644
--- a/src/components/user_card/user_card.vue
+++ b/src/components/user_card/user_card.vue
@@ -2,8 +2,9 @@
   <div
     class="user-card"
     :class="classes"
-    :style="style"
   >
+    <div :class="{ 'hide-bio': hideBio }" :style="style" class="background-image">
+    </div>
     <div class="panel-heading">
       <div class="user-info">
         <div class="container">
@@ -298,7 +299,7 @@
 @import '../../_variables.scss';
 
 .user-card {
-  background-size: cover;
+  position: relative;
 
   .panel-heading {
     padding: .5em 0;
@@ -307,14 +308,35 @@
     background: transparent;
     flex-direction: column;
     align-items: stretch;
+    // create new stacking context
+    position: relative;
   }
 
   .panel-body {
     word-wrap: break-word;
-    background: linear-gradient(to bottom, rgba(0, 0, 0, 0), $fallback--bg 80%);
-    background: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--bg, $fallback--bg) 80%);
     border-bottom-right-radius: inherit;
     border-bottom-left-radius: inherit;
+    // create new stacking context
+    position: relative;
+  }
+
+  .background-image {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    mask: linear-gradient(to top, white, transparent) bottom no-repeat,
+          linear-gradient(to top, white, white);
+    // Autoprefixed seem to ignore this one, and also syntax is different
+    -webkit-mask-composite: xor;
+    mask-composite: exclude;
+    background-size: cover;
+    mask-size: 100% 60%;
+
+    &.hide-bio {
+      mask-size: 100% 40px;
+    }
   }
 
   p {

From e366adbb6ca83f526c71d26ed03e20790b21af74 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 15 Sep 2019 12:09:19 +0300
Subject: [PATCH 43/81] updated logic for padding with spaces, improved spam
 mode

---
 src/components/emoji_input/emoji_input.js     | 29 +++++++++++++++++--
 src/components/emoji_picker/emoji_picker.js   |  2 +-
 src/components/emoji_picker/emoji_picker.scss |  4 ++-
 src/components/emoji_picker/emoji_picker.vue  |  6 +++-
 src/i18n/en.json                              |  2 +-
 5 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 94af6e2f..41ee239c 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -178,14 +178,37 @@ const EmojiInput = {
       this.caret = 0
     },
     insert ({ insertion, spamMode }) {
+      const before = this.value.substring(0, this.caret) || ''
+      const after = this.value.substring(this.caret) || ''
+
+      /* Using a bit more smart approach to padding emojis with spaces:
+       * - put a space before cursor if there isn't one already, unless we
+       *   are at the beginning of post or in spam mode
+       * - put a space after emoji if there isn't one already unless we are
+       *   in spam mode
+       *
+       * The idea is that when you put a cursor somewhere in between sentence
+       * inserting just ' :emoji: ' will add more spaces to post which might
+       * break the flow/spacing, as well as the case where user ends sentence
+       * with a space before adding emoji.
+       *
+       * Spam mode is intended for creating multi-part emojis and overall spamming
+       * them, masto seem to be rendering :emoji::emoji: correctly now so why not
+       */
+      const isSpaceRegex = /\s/
+      const spaceBefore = !isSpaceRegex.exec(before.slice(-1)) && before.length && !spamMode > 0 ? ' ' : ''
+      const spaceAfter = !isSpaceRegex.exec(after[0]) && !spamMode ? ' ' : ''
+
       const newValue = [
-        this.value.substring(0, this.caret),
+        before,
+        spaceBefore,
         insertion,
-        this.value.substring(this.caret)
+        spaceAfter,
+        after
       ].join('')
       this.spamMode = spamMode
       this.$emit('input', newValue)
-      const position = this.caret + insertion.length
+      const position = this.caret + (insertion + spaceAfter + spaceBefore).length
 
       this.$nextTick(function () {
         // Re-focus inputbox after clicking suggestion
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 8c60916b..cb93f0c1 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -27,7 +27,7 @@ const EmojiPicker = {
   methods: {
     onEmoji (emoji) {
       const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement
-      this.$emit('emoji', { insertion: ` ${value} `, spamMode: this.spamMode })
+      this.$emit('emoji', { insertion: value, spamMode: this.spamMode })
     },
     highlight (key) {
       const ref = this.$refs['group-' + key]
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 8c07fd27..09438898 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -15,7 +15,8 @@
     line-height: normal;
   }
   .spam-mode-label {
-    padding: 7px;
+    padding: 0 7px;
+    display: flex;
   }
 
   .heading {
@@ -104,6 +105,7 @@
       flex: 1 1 1px;
       position: relative;
       overflow: auto;
+      user-select: none;
       mask: linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,
             linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,
             linear-gradient(to top, white, white);
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 8bc7c382..b32d0862 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -83,7 +83,11 @@
             v-model="spamMode"
             type="checkbox"
             >
-          <label class="spam-mode-label" :for="labelKey + 'spam-mode'">{{ $t('emoji.spam') }}</label>
+          <label class="spam-mode-label" :for="labelKey + 'spam-mode'">
+            <div class="spam-mode-label-text">
+              {{ $t('emoji.spam') }}
+            </div>
+          </label>
         </div>
       </div>
       <div
diff --git a/src/i18n/en.json b/src/i18n/en.json
index e74469ed..7676e7a8 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -109,7 +109,7 @@
   "emoji": {
     "stickers": "Stickers",
     "emoji": "Emoji",
-    "spam": "Keep open after adding emoji",
+    "spam": "Keep picker open, don't separate emoji with spaces",
     "search_emoji": "Search for an emoji",
     "add_emoji": "Insert emoji",
     "custom": "Custom emoji",

From a1ed1b9b538728cc95f720b748efde111ec44a8a Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 15 Sep 2019 12:28:52 +0300
Subject: [PATCH 44/81] improved post form's icons at bottom display

---
 src/components/media_upload/media_upload.vue  | 16 +++++----
 .../post_status_form/post_status_form.vue     | 36 +++++++++++++++----
 2 files changed, 38 insertions(+), 14 deletions(-)

diff --git a/src/components/media_upload/media_upload.vue b/src/components/media_upload/media_upload.vue
index ac32ae83..1dda7bc1 100644
--- a/src/components/media_upload/media_upload.vue
+++ b/src/components/media_upload/media_upload.vue
@@ -31,12 +31,14 @@
 <script src="./media_upload.js" ></script>
 
 <style>
- .media-upload {
-     font-size: 26px;
-     min-width: 50px;
- }
+.media-upload {
+  .icon-upload {
+    cursor: pointer;
+  }
 
- .icon-upload {
-     cursor: pointer;
- }
+  label {
+    display: block;
+    width: 100%;
+  }
+}
 </style>
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 0e0b0e60..89e51b97 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -159,6 +159,7 @@
         <div class="form-bottom-left">
           <media-upload
             ref="mediaUpload"
+            class="media-upload-icon"
             :drop-files="dropFiles"
             @uploading="disableSubmit"
             @uploaded="addMediaFile"
@@ -176,11 +177,11 @@
           <div
             v-if="pollsAvailable"
             class="poll-icon"
+            :class="{ selected: pollFormVisible }"
           >
             <i
               :title="$t('polls.add_poll')"
               class="icon-chart-bar btn btn-default"
-              :class="pollFormVisible && 'selected'"
               @click="togglePollForm"
             />
           </div>
@@ -316,6 +317,8 @@
   .form-bottom-left {
     display: flex;
     flex: 1;
+    padding-right: 7px;
+    margin-right: 7px;
   }
 
   .text-format {
@@ -325,19 +328,38 @@
     }
   }
 
-  .poll-icon, .emoji-icon {
+  .media-upload-icon, .poll-icon, .emoji-icon {
     font-size: 26px;
     flex: 1;
 
-    .selected {
-      color: $fallback--lightText;
-      color: var(--lightText, $fallback--lightText);
+    i {
+      display: block;
+      width: 100%;
+    }
+
+    &.selected, &:hover {
+      // needs to be specific to override icon default color
+      i, label {
+        color: $fallback--lightText;
+        color: var(--lightText, $fallback--lightText);
+      }
     }
   }
 
+  // Order is not necessary but a good indicator
+  .media-upload-icon {
+    order: 1;
+    text-align: left;
+  }
+
   .emoji-icon {
-    flex: 0;
-    min-width: 50px;
+    order: 2;
+    text-align: center;
+  }
+
+  .poll-icon {
+    order: 3;
+    text-align: right;
   }
 
   .icon-chart-bar {

From 312e2aa14f044920cb8baa5e9bc296b992194dbd Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 15 Sep 2019 12:51:39 +0300
Subject: [PATCH 45/81] fix bottom-left icons being too damn wide

---
 src/components/post_status_form/post_status_form.vue | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 89e51b97..b50607e6 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -300,6 +300,7 @@
 .post-status-form {
   .form-bottom {
     display: flex;
+    justify-content: space-between;
     padding: 0.5em;
     height: 32px;
 
@@ -319,6 +320,7 @@
     flex: 1;
     padding-right: 7px;
     margin-right: 7px;
+    max-width: 10em;
   }
 
   .text-format {

From db961af3c8ee11823a4b33c3127635c280996183 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 15 Sep 2019 16:01:57 +0300
Subject: [PATCH 46/81] unit test for emoji input, for now covering only
 insertion mechanism

---
 .../unit/specs/components/emoji_input.spec.js | 122 ++++++++++++++++++
 1 file changed, 122 insertions(+)
 create mode 100644 test/unit/specs/components/emoji_input.spec.js

diff --git a/test/unit/specs/components/emoji_input.spec.js b/test/unit/specs/components/emoji_input.spec.js
new file mode 100644
index 00000000..5f24331a
--- /dev/null
+++ b/test/unit/specs/components/emoji_input.spec.js
@@ -0,0 +1,122 @@
+import { shallowMount, createLocalVue } from '@vue/test-utils'
+import EmojiInput from 'src/components/emoji_input/emoji_input.vue'
+
+const generateInput = (value) => {
+  const localVue = createLocalVue()
+  localVue.directive('click-outside', () => {})
+  const wrapper = shallowMount(EmojiInput, {
+    propsData: {
+      suggest: () => [],
+      enableEmojiPicker: true,
+      value
+    },
+    slots: {
+      default: '<input />'
+    },
+    localVue
+  })
+  return [wrapper, localVue]
+}
+
+describe('EmojiInput', () => {
+  describe('insertion mechanism', () => {
+    it('inserts string at the end with trailing space', () => {
+      const initialString = 'Testing'
+      const [wrapper] = generateInput(initialString)
+      const input = wrapper.find('input')
+      input.setValue(initialString)
+      wrapper.setData({ caret: initialString.length })
+      wrapper.vm.insert({ insertion: '(test)', spamMode: false })
+      expect(wrapper.emitted().input[0][0]).to.eql('Testing (test) ')
+    })
+
+    it('inserts string at the end with trailing space (source has a trailing space)', () => {
+      const initialString = 'Testing '
+      const [wrapper] = generateInput(initialString)
+      const input = wrapper.find('input')
+      input.setValue(initialString)
+      wrapper.setData({ caret: initialString.length })
+      wrapper.vm.insert({ insertion: '(test)', spamMode: false })
+      expect(wrapper.emitted().input[0][0]).to.eql('Testing (test) ')
+    })
+
+    it('inserts string at the begginning without leading space', () => {
+      const initialString = 'Testing'
+      const [wrapper] = generateInput(initialString)
+      const input = wrapper.find('input')
+      input.setValue(initialString)
+      wrapper.setData({ caret: 0 })
+      wrapper.vm.insert({ insertion: '(test)', spamMode: false })
+      expect(wrapper.emitted().input[0][0]).to.eql('(test) Testing')
+    })
+
+    it('inserts string between words without creating extra spaces', () => {
+      const initialString = 'Spurdo Sparde'
+      const [wrapper] = generateInput(initialString)
+      const input = wrapper.find('input')
+      input.setValue(initialString)
+      wrapper.setData({ caret: 6 })
+      wrapper.vm.insert({ insertion: ':ebin:', spamMode: false })
+      expect(wrapper.emitted().input[0][0]).to.eql('Spurdo :ebin: Sparde')
+    })
+
+    it('inserts string between words without creating extra spaces (other caret)', () => {
+      const initialString = 'Spurdo Sparde'
+      const [wrapper] = generateInput(initialString)
+      const input = wrapper.find('input')
+      input.setValue(initialString)
+      wrapper.setData({ caret: 7 })
+      wrapper.vm.insert({ insertion: ':ebin:', spamMode: false })
+      expect(wrapper.emitted().input[0][0]).to.eql('Spurdo :ebin: Sparde')
+    })
+
+    it('inserts string without any padding in spam mode', () => {
+      const initialString = 'Eat some spam!'
+      const [wrapper] = generateInput(initialString)
+      const input = wrapper.find('input')
+      input.setValue(initialString)
+      wrapper.setData({ caret: initialString.length })
+      wrapper.vm.insert({ insertion: ':spam:', spamMode: true })
+      expect(wrapper.emitted().input[0][0]).to.eql('Eat some spam!:spam:')
+    })
+
+    it('correctly sets caret after insertion at beginning', (done) => {
+      const initialString = '1234'
+      const [wrapper, vue] = generateInput(initialString)
+      const input = wrapper.find('input')
+      input.setValue(initialString)
+      wrapper.setData({ caret: 0 })
+      wrapper.vm.insert({ insertion: '1234', spamMode: false })
+      vue.nextTick(() => {
+        expect(wrapper.vm.caret).to.eql(5)
+        done()
+      })
+    })
+
+    it('correctly sets caret after insertion at end', (done) => {
+      const initialString = '1234'
+      const [wrapper, vue] = generateInput(initialString)
+      const input = wrapper.find('input')
+      input.setValue(initialString)
+      wrapper.setData({ caret: initialString.length })
+      wrapper.vm.insert({ insertion: '1234', spamMode: false })
+      vue.nextTick(() => {
+        expect(wrapper.vm.caret).to.eql(10)
+        done()
+      })
+    })
+
+    it('correctly sets caret after insertion in spam mode', (done) => {
+      const initialString = '1234'
+      const [wrapper, vue] = generateInput(initialString)
+      const input = wrapper.find('input')
+      input.setValue(initialString)
+      wrapper.setData({ caret: initialString.length })
+      wrapper.vm.insert({ insertion: '1234', spamMode: true })
+      vue.nextTick(() => {
+        expect(wrapper.vm.caret).to.eql(8)
+        done()
+      })
+    })
+  })
+})

From f961ce0f98c655364c6b780bc4dbf8f635e32cbc Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 15 Sep 2019 16:40:31 +0300
Subject: [PATCH 47/81] docs update

---
 docs/USER_GUIDE.md     |   7 +++++++
 docs/example_emoji.png | Bin 0 -> 491 bytes
 2 files changed, 7 insertions(+)
 create mode 100644 docs/example_emoji.png

diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md
index cb95a244..81490f22 100644
--- a/docs/USER_GUIDE.md
+++ b/docs/USER_GUIDE.md
@@ -23,6 +23,13 @@ Posts will contain the text you are posting, but some content will be modified:
 **Depending on your instance some of the options might not be available or have different defaults**
 
 Let's clear up some basic stuff. When you post something it's called a **post** or it could be called a **status** or even a **toot** or a **prööt** depending on whom you ask. Post has body/content but it also has some other stuff in it - from attachments, visibility scope, subject line.
+* **Emoji** are small images embedded in text, there are two major types of emoji: [unicode emoji](https://en.wikipedia.org/wiki/Emoji) and custom emoji. While unicode emoji are universal and standardized, they can appear differently depending on where you are using them or may not appear at all on older systems. Custom emoji are more *fun* kind - instance administrator can define many images as *custom emoji* for their users. This works very simple - custom emoji is defined by its *shortcode* and an image, so that any shortcode enclosed in colons get replaced with image if such shortcode exist.
+Let's say there's `:pleroma:` emoji defined on instance. That means  
+> First time using :pleroma: pleroma!  
+will become  
+> First time using ![pleroma](./example_emoji.png) pleroma!  
+Note that you can only use emoji defined on your instance, you cannot "copy" someone else's emoji, and will have to ask your administrator to copy emoji from other instance to yours.  
+Lastly, there's two convenience options for emoji: an emoji picker (smiley face to the right of "submit" button) and autocomplete suggestions - when you start typing :shortcode: it will automatically try to suggest you emoj and complete the shortcode for you if you select one. **Note** that if emoji doesn't show up in suggestions nor in emoji picker it means there's no such emoji on your instance, if shortcode doesn't match any defined emoji it will appear as text.
 * **Attachments** are fairly simple - you can attach any file to a post as long as the file is within maximum size limits. If you're uploading explicit material you can mark all of your attachments as sensitive (or add `#nsfw` tag) - it will hide the images and videos behind a warning so that it won't be displayed instantly.
 * **Subject line** also known as **CW** (Content Warning) could be used as a header to the post and/or to warn others about contents of the post having something that might upset somebody or something among those lines. Several applications allow to hide post content leaving only subject line visible. As a side-effect using subject line will also mark your images as sensitive (see above).
 * **Visiblity scope** controls who will be able to see your posts. There are four scopes available:
diff --git a/docs/example_emoji.png b/docs/example_emoji.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a22a256b00f1fbe962cd1988ec4df5cb6024bec
GIT binary patch
literal 491
zcmV<H0Tlj;P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800006VoOIv00000
z008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru;|UK99uGxP0JZ=C0eDG7
zK~z}7?U%bs13?sqzu80+MKQ?+g0T?1AxgjtwpJpDR)SawzJiT{78crw=mQ9X)|MK?
z)__(K@rFW7q2eX(njq$agp7?S+sGD4rZ9gu!x{c><{Zw<2*9B?w#`Yw4B)3cGKFN_
ze2T3Iy{UCUO0kRr3CX<h1=|gfI%;HS3e5rh8j9t#8#vV2z<96DO(H{~0C6Kn_&f!`
zXvjm0-))IMz0VMdy%z^yEaYW#s^xp+1z`U&^#d@`r!&&+v8>sMBy0iLO2K4*>B__w
z!1YU3Ex>19ss$*eDgY$|2zsj30ys5=Ct#%WEbcuNw-x`T>FwJ}5mo?7{~q{Dv%^6K
zn(Hic;fo|&$FJo9=xVHCu)W@TgFa`~rodGt)B<z{YSaSkM9tzA;bH8ZT)tqLiyOIL
zvlEl(T^fO)BjDoTD#h+u%HHS17i^RNx({d|Oojf2CZt?f<t|~(k^Oi(a@YH^0(yYj
ha_wBgQt~mj`UUGlZ3B9NqGJF6002ovPDHLkV1gA2(P{ty

literal 0
HcmV?d00001


From c78c7e7734d43d3adf1de8c2416ffc60305954b4 Mon Sep 17 00:00:00 2001
From: HJ <30-hj@users.noreply.git.pleroma.social>
Date: Sun, 15 Sep 2019 13:43:42 +0000
Subject: [PATCH 48/81] Update docs/USER_GUIDE.md

---
 docs/USER_GUIDE.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md
index 81490f22..18b6c560 100644
--- a/docs/USER_GUIDE.md
+++ b/docs/USER_GUIDE.md
@@ -26,8 +26,10 @@ Let's clear up some basic stuff. When you post something it's called a **post**
 * **Emoji** are small images embedded in text, there are two major types of emoji: [unicode emoji](https://en.wikipedia.org/wiki/Emoji) and custom emoji. While unicode emoji are universal and standardized, they can appear differently depending on where you are using them or may not appear at all on older systems. Custom emoji are more *fun* kind - instance administrator can define many images as *custom emoji* for their users. This works very simple - custom emoji is defined by its *shortcode* and an image, so that any shortcode enclosed in colons get replaced with image if such shortcode exist.
 Let's say there's `:pleroma:` emoji defined on instance. That means  
 > First time using :pleroma: pleroma!  
+
 will become  
 > First time using ![pleroma](./example_emoji.png) pleroma!  
+
 Note that you can only use emoji defined on your instance, you cannot "copy" someone else's emoji, and will have to ask your administrator to copy emoji from other instance to yours.  
 Lastly, there's two convenience options for emoji: an emoji picker (smiley face to the right of "submit" button) and autocomplete suggestions - when you start typing :shortcode: it will automatically try to suggest you emoj and complete the shortcode for you if you select one. **Note** that if emoji doesn't show up in suggestions nor in emoji picker it means there's no such emoji on your instance, if shortcode doesn't match any defined emoji it will appear as text.
 * **Attachments** are fairly simple - you can attach any file to a post as long as the file is within maximum size limits. If you're uploading explicit material you can mark all of your attachments as sensitive (or add `#nsfw` tag) - it will hide the images and videos behind a warning so that it won't be displayed instantly.

From c933f5edfcf50b8e8ed17ae52a8fb4df04e8c7cf Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Sun, 15 Sep 2019 17:19:17 +0300
Subject: [PATCH 49/81] changelog

---
 CHANGELOG.md | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 CHANGELOG.md

diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..ff4c2fd1
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,13 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+
+## [Unreleased]
+### Added
+- Emoji picker
+- Started changelog anew
+### Changed
+- changed the way fading effects for user profile/long statuses works, now uses css-mask instead of gradient background hacks which weren't exactly compatible with semi-transparent themes
+### Fixed
+- improved hotkey behavior on autocomplete popup

From 3cd23ae2d4d28c79890442bf343a55e44544bcdf Mon Sep 17 00:00:00 2001
From: HJ <30-hj@users.noreply.git.pleroma.social>
Date: Mon, 16 Sep 2019 07:23:56 +0000
Subject: [PATCH 50/81] Apply suggestion to
 src/components/emoji_input/emoji_input.js

---
 src/components/emoji_input/emoji_input.js | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 41ee239c..86ff9707 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -64,7 +64,6 @@ const EmojiInput = {
     },
     hideEmojiButton: {
       /**
-    enableStickerPicker: {
        * intended to use with external picker trigger, i.e. you have a button outside
        * input that will open up the picker, see triggerShowPicker()
        */

From 8618857aa36574f52a23106cd0d57fd96782435b Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Fri, 6 Sep 2019 11:15:22 -0400
Subject: [PATCH 51/81] collapse fav/repeat notifications from muted users

---
 src/components/notification/notification.js   |  14 +-
 src/components/notification/notification.vue  | 202 ++++++++++--------
 .../notifications/notifications.scss          |   5 +-
 3 files changed, 128 insertions(+), 93 deletions(-)

diff --git a/src/components/notification/notification.js b/src/components/notification/notification.js
index 896c6d52..181f7715 100644
--- a/src/components/notification/notification.js
+++ b/src/components/notification/notification.js
@@ -9,7 +9,8 @@ const Notification = {
   data () {
     return {
       userExpanded: false,
-      betterShadow: this.$store.state.interface.browserSupport.cssFilter
+      betterShadow: this.$store.state.interface.browserSupport.cssFilter,
+      unmuted: false
     }
   },
   props: [ 'notification' ],
@@ -23,11 +24,14 @@ const Notification = {
     toggleUserExpanded () {
       this.userExpanded = !this.userExpanded
     },
-    userProfileLink (user) {
+    generateUserProfileLink (user) {
       return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)
     },
     getUser (notification) {
       return this.$store.state.users.usersObject[notification.from_profile.id]
+    },
+    toggleMute () {
+      this.unmuted = !this.unmuted
     }
   },
   computed: {
@@ -47,6 +51,12 @@ const Notification = {
         return this.userInStore
       }
       return this.notification.from_profile
+    },
+    userProfileLink () {
+      return this.generateUserProfileLink(this.notification.from_profile)
+    },
+    needMute () {
+      return this.notification.from_profile.muted
     }
   }
 }
diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue
index bafcd026..1f192c77 100644
--- a/src/components/notification/notification.vue
+++ b/src/components/notification/notification.vue
@@ -4,104 +4,126 @@
     :compact="true"
     :statusoid="notification.status"
   />
-  <div
-    v-else
-    class="non-mention"
-    :class="[userClass, { highlighted: userStyle }]"
-    :style="[ userStyle ]"
-  >
-    <a
-      class="avatar-container"
-      :href="notification.from_profile.statusnet_profile_url"
-      @click.stop.prevent.capture="toggleUserExpanded"
+  <div v-else>
+    <div
+      v-if="needMute && !unmuted"
+      class="container muted"
     >
-      <UserAvatar
-        :compact="true"
-        :better-shadow="betterShadow"
-        :user="notification.from_profile"
-      />
-    </a>
-    <div class="notification-right">
-      <UserCard
-        v-if="userExpanded"
-        :user="getUser(notification)"
-        :rounded="true"
-        :bordered="true"
-      />
-      <span class="notification-details">
-        <div class="name-and-action">
-          <!-- eslint-disable vue/no-v-html -->
-          <span
-            v-if="!!notification.from_profile.name_html"
-            class="username"
-            :title="'@'+notification.from_profile.screen_name"
-            v-html="notification.from_profile.name_html"
-          />
-          <!-- eslint-enable vue/no-v-html -->
-          <span
-            v-else
-            class="username"
-            :title="'@'+notification.from_profile.screen_name"
-          >{{ notification.from_profile.name }}</span>
-          <span v-if="notification.type === 'like'">
-            <i class="fa icon-star lit" />
-            <small>{{ $t('notifications.favorited_you') }}</small>
-          </span>
-          <span v-if="notification.type === 'repeat'">
-            <i
-              class="fa icon-retweet lit"
-              :title="$t('tool_tip.repeat')"
+      <small>
+        <router-link :to="userProfileLink">
+          {{ notification.from_profile.screen_name }}
+        </router-link>
+      </small>
+      <a
+        href="#"
+        class="unmute"
+        @click.prevent="toggleMute"
+      ><i class="button-icon icon-eye-off" /></a>
+    </div>
+    <div
+      v-else
+      class="non-mention"
+      :class="[userClass, { highlighted: userStyle }]"
+      :style="[ userStyle ]"
+    >
+      <a
+        class="avatar-container"
+        :href="notification.from_profile.statusnet_profile_url"
+        @click.stop.prevent.capture="toggleUserExpanded"
+      >
+        <UserAvatar
+          :compact="true"
+          :better-shadow="betterShadow"
+          :user="notification.from_profile"
+        />
+      </a>
+      <div class="notification-right">
+        <UserCard
+          v-if="userExpanded"
+          :user="getUser(notification)"
+          :rounded="true"
+          :bordered="true"
+        />
+        <span class="notification-details">
+          <div class="name-and-action">
+            <!-- eslint-disable vue/no-v-html -->
+            <span
+              v-if="!!notification.from_profile.name_html"
+              class="username"
+              :title="'@'+notification.from_profile.screen_name"
+              v-html="notification.from_profile.name_html"
             />
-            <small>{{ $t('notifications.repeated_you') }}</small>
-          </span>
-          <span v-if="notification.type === 'follow'">
-            <i class="fa icon-user-plus lit" />
-            <small>{{ $t('notifications.followed_you') }}</small>
-          </span>
-        </div>
+            <!-- eslint-enable vue/no-v-html -->
+            <span
+              v-else
+              class="username"
+              :title="'@'+notification.from_profile.screen_name"
+            >{{ notification.from_profile.name }}</span>
+            <span v-if="notification.type === 'like'">
+              <i class="fa icon-star lit" />
+              <small>{{ $t('notifications.favorited_you') }}</small>
+            </span>
+            <span v-if="notification.type === 'repeat'">
+              <i
+                class="fa icon-retweet lit"
+                :title="$t('tool_tip.repeat')"
+              />
+              <small>{{ $t('notifications.repeated_you') }}</small>
+            </span>
+            <span v-if="notification.type === 'follow'">
+              <i class="fa icon-user-plus lit" />
+              <small>{{ $t('notifications.followed_you') }}</small>
+            </span>
+          </div>
+          <div
+            v-if="notification.type === 'follow'"
+            class="timeago"
+          >
+            <span class="faint">
+              <Timeago
+                :time="notification.created_at"
+                :auto-update="240"
+              />
+            </span>
+          </div>
+          <div
+            v-else
+            class="timeago"
+          >
+            <router-link
+              v-if="notification.status"
+              :to="{ name: 'conversation', params: { id: notification.status.id } }"
+              class="faint-link"
+            >
+              <Timeago
+                :time="notification.created_at"
+                :auto-update="240"
+              />
+            </router-link>
+          </div>
+          <a
+            v-if="needMute"
+            href="#"
+            @click.prevent="toggleMute"
+          ><i class="button-icon icon-eye-off" /></a>
+        </span>
         <div
           v-if="notification.type === 'follow'"
-          class="timeago"
+          class="follow-text"
         >
-          <span class="faint">
-            <Timeago
-              :time="notification.created_at"
-              :auto-update="240"
-            />
-          </span>
-        </div>
-        <div
-          v-else
-          class="timeago"
-        >
-          <router-link
-            v-if="notification.status"
-            :to="{ name: 'conversation', params: { id: notification.status.id } }"
-            class="faint-link"
-          >
-            <Timeago
-              :time="notification.created_at"
-              :auto-update="240"
-            />
+          <router-link :to="userProfileLink">
+            @{{ notification.from_profile.screen_name }}
           </router-link>
         </div>
-      </span>
-      <div
-        v-if="notification.type === 'follow'"
-        class="follow-text"
-      >
-        <router-link :to="userProfileLink(notification.from_profile)">
-          @{{ notification.from_profile.screen_name }}
-        </router-link>
+        <template v-else>
+          <status
+            class="faint"
+            :compact="true"
+            :statusoid="notification.action"
+            :no-heading="true"
+          />
+        </template>
       </div>
-      <template v-else>
-        <status
-          class="faint"
-          :compact="true"
-          :statusoid="notification.action"
-          :no-heading="true"
-        />
-      </template>
     </div>
   </div>
 </template>
diff --git a/src/components/notifications/notifications.scss b/src/components/notifications/notifications.scss
index 622d12f4..71876b14 100644
--- a/src/components/notifications/notifications.scss
+++ b/src/components/notifications/notifications.scss
@@ -33,7 +33,6 @@
 
 .notification {
   box-sizing: border-box;
-  display: flex;
   border-bottom: 1px solid;
   border-color: $fallback--border;
   border-color: var(--border, $fallback--border);
@@ -47,6 +46,10 @@
     }
   }
 
+  .muted {
+    padding: .25em .6em;
+  }
+
   .non-mention {
     display: flex;
     flex: 1;

From f8139e369c0ca4ae90cca78c5d1fee69b88375d6 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Tue, 10 Sep 2019 16:21:52 -0400
Subject: [PATCH 52/81] wire up user state with global store

---
 src/components/notification/notification.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/components/notification/notification.js b/src/components/notification/notification.js
index 181f7715..8e817f3b 100644
--- a/src/components/notification/notification.js
+++ b/src/components/notification/notification.js
@@ -53,10 +53,10 @@ const Notification = {
       return this.notification.from_profile
     },
     userProfileLink () {
-      return this.generateUserProfileLink(this.notification.from_profile)
+      return this.generateUserProfileLink(this.user)
     },
     needMute () {
-      return this.notification.from_profile.muted
+      return this.user.muted
     }
   }
 }

From 5ff899b455e07e41eb1b89985177655279f8263f Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Tue, 17 Sep 2019 15:59:17 -0400
Subject: [PATCH 53/81] add mention button

---
 src/components/user_card/user_card.js  | 3 +++
 src/components/user_card/user_card.vue | 9 +++++++++
 src/i18n/en.json                       | 1 +
 3 files changed, 13 insertions(+)

diff --git a/src/components/user_card/user_card.js b/src/components/user_card/user_card.js
index e3bd7697..d42be9fc 100644
--- a/src/components/user_card/user_card.js
+++ b/src/components/user_card/user_card.js
@@ -168,6 +168,9 @@ export default {
       }
       this.$store.dispatch('setMedia', [attachment])
       this.$store.dispatch('setCurrent', attachment)
+    },
+    mentionUser () {
+
     }
   }
 }
diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue
index 0b83cf16..f25d16d3 100644
--- a/src/components/user_card/user_card.vue
+++ b/src/components/user_card/user_card.vue
@@ -188,6 +188,15 @@
             </ProgressButton>
           </div>
 
+          <div>
+            <button
+              class="btn btn-default btn-block"
+              @click="mentionUser"
+            >
+              {{ $t('user_card.mention') }}
+            </button>
+          </div>
+
           <div>
             <button
               v-if="user.muted"
diff --git a/src/i18n/en.json b/src/i18n/en.json
index ddde471a..e4af507e 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -529,6 +529,7 @@
     "follows_you": "Follows you!",
     "its_you": "It's you!",
     "media": "Media",
+    "mention": "Mention",
     "mute": "Mute",
     "muted": "Muted",
     "per_day": "per day",

From 90981dcce6bbed1ba7700a7f1f4d74838e217b55 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Tue, 17 Sep 2019 22:32:17 -0400
Subject: [PATCH 54/81] remove needless condition

---
 src/components/user_panel/user_panel.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/user_panel/user_panel.vue b/src/components/user_panel/user_panel.vue
index c92630e3..e859d612 100644
--- a/src/components/user_panel/user_panel.vue
+++ b/src/components/user_panel/user_panel.vue
@@ -11,7 +11,7 @@
         rounded="top"
       />
       <div class="panel-footer">
-        <post-status-form v-if="user" />
+        <post-status-form />
       </div>
     </div>
     <auth-form

From f4bbf1d4e205e3c3438226d0cf71e77d4bc0be11 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Thu, 19 Sep 2019 13:27:37 -0400
Subject: [PATCH 55/81] add new module and modal to post new status

---
 src/App.js                                    |  4 +-
 src/App.vue                                   |  1 +
 .../post_status_modal/post_status_modal.js    | 25 +++++++++++
 .../post_status_modal/post_status_modal.vue   | 42 +++++++++++++++++++
 src/components/user_card/user_card.js         |  2 +-
 src/main.js                                   |  4 +-
 src/modules/postStatus.js                     | 25 +++++++++++
 7 files changed, 100 insertions(+), 3 deletions(-)
 create mode 100644 src/components/post_status_modal/post_status_modal.js
 create mode 100644 src/components/post_status_modal/post_status_modal.vue
 create mode 100644 src/modules/postStatus.js

diff --git a/src/App.js b/src/App.js
index e9cd5917..40f362d2 100644
--- a/src/App.js
+++ b/src/App.js
@@ -11,6 +11,7 @@ import SideDrawer from './components/side_drawer/side_drawer.vue'
 import MobilePostStatusModal from './components/mobile_post_status_modal/mobile_post_status_modal.vue'
 import MobileNav from './components/mobile_nav/mobile_nav.vue'
 import UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'
+import PostStatusModal from './components/post_status_modal/post_status_modal.vue'
 import { windowWidth } from './services/window_utils/window_utils'
 
 export default {
@@ -28,7 +29,8 @@ export default {
     SideDrawer,
     MobilePostStatusModal,
     MobileNav,
-    UserReportingModal
+    UserReportingModal,
+    PostStatusModal
   },
   data: () => ({
     mobileActivePanel: 'timeline',
diff --git a/src/App.vue b/src/App.vue
index 719e00a4..46d3ac42 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -109,6 +109,7 @@
     />
     <MobilePostStatusModal />
     <UserReportingModal />
+    <PostStatusModal />
     <portal-target name="modal" />
   </div>
 </template>
diff --git a/src/components/post_status_modal/post_status_modal.js b/src/components/post_status_modal/post_status_modal.js
new file mode 100644
index 00000000..86a4e1d8
--- /dev/null
+++ b/src/components/post_status_modal/post_status_modal.js
@@ -0,0 +1,25 @@
+import PostStatusForm from '../post_status_form/post_status_form.vue'
+
+const PostStatusModal = {
+  components: {
+    PostStatusForm
+  },
+  computed: {
+    isLoggedIn () {
+      return !!this.$store.state.users.currentUser
+    },
+    isOpen () {
+      return this.isLoggedIn && this.$store.state.postStatus.modalActivated
+    },
+    params () {
+      return this.$store.state.postStatus.params
+    }
+  },
+  methods: {
+    closeModal () {
+      this.$store.dispatch('closePostStatusModal')
+    }
+  }
+}
+
+export default PostStatusModal
diff --git a/src/components/post_status_modal/post_status_modal.vue b/src/components/post_status_modal/post_status_modal.vue
new file mode 100644
index 00000000..85a5401c
--- /dev/null
+++ b/src/components/post_status_modal/post_status_modal.vue
@@ -0,0 +1,42 @@
+<template>
+  <div
+    v-if="isOpen"
+    class="post-form-modal-view modal-view"
+    @click="closeModal"
+  >
+    <div
+      class="post-form-modal-panel panel"
+      @click.stop=""
+    >
+      <div class="panel-heading">
+        {{ $t('post_status.new_status') }}
+      </div>
+      <PostStatusForm
+        class="panel-body"
+        @posted="closeModal"
+      />
+    </div>
+  </div>
+</template>
+
+<script src="./post_status_modal.js"></script>
+
+<style lang="scss">
+@import '../../_variables.scss';
+
+.post-form-modal-view {
+  align-items: flex-start;
+}
+
+.post-form-modal-panel {
+  flex-shrink: 0;
+  margin-top: 25%;
+  margin-bottom: 2em;
+  width: 100%;
+  max-width: 700px;
+
+  @media (orientation: landscape) {
+    margin-top: 8%;
+  }
+}
+</style>
diff --git a/src/components/user_card/user_card.js b/src/components/user_card/user_card.js
index d42be9fc..0c200ad1 100644
--- a/src/components/user_card/user_card.js
+++ b/src/components/user_card/user_card.js
@@ -170,7 +170,7 @@ export default {
       this.$store.dispatch('setCurrent', attachment)
     },
     mentionUser () {
-
+      this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })
     }
   }
 }
diff --git a/src/main.js b/src/main.js
index b3256e8e..a43d31e2 100644
--- a/src/main.js
+++ b/src/main.js
@@ -15,6 +15,7 @@ import mediaViewerModule from './modules/media_viewer.js'
 import oauthTokensModule from './modules/oauth_tokens.js'
 import reportsModule from './modules/reports.js'
 import pollsModule from './modules/polls.js'
+import postStatusModule from './modules/postStatus.js'
 
 import VueI18n from 'vue-i18n'
 
@@ -76,7 +77,8 @@ const persistedStateOptions = {
       mediaViewer: mediaViewerModule,
       oauthTokens: oauthTokensModule,
       reports: reportsModule,
-      polls: pollsModule
+      polls: pollsModule,
+      postStatus: postStatusModule
     },
     plugins: [persistedState, pushNotifications],
     strict: false // Socket modifies itself, let's ignore this for now.
diff --git a/src/modules/postStatus.js b/src/modules/postStatus.js
new file mode 100644
index 00000000..638c1fb2
--- /dev/null
+++ b/src/modules/postStatus.js
@@ -0,0 +1,25 @@
+const postStatus = {
+  state: {
+    params: null,
+    modalActivated: false
+  },
+  mutations: {
+    openPostStatusModal (state, params) {
+      state.params = params
+      state.modalActivated = true
+    },
+    closePostStatusModal (state) {
+      state.modalActivated = false
+    }
+  },
+  actions: {
+    openPostStatusModal ({ commit }, params) {
+      commit('openPostStatusModal', params)
+    },
+    closePostStatusModal ({ commit }) {
+      commit('closePostStatusModal')
+    }
+  }
+}
+
+export default postStatus

From a9f33272a860fd95def54c7dafa863056324122d Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Thu, 19 Sep 2019 13:52:20 -0400
Subject: [PATCH 56/81] refactor MobilePostStatusModal using new
 PostStatusModal

---
 .../mobile_post_status_modal.js               | 21 ++---------
 .../mobile_post_status_modal.vue              | 36 +------------------
 2 files changed, 4 insertions(+), 53 deletions(-)

diff --git a/src/components/mobile_post_status_modal/mobile_post_status_modal.js b/src/components/mobile_post_status_modal/mobile_post_status_modal.js
index 3cec23c6..3be4a1d8 100644
--- a/src/components/mobile_post_status_modal/mobile_post_status_modal.js
+++ b/src/components/mobile_post_status_modal/mobile_post_status_modal.js
@@ -1,14 +1,9 @@
-import PostStatusForm from '../post_status_form/post_status_form.vue'
 import { debounce } from 'lodash'
 
 const MobilePostStatusModal = {
-  components: {
-    PostStatusForm
-  },
   data () {
     return {
       hidden: false,
-      postFormOpen: false,
       scrollingDown: false,
       inputActive: false,
       oldScrollPos: 0,
@@ -28,8 +23,8 @@ const MobilePostStatusModal = {
     window.removeEventListener('resize', this.handleOSK)
   },
   computed: {
-    currentUser () {
-      return this.$store.state.users.currentUser
+    isLoggedIn () {
+      return !!this.$store.state.users.currentUser
     },
     isHidden () {
       return this.autohideFloatingPostButton && (this.hidden || this.inputActive)
@@ -57,17 +52,7 @@ const MobilePostStatusModal = {
       window.removeEventListener('scroll', this.handleScrollEnd)
     },
     openPostForm () {
-      this.postFormOpen = true
-      this.hidden = true
-
-      const el = this.$el.querySelector('textarea')
-      this.$nextTick(function () {
-        el.focus()
-      })
-    },
-    closePostForm () {
-      this.postFormOpen = false
-      this.hidden = false
+      this.$store.dispatch('openPostStatusModal')
     },
     handleOSK () {
       // This is a big hack: we're guessing from changed window sizes if the
diff --git a/src/components/mobile_post_status_modal/mobile_post_status_modal.vue b/src/components/mobile_post_status_modal/mobile_post_status_modal.vue
index b6d7d3ba..38c5fce0 100644
--- a/src/components/mobile_post_status_modal/mobile_post_status_modal.vue
+++ b/src/components/mobile_post_status_modal/mobile_post_status_modal.vue
@@ -1,23 +1,5 @@
 <template>
-  <div v-if="currentUser">
-    <div
-      v-show="postFormOpen"
-      class="post-form-modal-view modal-view"
-      @click="closePostForm"
-    >
-      <div
-        class="post-form-modal-panel panel"
-        @click.stop=""
-      >
-        <div class="panel-heading">
-          {{ $t('post_status.new_status') }}
-        </div>
-        <PostStatusForm
-          class="panel-body"
-          @posted="closePostForm"
-        />
-      </div>
-    </div>
+  <div v-if="isLoggedIn">
     <button
       class="new-status-button"
       :class="{ 'hidden': isHidden }"
@@ -33,22 +15,6 @@
 <style lang="scss">
 @import '../../_variables.scss';
 
-.post-form-modal-view {
-  align-items: flex-start;
-}
-
-.post-form-modal-panel {
-  flex-shrink: 0;
-  margin-top: 25%;
-  margin-bottom: 2em;
-  width: 100%;
-  max-width: 700px;
-
-  @media (orientation: landscape) {
-    margin-top: 8%;
-  }
-}
-
 .new-status-button {
   width: 5em;
   height: 5em;

From 0c8038d4f610bd7260b920e6fb55a8ea0341d291 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Thu, 19 Sep 2019 13:52:54 -0400
Subject: [PATCH 57/81] recover autofocusing behavior

---
 src/components/post_status_modal/post_status_modal.js | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/components/post_status_modal/post_status_modal.js b/src/components/post_status_modal/post_status_modal.js
index 86a4e1d8..15783642 100644
--- a/src/components/post_status_modal/post_status_modal.js
+++ b/src/components/post_status_modal/post_status_modal.js
@@ -15,6 +15,13 @@ const PostStatusModal = {
       return this.$store.state.postStatus.params
     }
   },
+  watch: {
+    isOpen (val) {
+      if (val) {
+        this.$nextTick(() => this.$el.querySelector('textarea').focus())
+      }
+    }
+  },
   methods: {
     closeModal () {
       this.$store.dispatch('closePostStatusModal')

From d6a941a128f37a2d04f5e60ad21037c2c5efcfa3 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Thu, 19 Sep 2019 13:59:34 -0400
Subject: [PATCH 58/81] rename component

---
 src/App.js                                                    | 4 ++--
 src/App.vue                                                   | 2 +-
 .../mobile_post_status_button.js}                             | 4 ++--
 .../mobile_post_status_button.vue}                            | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)
 rename src/components/{mobile_post_status_modal/mobile_post_status_modal.js => mobile_post_status_button/mobile_post_status_button.js} (97%)
 rename src/components/{mobile_post_status_modal/mobile_post_status_modal.vue => mobile_post_status_button/mobile_post_status_button.vue} (95%)

diff --git a/src/App.js b/src/App.js
index 40f362d2..fe63b54c 100644
--- a/src/App.js
+++ b/src/App.js
@@ -8,7 +8,7 @@ import WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_pan
 import ChatPanel from './components/chat_panel/chat_panel.vue'
 import MediaModal from './components/media_modal/media_modal.vue'
 import SideDrawer from './components/side_drawer/side_drawer.vue'
-import MobilePostStatusModal from './components/mobile_post_status_modal/mobile_post_status_modal.vue'
+import MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'
 import MobileNav from './components/mobile_nav/mobile_nav.vue'
 import UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'
 import PostStatusModal from './components/post_status_modal/post_status_modal.vue'
@@ -27,7 +27,7 @@ export default {
     ChatPanel,
     MediaModal,
     SideDrawer,
-    MobilePostStatusModal,
+    MobilePostStatusButton,
     MobileNav,
     UserReportingModal,
     PostStatusModal
diff --git a/src/App.vue b/src/App.vue
index 46d3ac42..f1086e60 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -107,7 +107,7 @@
       :floating="true"
       class="floating-chat mobile-hidden"
     />
-    <MobilePostStatusModal />
+    <MobilePostStatusButton />
     <UserReportingModal />
     <PostStatusModal />
     <portal-target name="modal" />
diff --git a/src/components/mobile_post_status_modal/mobile_post_status_modal.js b/src/components/mobile_post_status_button/mobile_post_status_button.js
similarity index 97%
rename from src/components/mobile_post_status_modal/mobile_post_status_modal.js
rename to src/components/mobile_post_status_button/mobile_post_status_button.js
index 3be4a1d8..3e77148a 100644
--- a/src/components/mobile_post_status_modal/mobile_post_status_modal.js
+++ b/src/components/mobile_post_status_button/mobile_post_status_button.js
@@ -1,6 +1,6 @@
 import { debounce } from 'lodash'
 
-const MobilePostStatusModal = {
+const MobilePostStatusButton = {
   data () {
     return {
       hidden: false,
@@ -90,4 +90,4 @@ const MobilePostStatusModal = {
   }
 }
 
-export default MobilePostStatusModal
+export default MobilePostStatusButton
diff --git a/src/components/mobile_post_status_modal/mobile_post_status_modal.vue b/src/components/mobile_post_status_button/mobile_post_status_button.vue
similarity index 95%
rename from src/components/mobile_post_status_modal/mobile_post_status_modal.vue
rename to src/components/mobile_post_status_button/mobile_post_status_button.vue
index 38c5fce0..9cf45de3 100644
--- a/src/components/mobile_post_status_modal/mobile_post_status_modal.vue
+++ b/src/components/mobile_post_status_button/mobile_post_status_button.vue
@@ -10,7 +10,7 @@
   </div>
 </template>
 
-<script src="./mobile_post_status_modal.js"></script>
+<script src="./mobile_post_status_button.js"></script>
 
 <style lang="scss">
 @import '../../_variables.scss';

From c8a18f387c28d5f895c1e727b0d040da96dcebc1 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Thu, 19 Sep 2019 14:38:55 -0400
Subject: [PATCH 59/81] wire up props with PostStatusModal

---
 src/components/post_status_form/post_status_form.js    | 2 +-
 src/components/post_status_modal/post_status_modal.js  | 2 +-
 src/components/post_status_modal/post_status_modal.vue | 1 +
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 40bbf6d4..dc4b419c 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -8,7 +8,7 @@ import fileTypeService from '../../services/file_type/file_type.service.js'
 import { reject, map, uniqBy } from 'lodash'
 import suggestor from '../emoji-input/suggestor.js'
 
-const buildMentionsString = ({ user, attentions }, currentUser) => {
+const buildMentionsString = ({ user, attentions = [] }, currentUser) => {
   let allAttentions = [...attentions]
 
   allAttentions.unshift(user)
diff --git a/src/components/post_status_modal/post_status_modal.js b/src/components/post_status_modal/post_status_modal.js
index 15783642..1033ba11 100644
--- a/src/components/post_status_modal/post_status_modal.js
+++ b/src/components/post_status_modal/post_status_modal.js
@@ -12,7 +12,7 @@ const PostStatusModal = {
       return this.isLoggedIn && this.$store.state.postStatus.modalActivated
     },
     params () {
-      return this.$store.state.postStatus.params
+      return this.$store.state.postStatus.params || {}
     }
   },
   watch: {
diff --git a/src/components/post_status_modal/post_status_modal.vue b/src/components/post_status_modal/post_status_modal.vue
index 85a5401c..3f8eec69 100644
--- a/src/components/post_status_modal/post_status_modal.vue
+++ b/src/components/post_status_modal/post_status_modal.vue
@@ -13,6 +13,7 @@
       </div>
       <PostStatusForm
         class="panel-body"
+        v-bind="params"
         @posted="closeModal"
       />
     </div>

From 60c3501d35817f591775a0309f3f7070a14bfd4a Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Fri, 19 Jul 2019 12:24:23 -0400
Subject: [PATCH 60/81] install body-scroll-lock

---
 package.json | 1 +
 yarn.lock    | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/package.json b/package.json
index 0f6ae9c8..f039d412 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
     "@chenfengyuan/vue-qrcode": "^1.0.0",
     "babel-plugin-add-module-exports": "^0.2.1",
     "babel-plugin-lodash": "^3.2.11",
+    "body-scroll-lock": "^2.6.4",
     "chromatism": "^3.0.0",
     "cropperjs": "^1.4.3",
     "diff": "^3.0.1",
diff --git a/yarn.lock b/yarn.lock
index d6c8b4a6..4e0d9a22 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1196,6 +1196,11 @@ body-parser@1.18.3, body-parser@^1.16.1:
     raw-body "2.3.3"
     type-is "~1.6.16"
 
+body-scroll-lock@^2.6.4:
+  version "2.6.4"
+  resolved "https://registry.yarnpkg.com/body-scroll-lock/-/body-scroll-lock-2.6.4.tgz#567abc60ef4d656a79156781771398ef40462e94"
+  integrity sha512-NP08WsovlmxEoZP9pdlqrE+AhNaivlTrz9a0FF37BQsnOrpN48eNqivKkE7SYpM9N+YIPjsdVzfLAUQDBm6OQw==
+
 boolbase@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"

From 8b321f6f1fd8b906cd9e224bbfc2356c8e4e4235 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Fri, 19 Jul 2019 12:27:03 -0400
Subject: [PATCH 61/81] add body-scroll-lock directive

---
 src/directives/body_scroll_lock.js | 69 ++++++++++++++++++++++++++++++
 src/main.js                        |  2 +
 2 files changed, 71 insertions(+)
 create mode 100644 src/directives/body_scroll_lock.js

diff --git a/src/directives/body_scroll_lock.js b/src/directives/body_scroll_lock.js
new file mode 100644
index 00000000..6ab20c3f
--- /dev/null
+++ b/src/directives/body_scroll_lock.js
@@ -0,0 +1,69 @@
+import * as bodyScrollLock from 'body-scroll-lock'
+
+let previousNavPaddingRight
+let previousAppBgWrapperRight
+
+const disableBodyScroll = (el) => {
+  const scrollBarGap = window.innerWidth - document.documentElement.clientWidth
+  bodyScrollLock.disableBodyScroll(el, {
+    reserveScrollBarGap: true
+  })
+  setTimeout(() => {
+    // If previousNavPaddingRight is already set, don't set it again.
+    if (previousNavPaddingRight === undefined) {
+      const navEl = document.getElementById('nav')
+      previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')
+      navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`
+    }
+    // If previousAppBgWrapeprRight is already set, don't set it again.
+    if (previousAppBgWrapperRight === undefined) {
+      const appBgWrapperEl = document.getElementById('app_bg_wrapper')
+      previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')
+      appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`
+    }
+    document.body.classList.add('scroll-locked')
+  })
+}
+
+const enableBodyScroll = (el) => {
+  setTimeout(() => {
+    if (previousNavPaddingRight !== undefined) {
+      document.getElementById('nav').style.paddingRight = previousNavPaddingRight
+      // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.
+      previousNavPaddingRight = undefined
+    }
+    if (previousAppBgWrapperRight !== undefined) {
+      document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight
+      // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.
+      previousAppBgWrapperRight = undefined
+    }
+    document.body.classList.remove('scroll-locked')
+  })
+  bodyScrollLock.enableBodyScroll(el)
+}
+
+const directive = {
+  inserted: (el, binding) => {
+    if (binding.value) {
+      disableBodyScroll(el)
+    }
+  },
+  componentUpdated: (el, binding) => {
+    if (binding.oldValue === binding.value) {
+      return
+    }
+
+    if (binding.value) {
+      disableBodyScroll(el)
+    } else {
+      enableBodyScroll(el)
+    }
+  },
+  unbind: (el) => {
+    enableBodyScroll(el)
+  }
+}
+
+export default (Vue) => {
+  Vue.directive('body-scroll-lock', directive)
+}
diff --git a/src/main.js b/src/main.js
index b3256e8e..ffaf0ad5 100644
--- a/src/main.js
+++ b/src/main.js
@@ -26,6 +26,7 @@ import messages from './i18n/messages.js'
 import VueChatScroll from 'vue-chat-scroll'
 import VueClickOutside from 'v-click-outside'
 import PortalVue from 'portal-vue'
+import VBodyScrollLock from './directives/body_scroll_lock'
 import VTooltip from 'v-tooltip'
 
 import afterStoreSetup from './boot/after_store.js'
@@ -38,6 +39,7 @@ Vue.use(VueI18n)
 Vue.use(VueChatScroll)
 Vue.use(VueClickOutside)
 Vue.use(PortalVue)
+Vue.use(VBodyScrollLock)
 Vue.use(VTooltip)
 
 const i18n = new VueI18n({

From ad504768feacecdbd9f41f4bca470a58fdf0d059 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Fri, 19 Jul 2019 12:36:07 -0400
Subject: [PATCH 62/81] lock body scroll

---
 src/App.vue                                | 1 +
 src/components/media_modal/media_modal.vue | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/src/App.vue b/src/App.vue
index 719e00a4..d7453549 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -4,6 +4,7 @@
     :style="bgAppStyle"
   >
     <div
+      id="app_bg_wrapper"
       class="app-bg-wrapper"
       :style="bgStyle"
     />
diff --git a/src/components/media_modal/media_modal.vue b/src/components/media_modal/media_modal.vue
index ab5a36a5..06ced5a1 100644
--- a/src/components/media_modal/media_modal.vue
+++ b/src/components/media_modal/media_modal.vue
@@ -1,6 +1,7 @@
 <template>
   <div
     v-if="showing"
+    v-body-scroll-lock="showing"
     class="modal-view media-modal-view"
     @click.prevent="hide"
   >
@@ -43,6 +44,10 @@
 .media-modal-view {
   z-index: 1001;
 
+  body:not(.scroll-locked) & {
+    display: none;
+  }
+
   &:hover {
     .modal-view-button-arrow {
       opacity: 0.75;

From ae70439447d029e5f9e2fcd558dc198bff47c89b Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Fri, 19 Jul 2019 12:39:18 -0400
Subject: [PATCH 63/81] setting display: initial makes trouble, instead, toggle
 display: none using classname

---
 index.html   | 2 +-
 src/App.scss | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/index.html b/index.html
index a8681c8b..fd4e795e 100644
--- a/index.html
+++ b/index.html
@@ -9,7 +9,7 @@
     <link rel="stylesheet" href="/static/font/css/fontello.css">
     <link rel="stylesheet" href="/static/font/css/animation.css">
   </head>
-  <body>
+  <body class="hidden">
     <noscript>To use Pleroma, please enable JavaScript.</noscript>
     <div id="app"></div>
     <!-- built files will be auto injected -->
diff --git a/src/App.scss b/src/App.scss
index ea7b54e8..1f0b2619 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -38,6 +38,10 @@ h4 {
   text-align: center;
 }
 
+.hidden {
+  display: none;
+}
+
 body {
   font-family: sans-serif;
   font-family: var(--interfaceFont, sans-serif);

From 92be5a68776633b166323108dd34216eaae20753 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Fri, 19 Jul 2019 12:50:21 -0400
Subject: [PATCH 64/81] Reserve scrollbar gap when body scroll is locked

---
 src/App.scss | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/App.scss b/src/App.scss
index 1f0b2619..3914cec2 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -10,7 +10,8 @@
   position: fixed;
   z-index: -1;
   height: 100%;
-  width: 100%;
+  left: 0;
+  right: -20px;
   background-size: cover;
   background-repeat: no-repeat;
   background-position: 0 50%;
@@ -351,6 +352,7 @@ i[class*=icon-] {
   align-items: center;
   position: fixed;
   height: 50px;
+  box-sizing: border-box;
 
   .logo {
     display: flex;

From 37ae0fd92c2d392cda56912707e6c52faec54334 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Thu, 5 Sep 2019 12:22:56 -0400
Subject: [PATCH 65/81] fix logo moving bug when lightbox is open

---
 src/App.scss |  1 +
 src/App.vue  | 26 +++++++++++++-------------
 2 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/App.scss b/src/App.scss
index 3914cec2..a8850961 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -392,6 +392,7 @@ i[class*=icon-] {
   }
 
   .inner-nav {
+    position: relative;
     margin: auto;
     box-sizing: border-box;
     padding-left: 10px;
diff --git a/src/App.vue b/src/App.vue
index d7453549..eb571a17 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -15,20 +15,20 @@
       class="nav-bar container"
       @click="scrollToTop()"
     >
-      <div
-        class="logo"
-        :style="logoBgStyle"
-      >
-        <div
-          class="mask"
-          :style="logoMaskStyle"
-        />
-        <img
-          :src="logo"
-          :style="logoStyle"
-        >
-      </div>
       <div class="inner-nav">
+        <div
+          class="logo"
+          :style="logoBgStyle"
+        >
+          <div
+            class="mask"
+            :style="logoMaskStyle"
+          />
+          <img
+            :src="logo"
+            :style="logoStyle"
+          >
+        </div>
         <div class="item">
           <router-link
             class="site-name"

From 7fe6ba2401745ce61e3fb2f438948693df322ba1 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Thu, 5 Sep 2019 12:28:47 -0400
Subject: [PATCH 66/81] avoid using global class

---
 src/App.scss | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/src/App.scss b/src/App.scss
index a8850961..2190f91a 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -39,10 +39,6 @@ h4 {
   text-align: center;
 }
 
-.hidden {
-  display: none;
-}
-
 body {
   font-family: sans-serif;
   font-family: var(--interfaceFont, sans-serif);

From 7b4cb387345c0e278a6cfe5bbff5265c09281567 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Mon, 23 Sep 2019 20:29:01 +0300
Subject: [PATCH 67/81] split spam mode into two separate options (one in
 settings page)

---
 src/components/emoji_input/emoji_input.js      | 15 +++++++++------
 src/components/emoji_picker/emoji_picker.js    |  4 ++--
 src/components/emoji_picker/emoji_picker.scss  |  4 ++--
 src/components/emoji_picker/emoji_picker.vue   | 12 ++++++------
 src/components/settings/settings.js            |  4 ++++
 src/components/settings/settings.vue           |  8 ++++++++
 src/i18n/en.json                               |  3 ++-
 src/modules/config.js                          |  1 +
 test/unit/specs/components/emoji_input.spec.js | 18 +++++++++---------
 9 files changed, 43 insertions(+), 26 deletions(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 86ff9707..5f90d7f4 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -89,7 +89,7 @@ const EmojiInput = {
       blurTimeout: null,
       showPicker: false,
       temporarilyHideSuggestions: false,
-      spamMode: false,
+      keepOpen: false,
       disableClickOutside: false
     }
   },
@@ -97,6 +97,9 @@ const EmojiInput = {
     EmojiPicker
   },
   computed: {
+    padEmoji () {
+      return this.$store.state.config.padEmoji
+    },
     suggestions () {
       const firstchar = this.textAtCaret.charAt(0)
       if (this.textAtCaret === firstchar) { return [] }
@@ -176,7 +179,7 @@ const EmojiInput = {
       this.$emit('input', newValue)
       this.caret = 0
     },
-    insert ({ insertion, spamMode }) {
+    insert ({ insertion, keepOpen }) {
       const before = this.value.substring(0, this.caret) || ''
       const after = this.value.substring(this.caret) || ''
 
@@ -195,8 +198,8 @@ const EmojiInput = {
        * them, masto seem to be rendering :emoji::emoji: correctly now so why not
        */
       const isSpaceRegex = /\s/
-      const spaceBefore = !isSpaceRegex.exec(before.slice(-1)) && before.length && !spamMode > 0 ? ' ' : ''
-      const spaceAfter = !isSpaceRegex.exec(after[0]) && !spamMode ? ' ' : ''
+      const spaceBefore = !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0 ? ' ' : ''
+      const spaceAfter = !isSpaceRegex.exec(after[0]) && this.padEmoji ? ' ' : ''
 
       const newValue = [
         before,
@@ -205,7 +208,7 @@ const EmojiInput = {
         spaceAfter,
         after
       ].join('')
-      this.spamMode = spamMode
+      this.keepOpen = keepOpen
       this.$emit('input', newValue)
       const position = this.caret + (insertion + spaceAfter + spaceBefore).length
 
@@ -283,7 +286,7 @@ const EmojiInput = {
         this.blurTimeout = null
       }
 
-      if (!this.spamMode) {
+      if (!this.keepOpen) {
         this.showPicker = false
       }
       this.focused = true
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index cb93f0c1..824412dd 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -18,7 +18,7 @@ const EmojiPicker = {
       activeGroup: 'custom',
       showingStickers: false,
       groupsScrolledClass: 'scrolled-top',
-      spamMode: false
+      keepOpen: false
     }
   },
   components: {
@@ -27,7 +27,7 @@ const EmojiPicker = {
   methods: {
     onEmoji (emoji) {
       const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement
-      this.$emit('emoji', { insertion: value, spamMode: this.spamMode })
+      this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })
     },
     highlight (key) {
       const ref = this.$refs['group-' + key]
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 09438898..b0ed00e9 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -10,11 +10,11 @@
   margin: 0 !important;
   z-index: 1;
 
-  .spam-mode {
+  .keep-open {
     padding: 7px;
     line-height: normal;
   }
-  .spam-mode-label {
+  .keep-open-label {
     padding: 0 7px;
     display: flex;
   }
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index b32d0862..6c43dd97 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -76,16 +76,16 @@
           </div>
         </div>
         <div
-          class="spam-mode"
+          class="keep-open"
           >
           <input
-            :id="labelKey + 'spam-mode'"
-            v-model="spamMode"
+            :id="labelKey + 'keep-open'"
+            v-model="keepOpen"
             type="checkbox"
             >
-          <label class="spam-mode-label" :for="labelKey + 'spam-mode'">
-            <div class="spam-mode-label-text">
-              {{ $t('emoji.spam') }}
+          <label class="keep-open-label" :for="labelKey + 'keep-open'">
+            <div class="keep-open-label-text">
+              {{ $t('emoji.keep_open') }}
             </div>
           </label>
         </div>
diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js
index c4aa45b2..b6540d7e 100644
--- a/src/components/settings/settings.js
+++ b/src/components/settings/settings.js
@@ -16,6 +16,7 @@ const settings = {
 
     return {
       hideAttachmentsLocal: user.hideAttachments,
+      padEmojiLocal: user.padEmoji,
       hideAttachmentsInConvLocal: user.hideAttachmentsInConv,
       maxThumbnails: user.maxThumbnails,
       hideNsfwLocal: user.hideNsfw,
@@ -127,6 +128,9 @@ const settings = {
     hideAttachmentsLocal (value) {
       this.$store.dispatch('setOption', { name: 'hideAttachments', value })
     },
+    padEmojiLocal (value) {
+      this.$store.dispatch('setOption', { name: 'padEmoji', value })
+    },
     hideAttachmentsInConvLocal (value) {
       this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })
     },
diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
index 744ec566..6d87a060 100644
--- a/src/components/settings/settings.vue
+++ b/src/components/settings/settings.vue
@@ -198,6 +198,14 @@
                   >
                   <label for="autohideFloatingPostButton">{{ $t('settings.autohide_floating_post_button') }}</label>
                 </li>
+                <li>
+                  <input
+                    id="padEmoji"
+                    v-model="padEmojiLocal"
+                    type="checkbox"
+                  >
+                  <label for="padEmoji">{{ $t('settings.pad_emoji') }}</label>
+                </li>
               </ul>
             </div>
 
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 7676e7a8..20d4ed22 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -109,7 +109,7 @@
   "emoji": {
     "stickers": "Stickers",
     "emoji": "Emoji",
-    "spam": "Keep picker open, don't separate emoji with spaces",
+    "keep_open": "Keep picker open",
     "search_emoji": "Search for an emoji",
     "add_emoji": "Insert emoji",
     "custom": "Custom emoji",
@@ -232,6 +232,7 @@
     "delete_account_error": "There was an issue deleting your account. If this persists please contact your instance administrator.",
     "delete_account_instructions": "Type your password in the input below to confirm account deletion.",
     "avatar_size_instruction": "The recommended minimum size for avatar images is 150x150 pixels.",
+    "pad_emoji": "Pad emoji with spaces when adding from picker",
     "export_theme": "Save preset",
     "filtering": "Filtering",
     "filtering_explanation": "All statuses containing these words will be muted, one per line",
diff --git a/src/modules/config.js b/src/modules/config.js
index 2bfad8f6..cf04d14f 100644
--- a/src/modules/config.js
+++ b/src/modules/config.js
@@ -7,6 +7,7 @@ const defaultState = {
   colors: {},
   hideMutedPosts: undefined, // instance default
   collapseMessageWithSubject: undefined, // instance default
+  padEmoji: true,
   hideAttachments: false,
   hideAttachmentsInConv: false,
   maxThumbnails: 16,
diff --git a/test/unit/specs/components/emoji_input.spec.js b/test/unit/specs/components/emoji_input.spec.js
index 5f24331a..13a59961 100644
--- a/test/unit/specs/components/emoji_input.spec.js
+++ b/test/unit/specs/components/emoji_input.spec.js
@@ -26,7 +26,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: '(test)', spamMode: false })
+      wrapper.vm.insert({ insertion: '(test)', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('Testing (test) ')
     })
 
@@ -36,7 +36,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: '(test)', spamMode: false })
+      wrapper.vm.insert({ insertion: '(test)', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('Testing (test) ')
     })
 
@@ -46,7 +46,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: 0 })
-      wrapper.vm.insert({ insertion: '(test)', spamMode: false })
+      wrapper.vm.insert({ insertion: '(test)', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('(test) Testing')
     })
 
@@ -56,7 +56,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: 6 })
-      wrapper.vm.insert({ insertion: ':ebin:', spamMode: false })
+      wrapper.vm.insert({ insertion: ':ebin:', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('Spurdo :ebin: Sparde')
     })
 
@@ -66,7 +66,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: 7 })
-      wrapper.vm.insert({ insertion: ':ebin:', spamMode: false })
+      wrapper.vm.insert({ insertion: ':ebin:', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('Spurdo :ebin: Sparde')
     })
 
@@ -76,7 +76,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: ':spam:', spamMode: true })
+      wrapper.vm.insert({ insertion: ':spam:', keepOpen: true })
       expect(wrapper.emitted().input[0][0]).to.eql('Eat some spam!:spam:')
     })
 
@@ -86,7 +86,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: 0 })
-      wrapper.vm.insert({ insertion: '1234', spamMode: false })
+      wrapper.vm.insert({ insertion: '1234', keepOpen: false })
       vue.nextTick(() => {
         expect(wrapper.vm.caret).to.eql(5)
         done()
@@ -99,7 +99,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: '1234', spamMode: false })
+      wrapper.vm.insert({ insertion: '1234', keepOpen: false })
       vue.nextTick(() => {
         expect(wrapper.vm.caret).to.eql(10)
         done()
@@ -112,7 +112,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: '1234', spamMode: true })
+      wrapper.vm.insert({ insertion: '1234', keepOpen: true })
       vue.nextTick(() => {
         expect(wrapper.vm.caret).to.eql(8)
         done()

From 6f0257cd7df8eca257774a0c456af7218896946f Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Mon, 23 Sep 2019 22:12:25 +0300
Subject: [PATCH 68/81] autoscroll post form on typing + some minor
 improvements

---
 src/components/emoji_input/emoji_input.js     |  4 +++-
 .../post_status_form/post_status_form.js      | 21 ++++++++++++++++++-
 .../post_status_form/post_status_form.vue     |  8 +++----
 3 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 5f90d7f4..25c21403 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -211,10 +211,12 @@ const EmojiInput = {
       this.keepOpen = keepOpen
       this.$emit('input', newValue)
       const position = this.caret + (insertion + spaceAfter + spaceBefore).length
+      if (!keepOpen) {
+        this.input.elm.focus()
+      }
 
       this.$nextTick(function () {
         // Re-focus inputbox after clicking suggestion
-        this.input.elm.focus()
         // Set selection right after the replacement instead of the very end
         this.input.elm.setSelectionRange(position, position)
         this.caret = position
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index d468be76..60cb5a9a 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -249,6 +249,7 @@ const PostStatusForm = {
       return fileTypeService.fileType(fileInfo.mimetype)
     },
     paste (e) {
+      this.resize()
       if (e.clipboardData.files.length > 0) {
         // prevent pasting of file as text
         e.preventDefault()
@@ -267,6 +268,11 @@ const PostStatusForm = {
     fileDrag (e) {
       e.dataTransfer.dropEffect = 'copy'
     },
+    onEmojiInputInput (e) {
+      this.$nextTick(() => {
+        this.resize(this.$refs['textarea'])
+      })
+    },
     resize (e) {
       const target = e.target || e
       if (!(target instanceof window.Element)) { return }
@@ -275,12 +281,25 @@ const PostStatusForm = {
       // Remove "px" at the end of the values
       const vertPadding = Number(topPaddingStr.substr(0, topPaddingStr.length - 2)) +
             Number(bottomPaddingStr.substr(0, bottomPaddingStr.length - 2))
+      const oldValue = Number((/([0-9.]+)px/.exec(target.style.height || '') || [])[1])
       // Auto is needed to make textbox shrink when removing lines
       target.style.height = 'auto'
-      target.style.height = `${target.scrollHeight - vertPadding}px`
+      const newValue = target.scrollHeight - vertPadding
+      target.style.height = `${newValue}px`
+      const scroller = this.$el.closest('.sidebar-scroller') ||
+            this.$el.closest('.post-form-modal-view') ||
+            window
+      const delta = newValue - oldValue || 0
       if (target.value === '') {
         target.style.height = null
+      } else {
+        /* For some reason this doens't _exactly_ work on mobile post form when typing
+         * but it works when adding emojis. Supposedly, removing the "height = auto"
+         * line helps with that but it obviously breaks the autoheight.
+         */
+        scroller.scrollBy(0, delta)
       }
+      this.$refs['emoji-input'].resize()
     },
     showEmojiPicker () {
       this.$refs['textarea'].focus()
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index b50607e6..99ffeef8 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -81,6 +81,7 @@
           enable-emoji-picker
           hide-emoji-button
           enable-sticker-picker
+          @input="onEmojiInputInput"
           @sticker-uploaded="addMediaFile"
           @sticker-upload-failed="uploadFailed"
         >
@@ -95,7 +96,8 @@
             @keyup.ctrl.enter="postStatus(newStatus)"
             @drop="fileDrop"
             @dragover.prevent="fileDrag"
-            @input="resize"
+            @keydown.exact="resize"
+            @compositionupdate="resize"
             @paste="paste"
           />
           <p
@@ -475,10 +477,6 @@
     box-sizing: content-box;
   }
 
-  .form-post-body:focus {
-    min-height: 48px;
-  }
-
   .main-input {
     position: relative;
   }

From 2154152d0846877d63877dce96170da1e7d68fdd Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Tue, 24 Sep 2019 00:06:53 +0300
Subject: [PATCH 69/81] fix some bugs

---
 src/components/post_status_form/post_status_form.js  | 2 +-
 src/components/post_status_form/post_status_form.vue | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 60cb5a9a..10e75144 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -249,7 +249,7 @@ const PostStatusForm = {
       return fileTypeService.fileType(fileInfo.mimetype)
     },
     paste (e) {
-      this.resize()
+      this.resize(e)
       if (e.clipboardData.files.length > 0) {
         // prevent pasting of file as text
         e.preventDefault()
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 99ffeef8..d24f1981 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -96,7 +96,7 @@
             @keyup.ctrl.enter="postStatus(newStatus)"
             @drop="fileDrop"
             @dragover.prevent="fileDrag"
-            @keydown.exact="resize"
+            @input="resize"
             @compositionupdate="resize"
             @paste="paste"
           />

From ca92e294013e0773460516e5831c28e2ccf3d760 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 00:17:04 +0300
Subject: [PATCH 70/81] WIP: fixed autoscroll, restructured Post Status Form's
 resize method "a bit"

---
 .../post_status_form/post_status_form.js      | 76 ++++++++++++++-----
 .../post_status_form/post_status_form.vue     |  5 +-
 2 files changed, 62 insertions(+), 19 deletions(-)

diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 10e75144..aaecf088 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -4,6 +4,7 @@ import ScopeSelector from '../scope_selector/scope_selector.vue'
 import EmojiInput from '../emoji_input/emoji_input.vue'
 import PollForm from '../poll/poll_form.vue'
 import fileTypeService from '../../services/file_type/file_type.service.js'
+import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
 import { reject, map, uniqBy } from 'lodash'
 import suggestor from '../emoji_input/suggestor.js'
 
@@ -276,29 +277,68 @@ const PostStatusForm = {
     resize (e) {
       const target = e.target || e
       if (!(target instanceof window.Element)) { return }
-      const topPaddingStr = window.getComputedStyle(target)['padding-top']
-      const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']
-      // Remove "px" at the end of the values
-      const vertPadding = Number(topPaddingStr.substr(0, topPaddingStr.length - 2)) +
-            Number(bottomPaddingStr.substr(0, bottomPaddingStr.length - 2))
-      const oldValue = Number((/([0-9.]+)px/.exec(target.style.height || '') || [])[1])
-      // Auto is needed to make textbox shrink when removing lines
-      target.style.height = 'auto'
-      const newValue = target.scrollHeight - vertPadding
-      target.style.height = `${newValue}px`
+      if (target.value === '') {
+        target.style.height = null
+        this.$refs['emoji-input'].resize()
+        return
+      }
+
+      const rootRef = this.$refs['root']
       const scroller = this.$el.closest('.sidebar-scroller') ||
             this.$el.closest('.post-form-modal-view') ||
             window
-      const delta = newValue - oldValue || 0
-      if (target.value === '') {
-        target.style.height = null
+
+      const topPaddingStr = window.getComputedStyle(target)['padding-top']
+      const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']
+      // Remove "px" at the end of the values
+      const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))
+      const bottomPadding = Number(bottomPaddingStr.substring(0, bottomPaddingStr.length - 2))
+      const vertPadding = topPadding + bottomPadding
+      const oldHeightStr = target.style.height || ''
+      const oldHeight = Number(oldHeightStr.substring(0, oldHeightStr.length - 2))
+
+      const tempScroll = scroller === window ? scroller.scrollY : scroller.scrollTop
+
+      // Auto is needed to make textbox shrink when removing lines
+      target.style.height = 'auto'
+      const newHeight = target.scrollHeight - vertPadding
+      target.style.height = `${oldHeight}px`
+
+      if (scroller === window) {
+        scroller.scroll(0, tempScroll)
       } else {
-        /* For some reason this doens't _exactly_ work on mobile post form when typing
-         * but it works when adding emojis. Supposedly, removing the "height = auto"
-         * line helps with that but it obviously breaks the autoheight.
-         */
-        scroller.scrollBy(0, delta)
+        scroller.scrollTop = tempScroll
       }
+
+      const currentScroll = scroller === window ? scroller.scrollY : scroller.scrollTop
+      const scrollerHeight = scroller === window ? scroller.innerHeight : scroller.offsetHeight
+      const scrollerBottomBorder = currentScroll + scrollerHeight
+
+      const rootBottomBorder = rootRef.offsetHeight +
+            findOffset(rootRef, scroller).top
+
+      const textareaSizeChangeDelta = newHeight - oldHeight || 0
+      const rootChangeDelta = rootBottomBorder - scrollerBottomBorder + textareaSizeChangeDelta
+
+      // console.log('CURRENT SCROLL', currentScroll)
+      console.log('BOTTOM BORDERS', rootBottomBorder, scrollerBottomBorder)
+      console.log('BOTTOM DELTA', rootBottomBorder - scrollerBottomBorder)
+      const targetScroll = scrollerBottomBorder < rootBottomBorder
+            ? currentScroll + rootChangeDelta
+            : currentScroll + textareaSizeChangeDelta
+      if (scroller === window) {
+        scroller.scroll(0, targetScroll)
+      } else {
+        scroller.scrollTop = targetScroll
+      }
+      target.style.height = `${newHeight}px`
+
+      console.log(scroller, rootRef)
+      // console.log('SCROLL TO BUTTON', scrollerBottomBorder < rootBottomBorder)
+      // console.log('DELTA B', rootChangeDelta)
+      // console.log('DELTA D', textareaSizeChangeDelta)
+      // console.log('TARGET', targetScroll)
+      // console.log('ACTUAL', scroller.scrollTop || scroller.scrollY || 0)
       this.$refs['emoji-input'].resize()
     },
     showEmojiPicker () {
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index d24f1981..5f9e21ae 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -1,5 +1,8 @@
 <template>
-  <div class="post-status-form">
+<div
+  class="post-status-form"
+  ref="root"
+  >
     <form
       autocomplete="off"
       @submit.prevent="postStatus(newStatus)"

From daa0e284c32cc8c97006e3a1701ab96ddfabfd30 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 00:21:55 +0300
Subject: [PATCH 71/81] forgotten file

---
 .../offset_finder/offset_finder.service.js    | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)
 create mode 100644 src/services/offset_finder/offset_finder.service.js

diff --git a/src/services/offset_finder/offset_finder.service.js b/src/services/offset_finder/offset_finder.service.js
new file mode 100644
index 00000000..edee6412
--- /dev/null
+++ b/src/services/offset_finder/offset_finder.service.js
@@ -0,0 +1,20 @@
+export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {
+  const result = {
+    top: top + child.offsetTop,
+    left: left + child.offsetLeft
+  }
+  if (!ignorePadding && child !== window) {
+    const topPaddingStr = window.getComputedStyle(child)['padding-top']
+    const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))
+    const leftPaddingStr = window.getComputedStyle(child)['padding-left']
+    const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))
+    result.top += ignorePadding ? 0 : topPadding
+    result.left += ignorePadding ? 0 : leftPadding
+  }
+
+  if (child.offsetParent && (parent === window || parent.contains(child.offsetParent))) {
+    return findOffset(child.offsetParent, parent, result, false)
+  } else {
+    return result
+  }
+}

From 4f563e6efb135e74454cf744eb9ce170ae7a4024 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 08:36:30 +0300
Subject: [PATCH 72/81] account for parent padding, too

---
 .../offset_finder/offset_finder.service.js    | 20 ++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/services/offset_finder/offset_finder.service.js b/src/services/offset_finder/offset_finder.service.js
index edee6412..1c45bb1a 100644
--- a/src/services/offset_finder/offset_finder.service.js
+++ b/src/services/offset_finder/offset_finder.service.js
@@ -4,17 +4,27 @@ export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadd
     left: left + child.offsetLeft
   }
   if (!ignorePadding && child !== window) {
-    const topPaddingStr = window.getComputedStyle(child)['padding-top']
-    const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))
-    const leftPaddingStr = window.getComputedStyle(child)['padding-left']
-    const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))
+    const { topPadding, leftPadding } = findPadding(child)
     result.top += ignorePadding ? 0 : topPadding
     result.left += ignorePadding ? 0 : leftPadding
   }
 
-  if (child.offsetParent && (parent === window || parent.contains(child.offsetParent))) {
+  console.log('eee', parent, child.offsetParent)
+  if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {
     return findOffset(child.offsetParent, parent, result, false)
   } else {
+    const { topPadding, leftPadding } = findPadding(parent)
+    result.top += topPadding
+    result.left += leftPadding
     return result
   }
 }
+
+const findPadding = (el) => {
+  const topPaddingStr = window.getComputedStyle(el)['padding-top']
+  const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))
+  const leftPaddingStr = window.getComputedStyle(el)['padding-left']
+  const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))
+
+  return { topPadding, leftPadding }
+}

From 0f55359b49b0abc157957d42f98e3f7b4d25ca18 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 08:43:02 +0300
Subject: [PATCH 73/81] fix

---
 src/services/offset_finder/offset_finder.service.js | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/services/offset_finder/offset_finder.service.js b/src/services/offset_finder/offset_finder.service.js
index 1c45bb1a..a8e438b5 100644
--- a/src/services/offset_finder/offset_finder.service.js
+++ b/src/services/offset_finder/offset_finder.service.js
@@ -13,9 +13,11 @@ export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadd
   if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {
     return findOffset(child.offsetParent, parent, result, false)
   } else {
-    const { topPadding, leftPadding } = findPadding(parent)
-    result.top += topPadding
-    result.left += leftPadding
+    if (parent !== window) {
+      const { topPadding, leftPadding } = findPadding(parent)
+      result.top += topPadding
+      result.left += leftPadding
+    }
     return result
   }
 }

From e55645aec16f083e4eedf6b01954b79689c244f1 Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson <shpuld@shpposter.club>
Date: Wed, 25 Sep 2019 10:25:44 +0300
Subject: [PATCH 74/81] Fix formatting in oc.json

---
 src/i18n/oc.json | 69 ++++++++++++++++++++++++------------------------
 1 file changed, 34 insertions(+), 35 deletions(-)

diff --git a/src/i18n/oc.json b/src/i18n/oc.json
index 54f42294..680ad6dd 100644
--- a/src/i18n/oc.json
+++ b/src/i18n/oc.json
@@ -5,7 +5,7 @@
   "exporter": {
      "export": "Exportar",
      "processing": "Tractament, vos demandarem lèu de telecargar lo fichièr"
-  },  
+  },
     "features_panel": {
       "chat": "Chat",
       "gopher": "Gopher",
@@ -30,12 +30,12 @@
     "cancel": "Anullar"
   },
   "image_cropper": {
-     "crop_picture": "Talhar l’imatge",
-     "save": "Salvar",
-     "save_without_cropping": "Salvar sens talhada",
-     "cancel": "Anullar"
+    "crop_picture": "Talhar l’imatge",
+    "save": "Salvar",
+    "save_without_cropping": "Salvar sens talhada",
+    "cancel": "Anullar"
   },
-    "importer": {
+  "importer": {
     "submit": "Mandar",
     "success": "Corrèctament importat.",
     "error": "Una error s’es producha pendent l’importacion d’aqueste fichièr."
@@ -80,27 +80,27 @@
     "no_more_notifications": "Pas mai de notificacions"
   },
   "polls": {
-"add_poll": "Ajustar un sondatge",
+    "add_poll": "Ajustar un sondatge",
     "add_option": "Ajustar d’opcions",
-	"option": "Opcion",
-	"votes": "vòtes",
-	"vote": "Votar",
-	"type": "Tipe de sondatge",
-	"single_choice": "Causida unica",
-	"multiple_choices": "Causida multipla",
-	"expiry": "Durada del sondatge",
-	"expires_in": "Lo sondatge s’acabarà {0}",
-	"expired": "Sondatge acabat {0}",
-	"not_enough_options": "I a pas pro d’opcions"
-	},
-	"stickers": {
-	 "add_sticker": "Ajustar un pegasolet"
-	},
+    "option": "Opcion",
+    "votes": "vòtes",
+    "vote": "Votar",
+    "type": "Tipe de sondatge",
+    "single_choice": "Causida unica",
+    "multiple_choices": "Causida multipla",
+    "expiry": "Durada del sondatge",
+    "expires_in": "Lo sondatge s’acabarà {0}",
+    "expired": "Sondatge acabat {0}",
+    "not_enough_options": "I a pas pro d’opcions"
+  },
+  "stickers": {
+    "add_sticker": "Ajustar un pegasolet"
+  },
   "interactions": {
     "favs_repeats": "Repeticions e favorits",
     "follows": "Nòus seguidors",
     "load_older": "Cargar d’interaccions anterioras"
-  },  
+  },
   "post_status": {
     "new_status": "Publicar d’estatuts novèls",
     "account_not_locked_warning": "Vòstre compte es pas {0}. Qual que siá pòt vos seguir per veire vòstras publicacions destinadas pas qu’a vòstres seguidors.",
@@ -146,8 +146,8 @@
     }
   },
   "selectable_list": {
-	    "select_all": "O seleccionar tot"
-  },  
+    "select_all": "O seleccionar tot"
+  },
   "settings": {
     "app_name": "Nom de l’aplicacion",
     "attachmentRadius": "Pèças juntas",
@@ -225,7 +225,6 @@
     "use_contain_fit": "Talhar pas las pèças juntas per las vinhetas",
     "name": "Nom",
     "name_bio": "Nom & Bio",
-
     "new_password": "Nòu senhal",
     "notification_visibility_follows": "Abonaments",
     "notification_visibility_likes": "Aimar",
@@ -273,7 +272,7 @@
     "subject_line_email": "Coma los corrièls : \"re: subjècte\"",
     "subject_line_mastodon": "Coma mastodon : copiar tal coma es",
     "subject_line_noop": "Copiar pas",
-"post_status_content_type": "Publicar lo tipe de contengut dels estatuts",
+    "post_status_content_type": "Publicar lo tipe de contengut dels estatuts",
     "stop_gifs": "Lançar los GIFs al subrevòl",
     "streaming": "Activar lo cargament automatic dels novèls estatus en anar amont",
     "text": "Tèxte",
@@ -296,7 +295,7 @@
     "notification_setting_non_followers": "Utilizaires que vos seguisson pas",
     "notification_mutes": "Per recebre pas mai d’un utilizaire en particular, botatz-lo en silenci.",
     "notification_blocks": "Blocar un utilizaire arrèsta totas las notificacions tan coma quitar de los seguir.",
-	"enable_web_push_notifications": "Activar las notificacions web push",
+    "enable_web_push_notifications": "Activar las notificacions web push",
     "style": {
       "switcher": {
         "keep_color": "Gardar las colors",
@@ -451,7 +450,7 @@
     "conversation": "Conversacion",
     "error_fetching": "Error en cercant de mesas a jorn",
     "load_older": "Ne veire mai",
-	"no_retweet_hint": "Las publicacions marcadas pels seguidors solament o dirèctas se pòdon pas repetir",
+    "no_retweet_hint": "Las publicacions marcadas pels seguidors solament o dirèctas se pòdon pas repetir",
     "repeated": "repetit",
     "show_new": "Ne veire mai",
     "up_to_date": "A jorn",
@@ -512,7 +511,7 @@
       "quarantine": "Defendre la federacion de las publicacions de l’utilizaire",
       "delete_user": "Suprimir l’utilizaire",
       "delete_user_confirmation": "Volètz vertadièrament far aquò ? Aquesta accion se pòt pas anullar."
-    }    
+    }
   },
   "user_profile": {
     "timeline_title": "Flux utilizaire",
@@ -544,11 +543,11 @@
       "TiB": "Tio"
     }
   },
-    "search": {
-	    "people": "Gent",
-	    "hashtags": "Etiquetas",
-	    "person_talking": "{count} persona ne parla",
-	    "people_talking": "{count} personas ne parlan",
-	    "no_results": "Cap de resultats"
+  "search": {
+    "people": "Gent",
+    "hashtags": "Etiquetas",
+    "person_talking": "{count} persona ne parla",
+    "people_talking": "{count} personas ne parlan",
+    "no_results": "Cap de resultats"
   }
 }
\ No newline at end of file

From 0d6a9f5a629c8a181e4dbd3e2060236773c2337a Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 19:30:55 +0300
Subject: [PATCH 75/81] comment, cleanup and improve autoresize/autoscroll

---
 .../post_status_form/post_status_form.js      | 85 +++++++++++--------
 .../offset_finder/offset_finder.service.js    |  1 -
 2 files changed, 50 insertions(+), 36 deletions(-)

diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index aaecf088..6ba7e7e1 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -277,6 +277,8 @@ const PostStatusForm = {
     resize (e) {
       const target = e.target || e
       if (!(target instanceof window.Element)) { return }
+
+      // Reset to default height for empty form, nothing else to do here.
       if (target.value === '') {
         target.style.height = null
         this.$refs['emoji-input'].resize()
@@ -284,61 +286,74 @@ const PostStatusForm = {
       }
 
       const rootRef = this.$refs['root']
-      const scroller = this.$el.closest('.sidebar-scroller') ||
+      /* Scroller is either `window` (replies in TL), sidebar (main post form,
+       * replies in notifs) or mobile post form. Note that getting and setting
+       * scroll is different for `Window` and `Element`s
+       */
+      const scrollerRef = this.$el.closest('.sidebar-scroller') ||
             this.$el.closest('.post-form-modal-view') ||
             window
 
+      // Getting info about padding we have to account for, removing 'px' part
       const topPaddingStr = window.getComputedStyle(target)['padding-top']
       const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']
-      // Remove "px" at the end of the values
       const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))
       const bottomPadding = Number(bottomPaddingStr.substring(0, bottomPaddingStr.length - 2))
       const vertPadding = topPadding + bottomPadding
+
       const oldHeightStr = target.style.height || ''
       const oldHeight = Number(oldHeightStr.substring(0, oldHeightStr.length - 2))
 
-      const tempScroll = scroller === window ? scroller.scrollY : scroller.scrollTop
+      /* Explanation:
+       *
+       * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight
+       * scrollHeight returns element's scrollable content height, i.e. visible
+       * element + overscrolled parts of it. We use it to determine when text
+       * inside the textarea exceeded its height, so we can set height to prevent
+       * overscroll, i.e. make textarea grow with the text. HOWEVER, since we
+       * explicitly set new height, scrollHeight won't go below that, so we can't
+       * SHRINK the textarea when there's extra space. To workaround that we set
+       * height to 'auto' which makes textarea tiny again, so that scrollHeight
+       * will match text height again. HOWEVER, shrinking textarea can screw with
+       * the scroll since there might be not enough padding around root to even
+       * varrant a scroll, so it will jump to 0 and refuse to move anywhere,
+       * so we check current scroll position before shrinking and then restore it
+       * with needed delta.
+       */
 
-      // Auto is needed to make textbox shrink when removing lines
-      target.style.height = 'auto'
-      const newHeight = target.scrollHeight - vertPadding
-      target.style.height = `${oldHeight}px`
-
-      if (scroller === window) {
-        scroller.scroll(0, tempScroll)
-      } else {
-        scroller.scrollTop = tempScroll
-      }
-
-      const currentScroll = scroller === window ? scroller.scrollY : scroller.scrollTop
-      const scrollerHeight = scroller === window ? scroller.innerHeight : scroller.offsetHeight
+      // this part has to be BEFORE the content size update
+      const currentScroll = scrollerRef === window
+        ? scrollerRef.scrollY
+        : scrollerRef.scrollTop
+      const scrollerHeight = scrollerRef === window
+        ? scrollerRef.innerHeight
+        : scrollerRef.offsetHeight
       const scrollerBottomBorder = currentScroll + scrollerHeight
 
-      const rootBottomBorder = rootRef.offsetHeight +
-            findOffset(rootRef, scroller).top
+      // BEGIN content size update
+      target.style.height = 'auto'
+      const newHeight = target.scrollHeight - vertPadding
+      target.style.height = `${newHeight}px`
+      // END content size update
+
+      // We check where the bottom border of root element is, this uses findOffset
+      // to find offset relative to scrollable container (scroller)
+      const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top
 
       const textareaSizeChangeDelta = newHeight - oldHeight || 0
-      const rootChangeDelta = rootBottomBorder - scrollerBottomBorder + textareaSizeChangeDelta
+      const isBottomObstructed = scrollerBottomBorder < rootBottomBorder
+      const rootChangeDelta = rootBottomBorder - scrollerBottomBorder
+      const totalDelta = textareaSizeChangeDelta +
+        (isBottomObstructed ? rootChangeDelta : 0)
 
-      // console.log('CURRENT SCROLL', currentScroll)
-      console.log('BOTTOM BORDERS', rootBottomBorder, scrollerBottomBorder)
-      console.log('BOTTOM DELTA', rootBottomBorder - scrollerBottomBorder)
-      const targetScroll = scrollerBottomBorder < rootBottomBorder
-            ? currentScroll + rootChangeDelta
-            : currentScroll + textareaSizeChangeDelta
-      if (scroller === window) {
-        scroller.scroll(0, targetScroll)
+      const targetScroll = currentScroll + totalDelta
+
+      if (scrollerRef === window) {
+        scrollerRef.scroll(0, targetScroll)
       } else {
-        scroller.scrollTop = targetScroll
+        scrollerRef.scrollTop = targetScroll
       }
-      target.style.height = `${newHeight}px`
 
-      console.log(scroller, rootRef)
-      // console.log('SCROLL TO BUTTON', scrollerBottomBorder < rootBottomBorder)
-      // console.log('DELTA B', rootChangeDelta)
-      // console.log('DELTA D', textareaSizeChangeDelta)
-      // console.log('TARGET', targetScroll)
-      // console.log('ACTUAL', scroller.scrollTop || scroller.scrollY || 0)
       this.$refs['emoji-input'].resize()
     },
     showEmojiPicker () {
diff --git a/src/services/offset_finder/offset_finder.service.js b/src/services/offset_finder/offset_finder.service.js
index a8e438b5..9034f8c8 100644
--- a/src/services/offset_finder/offset_finder.service.js
+++ b/src/services/offset_finder/offset_finder.service.js
@@ -9,7 +9,6 @@ export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadd
     result.left += ignorePadding ? 0 : leftPadding
   }
 
-  console.log('eee', parent, child.offsetParent)
   if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {
     return findOffset(child.offsetParent, parent, result, false)
   } else {

From e3ceae0989ef3c5569c0d4a7eaf7f6ea5f7e6ccc Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 19:32:30 +0300
Subject: [PATCH 76/81] very important fix

---
 src/components/post_status_form/post_status_form.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 6ba7e7e1..76bcfa71 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -316,7 +316,7 @@ const PostStatusForm = {
        * height to 'auto' which makes textarea tiny again, so that scrollHeight
        * will match text height again. HOWEVER, shrinking textarea can screw with
        * the scroll since there might be not enough padding around root to even
-       * varrant a scroll, so it will jump to 0 and refuse to move anywhere,
+       * warrant a scroll, so it will jump to 0 and refuse to move anywhere,
        * so we check current scroll position before shrinking and then restore it
        * with needed delta.
        */

From e805303d3a792045c8822e4300e4742fee9723c8 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 19:58:15 +0300
Subject: [PATCH 77/81] Scroll emoji picker into view if it's obstructed

---
 src/components/emoji_input/emoji_input.js | 43 +++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 25c21403..f30cd1e4 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -1,6 +1,7 @@
 import Completion from '../../services/completion/completion.js'
 import EmojiPicker from '../emoji_picker/emoji_picker.vue'
 import { take } from 'lodash'
+import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
 
 /**
  * EmojiInput - augmented inputs for emoji and autocomplete support in inputs
@@ -144,6 +145,7 @@ const EmojiInput = {
     input.elm.addEventListener('paste', this.onPaste)
     input.elm.addEventListener('keyup', this.onKeyUp)
     input.elm.addEventListener('keydown', this.onKeyDown)
+    input.elm.addEventListener('click', this.onClickInput)
     input.elm.addEventListener('transitionend', this.onTransition)
     input.elm.addEventListener('compositionupdate', this.onCompositionUpdate)
   },
@@ -155,6 +157,7 @@ const EmojiInput = {
       input.elm.removeEventListener('paste', this.onPaste)
       input.elm.removeEventListener('keyup', this.onKeyUp)
       input.elm.removeEventListener('keydown', this.onKeyDown)
+      input.elm.removeEventListener('click', this.onClickInput)
       input.elm.removeEventListener('transitionend', this.onTransition)
       input.elm.removeEventListener('compositionupdate', this.onCompositionUpdate)
     }
@@ -162,6 +165,9 @@ const EmojiInput = {
   methods: {
     triggerShowPicker () {
       this.showPicker = true
+      this.$nextTick(() => {
+        this.scrollIntoView()
+      })
       // This temporarily disables "click outside" handler
       // since external trigger also means click originates
       // from outside, thus preventing picker from opening
@@ -173,6 +179,9 @@ const EmojiInput = {
     togglePicker () {
       this.input.elm.focus()
       this.showPicker = !this.showPicker
+      if (this.showPicker) {
+        this.scrollIntoView()
+      }
     },
     replace (replacement) {
       const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)
@@ -267,6 +276,37 @@ const EmojiInput = {
         this.highlighted = 0
       }
     },
+    scrollIntoView () {
+      const rootRef = this.$refs['picker'].$el
+      /* Scroller is either `window` (replies in TL), sidebar (main post form,
+       * replies in notifs) or mobile post form. Note that getting and setting
+       * scroll is different for `Window` and `Element`s
+       */
+      const scrollerRef = this.$el.closest('.sidebar-scroller') ||
+            this.$el.closest('.post-form-modal-view') ||
+            window
+      const currentScroll = scrollerRef === window
+        ? scrollerRef.scrollY
+        : scrollerRef.scrollTop
+      const scrollerHeight = scrollerRef === window
+        ? scrollerRef.innerHeight
+        : scrollerRef.offsetHeight
+
+      const scrollerBottomBorder = currentScroll + scrollerHeight
+      // We check where the bottom border of root element is, this uses findOffset
+      // to find offset relative to scrollable container (scroller)
+      const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top
+
+      const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)
+      // could also check top delta but there's no case for it
+      const targetScroll = currentScroll + bottomDelta
+
+      if (scrollerRef === window) {
+        scrollerRef.scroll(0, targetScroll)
+      } else {
+        scrollerRef.scrollTop = targetScroll
+      }
+    },
     onTransition (e) {
       this.resize()
     },
@@ -360,6 +400,9 @@ const EmojiInput = {
       this.resize()
       this.$emit('input', e.target.value)
     },
+    onClickInput (e) {
+      this.showPicker = false;
+    },
     onClickOutside (e) {
       if (this.disableClickOutside) return
       this.showPicker = false

From 0b300e170805f45bd8cc854cbfa48b4df020b909 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 20:01:06 +0300
Subject: [PATCH 78/81] bump z-index so that picker/suggest doesn't get
 overlapped by mobile button

---
 src/components/emoji_input/emoji_input.vue | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/components/emoji_input/emoji_input.vue b/src/components/emoji_input/emoji_input.vue
index 53b38573..05fb931b 100644
--- a/src/components/emoji_input/emoji_input.vue
+++ b/src/components/emoji_input/emoji_input.vue
@@ -78,7 +78,7 @@
   }
   .emoji-picker-panel {
     position: absolute;
-    z-index: 9;
+    z-index: 20;
     margin-top: 2px;
 
     &.hide {
@@ -89,7 +89,7 @@
   .autocomplete {
     &-panel {
       position: absolute;
-      z-index: 9;
+      z-index: 20;
       margin-top: 2px;
 
       &.hide {

From e6d2cf77af9ac2119c23e8c748368f0fdceae0ae Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 20:11:06 +0300
Subject: [PATCH 79/81] fix emoji inputs in user-settings, styles update

---
 src/components/emoji_input/emoji_input.vue     | 3 ++-
 src/components/user_settings/user_settings.vue | 2 ++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/components/emoji_input/emoji_input.vue b/src/components/emoji_input/emoji_input.vue
index 05fb931b..13530e8b 100644
--- a/src/components/emoji_input/emoji_input.vue
+++ b/src/components/emoji_input/emoji_input.vue
@@ -67,9 +67,10 @@
     position: absolute;
     top: 0;
     right: 0;
-    margin: 0 .25em;
+    margin: .2em .25em;
     font-size: 16px;
     cursor: pointer;
+    line-height: 24px;
 
     &:hover i {
       color: $fallback--text;
diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue
index 34ea8569..97833acb 100644
--- a/src/components/user_settings/user_settings.vue
+++ b/src/components/user_settings/user_settings.vue
@@ -32,6 +32,7 @@
             <p>{{ $t('settings.name') }}</p>
             <EmojiInput
               v-model="newName"
+              enable-emoji-picker
               :suggest="emojiSuggestor"
             >
               <input
@@ -43,6 +44,7 @@
             <p>{{ $t('settings.bio') }}</p>
             <EmojiInput
               v-model="newBio"
+              enable-emoji-picker
               :suggest="emojiUserSuggestor"
             >
               <textarea

From 2f26e8acc5395753f4d649d9a1bfbe356717e9ac Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 20:23:55 +0300
Subject: [PATCH 80/81] eslint

---
 src/components/emoji_input/emoji_input.js            | 2 +-
 src/components/emoji_picker/emoji_picker.vue         | 9 ++++++---
 src/components/post_status_form/post_status_form.vue | 6 +++---
 src/components/user_card/user_card.vue               | 7 +++++--
 4 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index f30cd1e4..a586b819 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -401,7 +401,7 @@ const EmojiInput = {
       this.$emit('input', e.target.value)
     },
     onClickInput (e) {
-      this.showPicker = false;
+      this.showPicker = false
     },
     onClickOutside (e) {
       if (this.disableClickOutside) return
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 6c43dd97..42f20130 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -77,13 +77,16 @@
         </div>
         <div
           class="keep-open"
-          >
+        >
           <input
             :id="labelKey + 'keep-open'"
             v-model="keepOpen"
             type="checkbox"
-            >
-          <label class="keep-open-label" :for="labelKey + 'keep-open'">
+          >
+          <label
+            class="keep-open-label"
+            :for="labelKey + 'keep-open'"
+          >
             <div class="keep-open-label-text">
               {{ $t('emoji.keep_open') }}
             </div>
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 5f9e21ae..4916d988 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -1,7 +1,7 @@
 <template>
-<div
-  class="post-status-form"
-  ref="root"
+  <div
+    ref="root"
+    class="post-status-form"
   >
     <form
       autocomplete="off"
diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue
index c2626260..629d1fd0 100644
--- a/src/components/user_card/user_card.vue
+++ b/src/components/user_card/user_card.vue
@@ -3,8 +3,11 @@
     class="user-card"
     :class="classes"
   >
-    <div :class="{ 'hide-bio': hideBio }" :style="style" class="background-image">
-    </div>
+    <div
+      :class="{ 'hide-bio': hideBio }"
+      :style="style"
+      class="background-image"
+    />
     <div class="panel-heading">
       <div class="user-info">
         <div class="container">

From 836cb817d18f5e3ee6dab446633b8e05733c2a3a Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 25 Sep 2019 20:54:07 +0300
Subject: [PATCH 81/81] fix tests

---
 .../unit/specs/components/emoji_input.spec.js | 25 +++++++++++++------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/test/unit/specs/components/emoji_input.spec.js b/test/unit/specs/components/emoji_input.spec.js
index 13a59961..368d623d 100644
--- a/test/unit/specs/components/emoji_input.spec.js
+++ b/test/unit/specs/components/emoji_input.spec.js
@@ -1,7 +1,7 @@
 import { shallowMount, createLocalVue } from '@vue/test-utils'
 import EmojiInput from 'src/components/emoji_input/emoji_input.vue'
 
-const generateInput = (value) => {
+const generateInput = (value, padEmoji = true) => {
   const localVue = createLocalVue()
   localVue.directive('click-outside', () => {})
   const wrapper = shallowMount(EmojiInput, {
@@ -10,6 +10,15 @@ const generateInput = (value) => {
       enableEmojiPicker: true,
       value
     },
+    mocks: {
+      $store: {
+        state: {
+          config: {
+            padEmoji
+          }
+        }
+      }
+    },
     slots: {
       default: '<input />'
     },
@@ -70,13 +79,13 @@ describe('EmojiInput', () => {
       expect(wrapper.emitted().input[0][0]).to.eql('Spurdo :ebin: Sparde')
     })
 
-    it('inserts string without any padding in spam mode', () => {
+    it('inserts string without any padding if padEmoji setting is set to false', () => {
       const initialString = 'Eat some spam!'
-      const [wrapper] = generateInput(initialString)
+      const [wrapper] = generateInput(initialString, false)
       const input = wrapper.find('input')
       input.setValue(initialString)
-      wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: ':spam:', keepOpen: true })
+      wrapper.setData({ caret: initialString.length, keepOpen: false })
+      wrapper.vm.insert({ insertion: ':spam:' })
       expect(wrapper.emitted().input[0][0]).to.eql('Eat some spam!:spam:')
     })
 
@@ -106,13 +115,13 @@ describe('EmojiInput', () => {
       })
     })
 
-    it('correctly sets caret after insertion in spam mode', (done) => {
+    it('correctly sets caret after insertion if padEmoji setting is set to false', (done) => {
       const initialString = '1234'
-      const [wrapper, vue] = generateInput(initialString)
+      const [wrapper, vue] = generateInput(initialString, false)
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: '1234', keepOpen: true })
+      wrapper.vm.insert({ insertion: '1234', keepOpen: false })
       vue.nextTick(() => {
         expect(wrapper.vm.caret).to.eql(8)
         done()