<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
   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 -->
    <meta name="description" content="Ozone Manager">

    <title>Ozone Manager</title>

    <link href="static/bootstrap-3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <link href="static/hadoop.css" rel="stylesheet">
    <link href="static/nvd3-1.8.5.min.css" rel="stylesheet">

    <link href="static/ozone.css" rel="stylesheet">

</head>

<body ng-app="ozoneManager">

<header class="navbar navbar-inverse navbar-fixed-top bs-docs-nav">
    <div class="container-fluid">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
                    aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">Ozone Manager</a>
        </div>
        <navmenu
                metrics="{ 'OM metrics' : '#!/metrics/ozoneManager', 'Rpc metrics' : '#!/metrics/rpc'}"></navmenu>
    </div>
</header>

<div class="container-fluid">
    <ng-view></ng-view>
</div><!-- /.container -->

<script src="static/jquery-3.5.1.min.js"></script>
<script src="static/angular-1.8.0.min.js"></script>
<script src="static/angular-route-1.8.0.min.js"></script>
<script src="static/d3-3.5.17.min.js"></script>
<script src="static/nvd3-1.8.5.min.js"></script>
<script src="static/angular-nvd3-1.0.9.min.js"></script>
<script src="static/ozone.js"></script>
<script src="ozoneManager.js"></script>
<script src="static/bootstrap-3.4.1/js/bootstrap.min.js"></script>
</body>
</html>
