<?xml version="1.0" encoding="UTF-8"?>
<!--
  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 xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
	<div class="info" wicket:id="container">
		<table>
			<tr>
				<td><wicket:ommessage key="863"/></td>
				<td><span wicket:id="fileName"></span></td>
			</tr>
			<tr>
				<td><wicket:ommessage key="864"/></td>
				<td><span wicket:id="duration"></span></td>
			</tr>
			<tr>
				<td><wicket:ommessage key="865"/></td>
				<td><span wicket:id="recordEnd"></span></td>
			</tr>
			<tr>
				<td><wicket:ommessage key="874"/></td>
				<td><span wicket:id="room_id"></span></td>
			</tr>
		</table>
		<table>
			<tr>
				<td><input type="button" wicket:id="dAVI" wicket:ommessage="value:884"/></td>
				<td><input type="button" wicket:id="dFLV" wicket:ommessage="value:883"/></td>
			</tr>
		</table>
	</div>
</wicket:panel>
</html>
