<?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 wicket:id="title"></div>
		<div wicket:id="desc"></div>
		<table style="border-collapse: collapse;">
			<tr wicket:id="list" style="background-color: rgb(248, 248, 248); border-bottom: 5px solid white;">
				<td>
					<span wicket:id="roomName">[room name]</span><br/>
					<wicket:ommessage key="398" />&nbsp;<span wicket:id="curUsers"></span>&nbsp;/&nbsp;<span
					wicket:id="totalUsers"></span>&nbsp;&nbsp;<span wicket:id="refresh" 
					class="ui-icon ui-icon-arrowrefresh-1-n" style="display: inline-block"></span></td>
				<td><button><wicket:ommessage key="131"/></button></td>
			</tr>
		</table>
	</wicket:panel>
</html>
