<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:oa="urn:schemas-microsoft-com:office:activation"
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 10">
<link rel=File-List href="EclipseCon2007_ShortTalk_files/filelist.xml">
<link rel=Preview href="EclipseCon2007_ShortTalk_files/preview.wmf">
<link rel=Edit-Time-Data href="EclipseCon2007_ShortTalk_files/editdata.mso">
<title>What is MDT?</title>
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Subject>Short Talk</o:Subject>
  <o:Author>Kenn Hussey</o:Author>
  <o:LastAuthor>Kenn Hussey</o:LastAuthor>
  <o:Revision>358</o:Revision>
  <o:TotalTime>4602</o:TotalTime>
  <o:Created>2002-08-23T15:26:08Z</o:Created>
  <o:LastSaved>2007-03-08T19:11:08Z</o:LastSaved>
  <o:Words>1179</o:Words>
  <o:PresentationFormat>On-screen Show</o:PresentationFormat>
  <o:Company>IBM Rational Software</o:Company>
  <o:Bytes>130994</o:Bytes>
  <o:Paragraphs>206</o:Paragraphs>
  <o:Slides>20</o:Slides>
  <o:Notes>14</o:Notes>
  <o:Version>10.6825</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:ShowReviewingToolbar/>
  <o:PixelsPerInch>80</o:PixelsPerInch>
 </o:OfficeDocumentSettings>
</xml><![endif]-->
<link rel=Presentation-XML href="EclipseCon2007_ShortTalk_files/pres.xml">
<meta name=Description content="3/8/2007: What is MDT?">
<meta http-equiv=expires content=0>
<![if !ppt]><script>
<!--
	var ver = 0, appVer = navigator.appVersion, msie = appVer.indexOf( "MSIE " )
	var msieWin31 = (appVer.indexOf( "Windows 3.1" ) >= 0), isMac = (appVer.indexOf("Macintosh") >= 0)
	if( msie >= 0 )
		ver = parseFloat( appVer.substring( msie+5, appVer.indexOf ( ";", msie ) ) )
	else
		ver = parseInt( appVer )
	browserSupported=0
	if( !isMac && ver >= 4 && msie >= 0 ) {
		browserSupported=1
		window.location.replace( 'EclipseCon2007_ShortTalk_files/frame.html'+document.location.hash )
	}
//-->
</script>
<![endif]>
</head>

<body>
<script><!--

if( browserSupported )
	document.writeln('<div style="visibility:hidden">');

//--></script><font face=Arial size=2><b>

<p>This presentation contains content that your browser may not be able to show
properly. This presentation was optimized for more recent versions of Microsoft
Internet Explorer.</p>

<p>If you would like to proceed anyway, click <a
href="EclipseCon2007_ShortTalk_files/frame.html">here</a>.</p>

</b></font><script><!--

if( browserSupported )
	document.writeln('</div>');

//--></script>
</body>

</html>
