
<!--
Copyright 2017-present Open Networking Foundation

Licensed 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.
-->


<!DOCTYPE html>
<html lang="en" ng-app="xos-ecord-local-gui-extension">
<head><base href="/spa/">
  <meta charset="UTF-8">
  <title>Document</title>
  <link href="http://192.168.46.100/spa/loader.css" rel="stylesheet">
  <link href="http://192.168.46.100/spa/app.css" rel="stylesheet">
</head>
<body>
  <div ui-view></div>
  <script src="http://192.168.46.100/spa/vendor.js"></script>
  <script src="http://192.168.46.100/spa/app.js"></script>
  <script src="http://192.168.46.100/spa/loader.js"></script>
  <script src="http://192.168.46.100/spa/app.config.js"></script>
  <script src="http://192.168.46.100/spa/style.config.js"></script>
<script type="text/javascript" src="/spa/vendor.js"></script><script type="text/javascript" src="/spa/app.js"></script></body>
</html>