<html manifest="manifest-for-appcache-allowed.manifest">
<head>
<script>
function complete() {
	document.write('Cache found');
	cleanup();
}

function error() {
	document.write('Cache not found');
	cleanup();
}

function cleanup() {
	top.postMessage('done', '*');
}

try {
	applicationCache.addEventListener('noupdate', complete, false);
	applicationCache.addEventListener('cached', complete, false);
	applicationCache.addEventListener('error', error, false);
} catch (e) {
	document.write('Cache not found');
	cleanup();
}
</script>
</head>
<body>
<img src="abe.png">
</body>
</head>
