<style type="text/css">
  div.columns   { float: left; margin-left: 10px;}
  div.clear     { clear: both; } 
</style>
<div>
  <div class="columns">
    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
  </div>
  <div class="columns" style="width: 80%">
    <div class="page__footer-follow">
      <ul class="social-icons">
        {% if site.data.ui-text[site.locale].follow_label %}
          <li><strong>{{ site.data.ui-text[site.locale].follow_label }}</strong></li>
        {% endif %}
        {% if site.twitter.username %}
          <li><a href="https://twitter.com/{{ site.twitter.username }}"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
        {% endif %}
        {% if site.facebook.username %}
          <li><a href="https://facebook.com/{{ site.facebook.username }}"><i class="fa fa-fw fa-facebook-square" aria-hidden="true"></i> Facebook</a></li>
        {% endif %}
        {% if site.author.github %}
          <li><a href="https://github.com/{{ site.author.github }}"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
        {% endif %}
        {% if site.author.bitbucket %}
          <li><a href="https://bitbucket.org/{{ site.author.bitbucket }}"><i class="fa fa-fw fa-bitbucket" aria-hidden="true"></i> Bitbucket</a></li>
        {% endif %}
        <li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | absolute_url }}{% endif %}"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li>
      </ul>
    </div>

    <div class="page__footer-copyright">Copyright &copy; {{ site.time | date: '%Y' }} <a href="http://www.apache.org/">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0.</a></div>
    <div class="page__footer-copyright">Apache RocketMQ, RocketMQ, Apache, the Apache feather logo and the Apache RocketMQ logo are trademarks of The Apache Software Foundation.</div>
    <br>
    <div class="page__footer-copyright"><a href="https://www.apache.org/licenses/">License</a> | <a href="https://www.apache.org/security/">Security</a> | <a href="https://www.apache.org/foundation/thanks.html">Thanks</a> | <a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></div>
    <br>
	<div>
      <a  href="https://www.apache.org/events/current-event.html">
        <img src="https://www.apache.org/events/current-event-234x60.png" />
      </a>
    </div>
  </div>
</div>
<div class="clear"></div>