<!doctype html>
<!-- Generated by chromite/licensing/licenses; do not edit.
     See https://dev.chromium.org/chromium-os/licensing-for-chromiumos-developers
-->
<html>
<head>
<meta charset="UTF-8">
<title>Credits</title>
<link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
<style>
body {
  background-color:white;
  font-size:84%;
  max-width:1020px;
}
.page-title {
  font-size:164%;
  font-weight:bold;
}
.product {
  background-color:#c3d9ff;
  overflow:auto;
  padding:2px;
  margin-top:16px;
  border-radius:5px;
}
.product .title {
  font-size:110%;
  font-weight:bold;
  float:left;
  margin:3px;
}
.product .homepage {
  text-align:right;
  float:right;
  margin:3px;
}
.product .homepage:after {
  content:" - ";
}
.product .show {
  text-align:right;
  float:right;
  margin:3px;
}
.licence {
  clear:both;
  background-color:#e8eef7;
  padding:16px;
  border-radius:3px;
  display:none;
}
.licence pre {
  white-space: pre-wrap
}
.licence h3 {
  margin-top:0px;
}
.license-packages {
  font-size:80%;
}
.dialog #print-link {
  display: none;
}
.dialog .homepage {
  display: none;
}
</style>
<script>
//<![CDATA[
function toggle(o) {
  var licence = o.nextSibling;

  while (licence.className != 'licence') {
    if (!licence) return false;
    licence = licence.nextSibling;
  }
  return toggleblock(licence, o);
}

function toggleblock(licence, o) {
  if (licence.style && licence.style.display == 'block') {
    licence.style.display = 'none';
    o.innerHTML = 'show license text';
  } else {
    licence.style.display = 'block';
    o.innerHTML = 'hide license text';
  }
  return false;
}

function toggleall() {
  var a = window.document.getElementsByClassName('licence');
  for (var i = 0; i < a.length; i++) {
    toggleblock(a[i], a[i].previousSibling.previousSibling.previousSibling.previousSibling);
  }
  return false;
}
//]]>
</script>
</head>
<body>
<span class="page-title" style="float:left;">Credits</span>
<span style="float:right">
<a href="javascript:toggleall()">Toggle All</a>
<a id="print-link" href="javascript:window.print();">Print</a>
</span>
<div style="clear:both; overflow:auto;">
<h2>List of Packages used in Google Chrome OS:</h2>
<!-- Chromium <3s the following projects -->
{{entries}}
</div>

<h2>List of Shared Licenses used in Google Chrome OS:</h2>
{{licenses}}

<script src="chrome://os-credits/keyboard_utils.js"></script>
</body>
</html>
