<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
{% extends "main.html" %}
{% block head %}  
<!-- <link rel="stylesheet" type="text/css" href="/static/css/styles.css"> -->
{% endblock %}

{% block body %}

<div class="container">
	
  {% block container %}
	
  <div class="head">
    <h1>XDATA User Feedback</h1>
    <p class="lead">Welcome to XDATA.  Thank you for participating in our user feedback session and helping us improve these analysis tools through analysis of your activities and workflow</p>
  </div>

  <div class="signin">
  	<h4 class="form-signin-heading">Already Registered? <a href="{% url 'op_tasks:login' %}">Sign in</a></h4>
  </div>

  {% endblock %}

</div> 

{% endblock %}