<!DOCTYPE html>
<html lang="{{ DEFAULT_LANG }}">

<head>
  <!-- <link rel="stylesheet/less" type="text/css" href="{{ SITEURL }}/theme/css/style.less"> -->
  <!-- <script src="{{ SITEURL }}/theme/js/less-1.3.3.min.js" type="text/javascript"></script> -->
  <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/style.css">

  <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/pygments.css">
  <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=PT+Sans|PT+Serif|PT+Mono">

  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width; initial-scale=1.0">

  {% if FEED_ALL_ATOM %}
  <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
  {% endif %}
  {% if FEED_ALL_RSS %}
  <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
  {% endif %}

  {% block head %}
  {% endblock %}

  <title>{% block title %}{{ SITENAME }}{% endblock %}</title>

  {% include "analytics.html" %}
</head>

<body>
  <aside>
    <div id="user_meta">
      <a href="{{ SITEURL }}">
        {% if USER_LOGO_URL %}
        <img src="{{ USER_LOGO_URL }}" alt="logo">
        {% else %}
        <img src="{{ SITEURL }}/theme/images/logo.png" alt="logo">
        {% endif %}
      </a>
      <h1><a href="{{ SITEURL }}">{{ AUTHOR }}</a></h1>
      <p>{{ TAGLINE }}</p>
      <ul>
        {% for title, link in MENUITEMS %}
        <li><a href="{{ link }}">{{ title }}</a></li>
        {% endfor %}
        {% if DISPLAY_PAGES_ON_MENU %}
        {% for p in pages %}
        <li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
        {% endfor %}
        {% endif %}
        {% for name, link in LINKS %}
        <li><a href="{{ link }}" target="_blank">{{ name }}</a></li>
        {% endfor %}
        {% for name, link in SOCIAL %}
        <li><a href="{{ link }}" target="_blank">{{ name }}</a></li>
        {% endfor %}
      </ul>
    </div>
  </aside>

  <main>
    <header>
      <p>
        {% block header %}
        <a href="{{ SITEURL }}">Index</a> &#124; <a href="{{ SITEURL }}/archives.html">Archives</a> &#124; <a href="{{ SITEURL }}/categories.html">Categories</a>
        {% if FEED_ALL_ATOM %}
        &#124; <a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}">Atom Feed</a>
        {% endif %}
        {% if FEED_ALL_RSS %}
        &#124; <a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}">RSS Feed</a>
        {% endif %}
        {% endblock header %}
      </p>
    </header>

    {% block content %}
    {% endblock %}

    <footer>
      {% block footer %}
      {% endblock %}
    </footer>

    <div id="ending_message">
      <p>&copy Giulio Fidente. Built using <a href="http://getpelican.com" target="_blank">Pelican</a>. Fork the blog theme <a href="https://github.com/giulivo/pelican-svbhack" target="_blank">on github</a>.</p>
    </div>
  </main>
</body>
</html>
