<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=PowerPoint.Slide>
<meta name=Generator content="Microsoft PowerPoint 9">
<link rel=File-List href="./Serena_files/filelist.xml">
<link rel=Preview href="./Serena_files/preview.wmf">
<link rel=Edit-Time-Data href="./Serena_files/editdata.mso">
<link rel=OLE-Object-Data href="./Serena_files/oledata.mso">
<title>No Slide Title</title>
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Author>install</o:Author>
  <o:Template>C:\WINDOWS\TEMP\External Use PPT.pot</o:Template>
  <o:LastAuthor>OTI Employee</o:LastAuthor>
  <o:Revision>15</o:Revision>
  <o:TotalTime>1774</o:TotalTime>
  <o:LastPrinted>2000-02-10T03:24:21Z</o:LastPrinted>
  <o:Created>2001-03-05T22:18:18Z</o:Created>
  <o:LastSaved>2002-05-15T14:41:30Z</o:LastSaved>
  <o:Words>416</o:Words>
  <o:PresentationFormat>On-screen Show</o:PresentationFormat>
  <o:Company>SERENA Software International</o:Company>
  <o:Bytes>84933</o:Bytes>
  <o:Paragraphs>48</o:Paragraphs>
  <o:Slides>6</o:Slides>
  <o:Notes>2</o:Notes>
  <o:Version>9.3821</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:PixelsPerInch>80</o:PixelsPerInch>
 </o:OfficeDocumentSettings>
</xml><![endif]-->
<link rel=Presentation-XML href="./Serena_files/pres.xml">
<meta name=Description content="15-May-02: Submittal to Eclipse.org">
<meta http-equiv=expires content=0>
<![if !ppt]><script>
<!--
  var appVer = navigator.appVersion;
  var msie = appVer.indexOf( "MSIE " );
  var msieWin31 = (appVer.indexOf( "Windows 3.1" ) >= 0), isMac = (appVer.indexOf("Macintosh") >= 0);
  var ver = 0;
  if( msie >= 0 )
    ver = parseFloat( appVer.substring( msie+5, appVer.indexOf ( ";", msie ) ) );
  else
    ver = parseInt( appVer );

	path = "./Serena_files/v3_document.htm";

	if( msie>=0 && ( (isMac && ver>=5)||(!isMac && ver>=4) ) )
		window.location.replace( './Serena_files/frame.htm' );
	else if( ver >= 3 )
	{
		if ( !msieWin31 && ( ( msie >= 0 && ver >= 3.02 ) || ( msie < 0 && ver >= 3 ) ) )
			window.location.replace( path );    
		else
			window.location.href = path;
	}  
	else
		window.location.href = "./Serena_files/error.htm";
//-->
</script><![endif]>
</head>

<frameset>
 <noframes>
  <body>
  <p>This page uses frames, but your browser doesn't support them.</p>
  </body>
 </noframes>
</frameset>

</html>
