<!DOCTYPE html>
<!-- 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. -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>Pony Mail!</title>

    <!-- CSS -->
    <link href="css/bootstrap.min.css" rel="stylesheet" media="all">
    <link href="css/scaffolding.css?revision=f3a4716" rel="stylesheet" media="all">
    <link href="css/modal.css" rel="stylesheet" media="all">
    <link href="css/spinner.css" rel="stylesheet" media="all">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body style="margin: 0px;" onload="oauthWelcome(document.location.search.substr(1));">
    
    <div class="container-fluid">
      
    <div class="row">
      <div id="bread" class="col-md-12" style="text-align: center">
        <img src="images/logo.png" alt="Foal logo" style="width: 320px;"/><br/>
        <p>
          <h3 id="oauth_title">Log in using one of the following identity providers:</h3>
          <br/>
        </p>
        <p style="margin: 0 auto; font-size: 16pt; max-width: 640px;" id="oauthtypes">
          
        </p>
        <a id="oauth_regrets" href="javascript:void(window.history.back())">Nevermind, take me back to the previous page</a>
      </div>
      
      </div>
    </div>
    <script src="js/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
    <script src="js/config.js?revision=f3a4716"></script>
    <script src="js/ponymail.js?revision=f3a4716"></script>
    <script src="js/oauth.js?revision=f3a4716"></script>
  </body>
</html>
