Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Fun] Parodiez un site de votre choix
Auteur Message
Répondre en citant
Message [Fun] Parodiez un site de votre choix 
Les règles: Il n'y en a pas, osef.
J'vous présente deux parodies:
1. C'est juste The Salmon of Capistrano.com en version MLG. Mort de Rire
2. C'est Hardcore Prawn Lawn en... MLG. Ui :3

Code:

<!DOCTYPE HTML>
<html lang="en">
   <head>
      <title>The MLG of Materialismo</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
      <link rel='stylesheet' type='text/css' href='http://fonts.googleapis.com/css?family=Press+Start+2P' media="all">
      <link rel="stylesheet" type="text/css" href="http://salmonofcapistrano.com/resources/css/main.css" media="all">

      <script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1162486-13']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

<style type="text/css">

.full-width{
   width: 100%;
   float: left;
   background: white !important;
}

.full-width-above-canvas{
   width: 100%;
   float: left;
   position: absolute;
   top: 0;
   z-index: 999999999;
}

.full-width-top{
   width: 100%;
   background: white !important;
   position: absolute;
   z-index: 9999999999;
}

.full-canvas{
   width: 100%;
   float: left;   
}

.full-canvas h1, .full-canvas h2{
   padding-top: 70px;
}

.container{
   margin: 0 auto;
   width: 1000px;
   text-align: center;
   padding-top: 10px;
   padding-bottom: 10px;
   position: relative;
}

.leaderboard{
   height: 90px;
}

.container-half{
   float: left;
   width: 500px;
   text-align: center;   
}

</style>

</head>
   
 <body>

<div class="full-width-above-canvas">
    <div class="container leaderboard">
   
      <script async src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
        <!-- salmon leaderboard -->
        <ins class="adsbygoogle"
        style="display:inline-block;width:728px;height:90px"
        data-ad-client="ca-pub-7663293455181927"
        data-ad-slot="2780815560"></ins>
        <script>
        (adsbygoogle = window.adsbygoogle || []).push({});
        </script>
   
    </div> <!-- "container leaderboard" -->
</div> <!-- "full-width" -->

<div class="full-canvas">

      <img id="face-source-0" src="http://vignette2.wikia.nocookie.net/markiplier/images/d/d5/Illuminati_Emblem.png/revision/latest?cb=20150227225025" width="477" height="196" alt=" " class="face-source">
      <img id="face-source-1" src="http://vignette3.wikia.nocookie.net/sanicsource/images/f/fa/Sanic2.png/revision/latest?cb=20150221082206" width="477" height="196" alt=" " class="face-source">
      <img id="face-source-2" src="http://static.fjcdn.com/gifs/The_0f3ee4_5456396.gif" width="477" height="196" alt=" " class="face-source">
      <img id="face-source-3" src="http://41.media.tumblr.com/95982987dff8ffb611451fc49708a091/tumblr_nmg97oo2qP1rmkcado1_400.png" width="477" height="196" alt=" " class="face-source">
      <img id="face-source-4" src="http://vignette3.wikia.nocookie.net/420-mlg/images/1/17/N41tcFI.gif/revision/latest?cb=20141003092952" width="477" height="196" alt=" " class="face-source">

      <h1>MLG of Materialismo</h1>
      <h2>The Unofficial Homepage</h2>

      <div id="faces-container"></div>

      <audio controls="controls" autoplay="autoplay">
         <source src="http://salmonofcapistrano.com/resources/audio/waterfalls.ogg" type="audio/ogg" />
         <source src="http://salmonofcapistrano.com/resources/audio/waterfalls.mp3" type="audio/mpeg" />
      </audio>
      
      <script type="text/javascript" src="http://salmonofcapistrano.com/resources/javascript/Three.js"></script>
      <script type="text/javascript" src="http://salmonofcapistrano.com/resources/javascript/Faces.js"></script>
      <script type="text/javascript">
         window.onload = Faces.windowInit;
      </script>      
        <center> <h3>oh hei, m9! u wana c da src? k go3 <a href="http://salmonofcapistrano.com">salmonofcapistrano.com</a> so i no on anithin :O </h3></center>

</div> <!-- "full-canvas" -->

<div class="full-width">
   <div class="container">
       
        <div class="container-half">
         <script async src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
            <!-- Salmon Rectangle -->
            <ins class="adsbygoogle"
            style="display:inline-block;width:336px;height:280px"
            data-ad-client="ca-pub-7663293455181927"
            data-ad-slot="4257548763"></ins>
            <script>
            (adsbygoogle = window.adsbygoogle || []).push({});
            </script>   
        </div> <!-- container-half" -->       
       
        <div class="container-half">
         <script async src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
            <!-- Salmon Rectangle -->
            <ins class="adsbygoogle"
            style="display:inline-block;width:336px;height:280px"
            data-ad-client="ca-pub-7663293455181927"
            data-ad-slot="4257548763"></ins>
            <script>
            (adsbygoogle = window.adsbygoogle || []).push({});
            </script>   
        </div> <!-- container-half" -->       
       
    </div> <!-- "container" -->
</div> <!-- "full-width" -->

   </body>   
</html>

Code:
<html>
    <head>
        <title>Froggy MLG Bacon (Parodie de "Hardcore Prawn Lawn by @matcarpenter")</title>
<meta name="description" content="swegitti sweg">
<meta property="og:title" content="sweg" />
<meta property="og:image" content="http://hardcoreprawnlawn.com/prawnimage.jpg" />
<meta property="og:description" content="frogi dude psych sweg" />
        <style>
        body{
            background-image: url('http://i.imgur.com/4NXFYF9.gif');
            background-size: cover;
        }
        .image {
            position: absolute;
            top: 244;
            left: 888;
            width: 400px;
            height: 409px;
            margin:-100px 0 0 -400px;
            -webkit-animation:spin 4s linear infinite;
            -moz-animation:spin 4s linear infinite;
            animation:spin 4s linear infinite;
        }
        @-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
        @-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
        @keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
        </style>
    </head>
    <body>
        <audio autoplay loop>
          <source src="http://hardcoreprawnlawn.com/sound.mp3" type="audio/mpeg">
          Your browser does not support the audio element.
        </audio>
   <style>a{color: grey; font-family: Arial; text-decoration: none}
   a:hover{color: grey; font-family: Arial; font-weight: bold; text-decoration: none}</style>
<center><img class="image" src="http://alexkang.me/montage/images/frog_left.gif"></center>
<a href="http://hardcoreprawnlawn.com" data-show-count="false" data-show-screen-name="false">orgnl wbst :3</a> <span style="color: grey;">&bull;</span>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'http://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
        <a href="https://twitter.com/share" class="twitter-share-button">dis butn no wrks :(</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'http://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script><br />
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.3&appId=578098672270130";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-share-button" data-href="http://www.hardcoreprawnlawn.com" data-layout="button_count"></div>
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','http://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-64047073-1', 'auto');
  ga('send', 'pageview');

</script>
    </body>
</html>

Voilà Okay Laughing Bon, j'ai mis les sources, on sait jamais Mr. Green



Dernière édition par bexandre le Mar 20 Oct 2015 - 15:49; édité 2 fois

______________________________________________________
Visiter le site web du posteur Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Re: [Fun] Parodiez un site de votre choix 
bexandre a écrit:
Les règles: Il n'y en a pas, osef.
J'vous présente ma parodie: C'est juste salmonofcapistrano.com en version MLG. Mort de Rire
{{{Vous devez répondre à ce sujet pour voir la partie cachée}}}
Voilà Okay Laughing Bon, j'ai mis la source, on sait jamais Mr. Green


J'adore ! Very Happy




______________________________________________________
Je ne suis pas ce que je suis. Mais si j'étais ce que je suis alors je ne serais pas ce que je suis actuellement (vous avez 2 heures).

Python : 90%
Batch : 65%
AutoIt : 20%

Site : http://lavapower.890m.com
Visiter le site web du posteur
Répondre en citant
Message [Fun] Parodiez un site de votre choix 
Shocked



Répondre en citant
Message [Fun] Parodiez un site de votre choix 
Bon, voila Troll Gravity, une parodie de google gravity:
Code:
<!DOCTYPE html>
<html>
   <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
      <title>Google Gravity</title>
      <style>
         body {

            margin: 0;
            overflow: hidden;
            background-color: #ffffff;
            font-family: Arial, sans-serif;

            user-select: none;
            -webkit-user-select: none;
            -moz-user-select: none;
            -o-user-select: none;
            -ms-user-select: none;

         }

         button {

            height: 29px;
            padding: 0 8px;
            color: #444;
            background-color: #f4f4f4;
            border: 1px solid #d9d9d9;
            border-radius: 2px;
            font-family: Arial, sans-serif;
            font-size: 11px;
            font-weight: bold;
            text-align: center;
            cursor: pointer;

         }

            button:hover {

               color: #222;
               background-color: #f8f8f8;
               -webkit-linear-gradient(top,#f8f8f8,#f1f1f1)
               border: 1px solid #c6c6c6;
               -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1)

            }

         #topbar {

            width: 100%;
            color: #BBB;
            font-size: 13px;
            font-weight: bold;
            line-height: 27px;
            border-spacing: 0px;
            white-space: nowrap;

         }

            #topbar tr {

               width: 100%;
               margin: 0px;
               padding: 0px;

            }

            #topbar td {

               height: 28px;
               margin: 0px;
               background-color: #2d2d2d;
               white-space: nowrap;
               cursor: pointer;

            }

               #topbar td:hover {

                  color: #FFF;

               }

               #topbar td.selected {

                  color: #FFF;

               }

            #topbar td.empty {

               cursor: auto;

            }

               #topbar td.empty:hover {

                  background-color: #2d2d2d;

               }


            #topbar td span {

               display: block;
               padding: 1px 8px 0px 10px;

            }

         #content {

            width: 100%;
            text-align: center;
            margin-top: 162px;

            white-space: nowrap;

         }

            #content #logo {

               margin-bottom: 17px;

            }

            #content input {

               width: 560px;
               padding: 4px 9px;
               margin-bottom: 16px;
               font: 16px arial,sans-serif;
               border: 1px solid #d9d9d9;
               border-top-color: #c0c0c0;

               color: #000000;

            }

               #content input:hover {

                  border: 1px solid #b9b9b9;
                  border-top-color: #a0a0a0;

               }

               #content input:focus {

                  outline: 0; /* this removes browser-side outline */
                  border-color: #4d90fe;

               }

         #bottombar {

            position: absolute;
            bottom: 30px;
            width: 100%;
            height: 1px;
            line-height: 0px;
            border-spacing: 0px;

         }

            #bottombar tr {

               width: 100%;
               margin: 0px;
               padding: 0px;

            }

            #bottombar td {

               height: 1px;
               margin: 0px;
               padding: 0px;
               background-color: #ebebeb;

            }

         #footer {

            position: absolute;
            right: 50px;
            bottom: 10px;
            width: 100%;
            font-size: 13px;
            text-align: right;
            white-space: nowrap;

         }

            #footer * {

               margin: 0px 9px;

            }

            #footer a {

               color: #666;
               text-decoration: none;

            }

               #footer a:hover {

                  text-decoration: underline;

               }

         .result {

            width: 546px;

         }

            .result .title {

               color: #2200C1;
               font-size: 16px;
               font-weight: normal;

            }

               .result .title a:active {

                  color: #2200C1;

               }

            .result .url {

               color: #0e774a;
               font-size: 13px;

            }

            .result .content {

               font-size: 13px;

            }

         #carbonads {
            position: absolute;
            top: 40px;
            left: 10px;
            width: 130px;
            padding: 10px;
            font-size: 12px;
            background-color: #fff;
            border: 1px solid #eee;
         }

            #carbonads a {
               color: #666;
               text-decoration: none;
            }

            #carbonads .carbon-wrap {
               display: block;
               margin-bottom: 5px;
            }

            #carbonads .carbon-img {
               display: block;
               margin-bottom: 5px;
            }

            #carbonads .carbon-poweredby {
               color: #ccc;
            }

      </style>
   </head>
   <body>

      <script src="//3d885b05.mrdoob.com" defer="defer" async="async"></script>

      <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-86951-7']);
        _gaq.push(['_trackPageview']);

        (function() {
          var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
          ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
          (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
        })();
      </script>

      <table id="topbar">
         <tr>
            <td class="box2d" onClick="location.href = 'https://plus.google.com/?gpsrc=ogpy0&tab=wX';"><span>+You</span></td>
            <td class="box2d selected" onClick="location.href = 'http://www.google.com/webhp?hl=en&tab=ww';"><span>Search</span></td>
            <td class="box2d" onClick="location.href = 'http://www.google.com/imghp?hl=en&tab=wi';"><span>Faces</span></td>
            <td class="box2d" onClick="location.href = 'http://maps.google.com/maps?hl=en&tab=wl';"><span>Where is it ?</span></td>
            <td class="box2d" onClick="location.href = 'https://play.google.com/?hl=en&tab=w8';"><span>Play</span></td>
            <td class="box2d" onClick="location.href = 'http://www.youtube.com/?tab=w1';"><span>MyTube</span></td>
            <td class="box2d" onClick="location.href = 'http://news.google.com/nwshp?hl=en&tab=wn';"><span>Nows</span></td>
            <td class="box2d" onClick="location.href = 'https://mail.google.com/mail/?tab=wm';"><span>TMail</span></td>
            <td class="box2d" onClick="location.href = 'https://drive.google.com/?tab=wo';"><span>BSOD</span></td>
            <td class="box2d" onClick="location.href = 'https://www.google.com/calendar?tab=wc';"><span>I forgot what is it.</span></td>
            <td class="box2d" onClick="location.href = 'http://www.google.com/intl/en/options/';"><span>Realy Nothing</span></td>
            <td class="box2d empty" style="width:10%"><span>&nbsp;</span></td>
            <td class="box2d empty" style="width:20%"><span>&nbsp;</span></td>
            <td class="box2d empty" style="width:20%"><span>&nbsp;</span></td>
            <td class="box2d empty" style="width:10%"><span>&nbsp;</span></td>
            <td class="box2d empty" style="width:5%"><span>&nbsp;</span></td>
            <td class="box2d empty" style="width:5%"><span>&nbsp;</span></td>
            <td class="box2d empty" style="width:20%"><span>&nbsp;</span></td>
         </tr>
      </table>

      <span style="position:absolute;top:50px;right:30px;"><button id="btnG" class="box2d" style="color:#fff;font-size:11px;font-weight:bold;padding: 0 16px;border:1px solid transparent;background-color:#d14836;text-transform: uppercase;">Sign in</button></span>

      <div id="content">
         <img id="logo" src="data:image/png;base64,
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Sx/s/wAM6wv/AF52l39o8W/8/OoQ/wDLLTK+r/A/7Qvwh8f/AGaDRfGWnWmq3P8AZUS6F4gY6Bq51DWMpbaTaQ6n5FtrWpJcq1nPH4dutYgS5MKpcSR3dlJcfhxRX9z+Gn7TP6RXBlTD4bi+tw/4o5PS5KdSlxBlmHybPYYWlh6dGlSwmfcOUcvhKvz0o1q2OzvKs+xeJlUxDrVJ1KlOrQ/EOJPo2eHucxqVMphmHDGLlzSjLL8TUxmBdSdSU5Tq4HMZYiShyycIUMFisDSpqNPkioxlGf8ARhRX4GeC/ij8Q/h5LG/g3xfrWhwpc3F4dNgujcaHPd3VoLGe6vNAvlutEvrlrVIo1nvdPnlia3tZomSa0tpIvqfwt+3X4+03yYfFvhXw54otoNOjtvP06a88M6vd6hF9nX+07+6/4nWlN58cdy91ZafoWmwG5uEktGs7a3+xy/314c/tS/AziWnSo+IORcVeGeYymlVqvDS4y4ep03GFpwzLI8LRz2pOM/aKpTfClOKpqlOnVqzqTpUfwbiL6MHG+WylPIMdlfEuHUfdj7RZPmEpJvR4bG1Z4GMWuXll/asm5OSlGKjGU/1Mor58+Gv7Tfws+KGq2nh/RbvWtL8Sajc3sGnaDrujzRXd7Fp+mvqtxeR3ulSavokNsLWC7CLeatbXbS2cyfZQJLRrn6Dr/QTgfxC4H8S8k/1k8P8AivIuMMjWKqYGrmOQZjh8woYbH0qOHxNXL8aqE5VMDmFLDYvCYirgMZChi6eHxWGrzoxpYijOf4HneQZ3w3jf7Oz/ACrHZRjfZRrxw+Pw9TDzqUJzqU4YijzpRr4eVSlVpxr0ZTpSqUqsFNypzSKKKK+xPHCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/nPooor/i/P9kAooooAKKKKACiiigAooooAKKKKAPoz9kz/AJOB8Af9zV/6hPiSv2kr8W/2TP8Ak4HwB/3NX/qE+JK/aSv+gj9lH/yjvxn/ANno4i/9Yfw6P4F+lP8A8nByf/sjcv8A/V3xCFFFFf6cH80hRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfzn0UUV/xfn+yAUUUUAFFFFABRRRQAUUUUAFFFFAH0Z+yZ/wAnA+AP+5q/9QnxJX7SV+Lf7Jn/ACcD4A/7mr/1CfElftJX/QR+yj/5R34z/wCz0cRf+sP4dH8C/Sn/AOTg5P8A9kbl/wD6u+IQooor/Tg/mkKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD+c+iiiv+L8/2QCiiigAooooAKKKKACiiigAooooA+jP2TP+TgfAH/c1f+oT4kr9pK/Fv9kz/k4HwB/3NX/qE+JK/aSv+gj9lH/yjvxn/wBno4i/9Yfw6P4F+lP/AMnByf8A7I3L/wD1d8QhRRRX+nB/NIUUUUAFFFFABRRRQAUUUUAFFFFABRRR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T6KK/wBieGuF+G+DcmwfD3CeQ5Rw3kWXw9ngsoyPL8LlmX4eOnM6eFwdKlRU6jXNVquLqVZt1Ks5zbk/5CzLM8xzjGVswzXHYvMsdiJc1bF43EVcTiKj6c1WtKc2orSMb8sI2jFKKSCiiivdOEKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDFg8S+HbrXLzwzba/otx4k062W81Dw/BqljLrljaOtq6XV5pMc7X9rbOl9ZMs89ukTLeWrBiLiEvtV+D3xR8c3nij4s+L/HOma1czPN4surzw1rlnHLpF3FpWkXS2nhO6tRFBYXdlc2Wj2Gl+RPJFBqSywLcXbG/M0re9fDj9tP4h+ErRdM8X6fbfEOwgthDZXV5enRfEULRRWNvbJda1BY6hDqltHDbXMk8mo6XPrl9fXrXd3rsqRC3f/L3gv8Aah+FOM414o4Z8QskzDhTIMDxJnmB4Y45yh1OJ8pzLIcHmOJoZVjc6y3KaeKzPBYrF4GnQrSnka4jwdetVbpSoYdRqT/pvOfoycVUcmyzMuH8bh81x9fLsFXzPI8Xy5Zi8Pjq2HpTxVHB4nFSpYavSpV5VIKOOeXVoQglJVKjcV+s9FfPngv9qL4K+NIoxH4utvDF+ba4up9M8aBPDstrFBdi0Cyapcyv4buLm4Dw3dvZ6frl7dtaSmV4I3tr2O1+g6/0R4L8QuBPEbLFnHAXGHDfGGWqGHnVxXDucYHNY4V4mEp0aOPp4SvVrZfipKnUjPB46nh8VSqUq1KrRhVo1YQ/nvOeH884dxP1PPcozHKMTzVIxpZhg6+FdX2TSnOhKrCMMRSXNFqtQlUpSjOE4TlGcWyiiivsTyAooooAKKKKACiivmr4j/tWfCbwFaMNP1u28da3LbGay0nwjeWupWhaSK++zPqfiCCSXR9Otjd2aW17HDPqGuWkV5bXsehXdrIHPxHHniVwD4X5NUz/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e2t4USGCCFEiiiRY41VFAFmv9p/o6/QD8IPA6WB4hz2jDxL8Q8LNV6PEmfYP2WU5PWdNRccg4YeJxWXUZ0pr2lHNMz/tPNqNZe2wOKy+M5UD+NPELx54u42VfL8DOXDfD9Vck8uwNbnxeLgpXTx+ZqlSxE1Je7PDYb6thJwfJXpYhpVAooor+7T8NCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK+Yvjr+zLpHxq1fTvEf/AAlWpeGtesNOtNE3/wBnW2s6RLpFrc6vf7P7O8/SryPUpLzVc/bf7Xe2W2g8j+zWll+1R/TtFfC+I3hnwP4t8LYvgrxEyCjxJwzja+HxOIy2tiswwN8ThJuphsRSxmVYvAZhhq9Gbbp1cNiqNRXa5rNo9zh3iTO+E80pZzw/j55bmVGFSnTxMKWHr/u6q5alOdHFUa+HqQmklKNSlOLtsfiD8Qv2c/i18N5Z31Xwzc61o8Ftc3j+JPCsV1rmhx2ljaW95qF1fSw2sV/ottZJcNHLPr2n6VFM1pezWTXVpbSXNeG1/RhXmHjT4MfCz4hSyXPi3wRoupX81zb3Vxq0EU2ka5dS2lobC3W813RZtO1i8torQpAtndXs1ptgtSYC9natD/lN4p/sncHiK2LzDwZ8SP7PVWu54bhjxBwtXEYTD06kZTlTp8WZHh6mMjRoVkqWGo4jhjHYh4WcfrOY18Rh5VcZ/U3C/wBKqtThRw/GPDn1hxgo1MzyCrGnVqSi0lKWVY2caLnOF5VJ08zoU/ap+zw9OnUUaP4PUV+pvin9hTwDqXnTeEvFXiPwvcz6lJc+RqMNn4m0i00+X7Q39mWFr/xJdVXyJJLZLW91DXdSnFtbvHdreXNx9si8E1j9hn4q2X9qzaTrvgvWra0+3SaZB9v1bTdX1aCDzWsovstzo76VYalfxpGn2e411tPtbmXy5dWNtG14f4c4z+gJ9KjgytNS8Na/FGDj7T2eZcGZrlef0a/soynPky+liqGfU7xj+7+s5Ph/bSlGlR9pWbpr9tybx58L85hFriOGV1ny82GznC4rAThzNRXNiJU54CWr972eMqciTnPlh7z+LaK971b9mD48aLp9xqd58O9SmtrbyvMj0nUtA1/UG86eO3T7PpOhatqWq3eJJVaX7LZTeRAJLmfy7aGaWPiv+FPfFz/olvxG/wDCI8Tf/Kyv59zbwc8XshxEMHnnhX4kZLi6lGOJp4XNuB+J8uxFTDzqVKUMRChjMro1ZUZVaNanGrGLpyqUqkFJyhJL7/C8YcJY+nKtgeKOHcZSjN05VcLneWYinGooxk6cp0cTOKmozhJxb5lGUW1aSv5zRXo3/Cnvi5/0S34jf+ER4m/+VlH/AAp74uf9Et+I3/hEeJv/AJWV5f8AxDfxE/6ILjT/AMRbPP8A5hOn/WPh7/oe5N/4c8D/APLzzmivRv8AhT3xc/6Jb8Rv/CI8Tf8Aysro/D/7Ovxu8S/a/wCzvht4jtvsXked/wAJBBb+E9/2nzvL+yf8JTcaN9v2+Q/n/YPtP2XdD9q8n7Tb+b25d4S+Kub4yjl2U+GXiDmmYYj2n1fA5dwZxHjcZX9lSnXq+xw2Gy2rWq+yo0qlapyQlyUqc6krQhJrHEcWcLYSjPEYriXIMNh6fL7SviM4y6jRhzyjCPPVqYiMI805RhHmkrylGKu2keLUV9caF+xT8atXtJLnUF8J+FpkuXgXT9d157i7miWKGRbyN/DOn+IrAW0jyvAizXsV2JbeYyWqQtbzT+5eFv2C9Ii8mbxt4+1K+8zTo/tGm+FtMttL+yau/wBneXydb1ZtY/tHTrfF3BHv8P6Xc3e+3u2+xeXJZS/uXB/0G/pTcaVMOsH4SZ7keGrwhVnjeMK2X8I08LSnKUVPEYTPsXgs151KPv4Whl1fGwi41JYZU3znxGb+N3hfk0antuLMDjakJOKo5RDEZtKrJJO1OrgaVbC2aelWpiIUW04qo5Kx+ate0/DL9n/4nfFbyrrw7of2LQZN/wDxVPiBpdL8PnZ9vj/0S4+z3F5rGLzTp9On/sKw1T+z714U1P7DFJ5y/q94H/Z6+EPw/wDs0+i+DdOu9Vtv7KlXXfECnX9XGoaPl7bVrSbU/PttF1KS5ZryeTw7a6PA9yIWS3jjtLKO39pr+7fCT9lDOGIwOaeNviDRrYeneriuEPD+jW/fyVTnoUcTxfnGHoTp0XCMaeYYbBcNqtU9rVp4HOcO6NLG1fw3iz6VClTr4XgvIJwqS92lm2fzh+7XLac6eU4OpOMp8zcsPUrZjyR5YSr4Oopyow+WfhN+yZ8Pfhrd2GvalLc+NvFunXMd5ZatqkIsdK0y7t5b0211pXh+Ce4hS5SG4tWM+sXuty22pafbarpDaTcAIn1NRRX+sXhz4XeHvhHw9S4V8N+E8o4SyOnNVqmGyyjN4jHYlU4UfrubZliamIzTOswdGnSoSzHNsbjcdKhSo0ZYh0qVOEf5V4i4n4g4szCWacR5ri82xslyRqYma9nQpuTn7HCYalGnhcHh+eUprD4SjRoKcpzVPmnJsooor748EKKKKAP/2Q==" width="275" height="95"class="box2d"><br />
         <input id="q" value="" title="Search" autocomplete="off" type="text" maxlength="2048" class="box2d"><br />
         <span style="margin: 0 4px;"><button id="btnG" class="box2d">Bong Search</button></span>
         <span style="margin: 0 4px;"><button id="btnI" class="box2d">I'm trolling you!</button></span>
      </div>

      <table id="bottombar">
         <tr>
            <td class="box2d" style="width:10%"><span>&nbsp;</span></td>
            <td class="box2d" style="width:12%"><span>&nbsp;</span></td>
            <td class="box2d" style="width:8%"><span>&nbsp;</span></td>
            <td class="box2d" style="width:4%"><span>&nbsp;</span></td>
            <td class="box2d" style="width:4%"><span>&nbsp;</span></td>
            <td class="box2d" style="width:5%"><span>&nbsp;</span></td>
            <td class="box2d" style="width:4%"><span>&nbsp;</span></td>
            <td class="box2d" style="width:2%"><span>&nbsp;</span></td>
         </tr>
      </table>

      <div id="footer">
         <a href="http://www.google.com/intl/en/ads/" class="box2d">Advertising Programs</a>
         <a href="http://www.google.com/services/" class="box2d">Business Solutions</a>
         <a href="http://www.google.com/intl/en/policies/" class="box2d">Privacy & Terms</a>
         <a href="https://plus.google.com/116899029375914044550" class="box2d">+Poop</a>
         <a href="http://www.google.com/intl/en/about.html" class="box2d">About my dick</a>
      </div>

      <script src="http://www.google.com/uds/api?file=uds.js&v=0.1" type="text/javascript"></script>
      <script>

         /* Based on Alex Arnell's inheritance implementation. */
         var Class = {
           create: function() {
             var parent = null, properties = $A(arguments);
             if (Object.isFunction(properties[0]))
               parent = properties.shift();

             function klass() {
               this.initialize.apply(this, arguments);
             }

             Object.extend(klass, Class.Methods);
             klass.superclass = parent;
             klass.subclasses = [];

             if (parent) {
               var subclass = function() { };
               subclass.prototype = parent.prototype;
               klass.prototype = new subclass;
               parent.subclasses.push(klass);
             }

             for (var i = 0; i < properties.length; i++)
               klass.addMethods(properties[i]);

             if (!klass.prototype.initialize)
               klass.prototype.initialize = this.emptyFunction;

             klass.prototype.constructor = klass;

             return klass;
           },
           emptyFunction:function () {},

         };

         Class.Methods = {
           addMethods: function(source) {
             var ancestor   = this.superclass && this.superclass.prototype;
             var properties = Object.keys(source);

             if (!Object.keys({ toString: true }).length)
               properties.push("toString", "valueOf");

             for (var i = 0, length = properties.length; i < length; i++) {
               var property = properties[i], value = source[property];
               if (ancestor && Object.isFunction(value) &&
              value.argumentNames().first() == "$super") {
            var method = value, value = Object.extend((function(m) {
              return function() { return ancestor[m].apply(this, arguments) };
            })(property).wrap(method), {
              valueOf:  function() { return method },
              toString: function() { return method.toString() }
            });
               }
               this.prototype[property] = value;
             }

             return this;
           }
         };

         Object.extend = function(destination, source) {
           for (var property in source)
             destination[property] = source[property];
           return destination;
         };

         Object.extend(Object, {
           inspect: function(object) {
             try {
               if (Object.isUndefined(object)) return 'undefined';
               if (object === null) return 'null';
               return object.inspect ? object.inspect() : String(object);
             } catch (e) {
               if (e instanceof RangeError) return '...';
               throw e;
             }
           },

           toJSON: function(object) {
             var type = typeof object;
             switch (type) {
               case 'undefined':
               case 'function':
               case 'unknown': return;
               case 'boolean': return object.toString();
             }

             if (object === null) return 'null';
             if (object.toJSON) return object.toJSON();
             if (Object.isElement(object)) return;

             var results = [];
             for (var property in object) {
               var value = Object.toJSON(object[property]);
               if (!Object.isUndefined(value))
            results.push(property.toJSON() + ': ' + value);
             }

             return '{' + results.join(', ') + '}';
           },

           toQueryString: function(object) {
             return $H(object).toQueryString();
           },

           toHTML: function(object) {
             return object && object.toHTML ? object.toHTML() : String.interpret(object);
           },

           keys: function(object) {
             var keys = [];
             for (var property in object)
               keys.push(property);
             return keys;
           },

           values: function(object) {
             var values = [];
             for (var property in object)
               values.push(object[property]);
             return values;
           },

           clone: function(object) {
             return Object.extend({ }, object);
           },

           isElement: function(object) {
             return object && object.nodeType == 1;
           },

           isArray: function(object) {
             return object != null && typeof object == "object" &&
               'splice' in object && 'join' in object;
           },

           isHash: function(object) {
             return object instanceof Hash;
           },

           isFunction: function(object) {
             return typeof object == "function";
           },

           isString: function(object) {
             return typeof object == "string";
           },

           isNumber: function(object) {
             return typeof object == "number";
           },

           isUndefined: function(object) {
             return typeof object == "undefined";
           }
         });

         function $A(iterable) {
           if (!iterable) return [];
           if (iterable.toArray) return iterable.toArray();
           var length = iterable.length || 0, results = new Array(length);
           while (length--) results[length] = iterable[length];
           return results;
         }

         if (WebKit = navigator.userAgent.indexOf('AppleWebKit/') > -1) {
           $A = function(iterable) {
             if (!iterable) return [];
             if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&
            iterable.toArray) return iterable.toArray();
             var length = iterable.length || 0, results = new Array(length);
             while (length--) results[length] = iterable[length];
             return results;
           };
         }

      </script>
      <script>

         /*
          * Box2Djs (port of Box2DFlash 1.4.3.1) - http://box2d-js.sourceforge.net/
          * Single-filed and jsmined ( http://code.google.com/p/jsmin-php/ ) by Mr.doob
          */

         var b2Settings=Class.create();b2Settings.prototype={initialize:function(){}}
         b2Settings.USHRT_MAX=0x0000ffff;b2Settings.b2_pi=Math.PI;b2Settings.b2_massUnitsPerKilogram=1.0;b2Settings.b2_timeUnitsPerSecond=1.0;b2Settings.b2_lengthUnitsPerMeter=30.0;b2Settings.b2_maxManifoldPoints=2;b2Settings.b2_maxShapesPerBody=64;b2Settings.b2_maxPolyVertices=8;b2Settings.b2_maxProxies=1024;b2Settings.b2_maxPairs=8*b2Settings.b2_maxProxies;b2Settings.b2_linearSlop=0.005*b2Settings.b2_lengthUnitsPerMeter;b2Settings.b2_angularSlop=2.0/180.0*b2Settings.b2_pi;b2Settings.b2_velocityThreshold=1.0*b2Settings.b2_lengthUnitsPerMeter/b2Settings.b2_timeUnitsPerSecond;b2Settings.b2_maxLinearCorrection=0.2*b2Settings.b2_lengthUnitsPerMeter;b2Settings.b2_maxAngularCorrection=8.0/180.0*b2Settings.b2_pi;b2Settings.b2_contactBaumgarte=0.2;b2Settings.b2_timeToSleep=0.5*b2Settings.b2_timeUnitsPerSecond;b2Settings.b2_linearSleepTolerance=0.01*b2Settings.b2_lengthUnitsPerMeter/b2Settings.b2_timeUnitsPerSecond;b2Settings.b2_angularSleepTolerance=2.0/180.0/b2Settings.b2_timeUnitsPerSecond;b2Settings.b2Assert=function(a)
         {if(!a){var nullVec;nullVec.x++;}};
         var b2Vec2=Class.create();b2Vec2.prototype={initialize:function(x_,y_){this.x=x_;this.y=y_;},SetZero:function(){this.x=0.0;this.y=0.0;},Set:function(x_,y_){this.x=x_;this.y=y_;},SetV:function(v){this.x=v.x;this.y=v.y;},Negative:function(){return new b2Vec2(-this.x,-this.y);},Copy:function(){return new b2Vec2(this.x,this.y);},Add:function(v)
         {this.x+=v.x;this.y+=v.y;},Subtract:function(v)
         {this.x-=v.x;this.y-=v.y;},Multiply:function(a)
         {this.x*=a;this.y*=a;},MulM:function(A)
         {var tX=this.x;this.x=A.col1.x*tX+A.col2.x*this.y;this.y=A.col1.y*tX+A.col2.y*this.y;},MulTM:function(A)
         {var tX=b2Math.b2Dot(this,A.col1);this.y=b2Math.b2Dot(this,A.col2);this.x=tX;},CrossVF:function(s)
         {var tX=this.x;this.x=s*this.y;this.y=-s*tX;},CrossFV:function(s)
         {var tX=this.x;this.x=-s*this.y;this.y=s*tX;},MinV:function(b)
         {this.x=this.x<b.x?this.x:b.x;this.y=this.y<b.y?this.y:b.y;},MaxV:function(b)
         {this.x=this.x>b.x?this.x:b.x;this.y=this.y>b.y?this.y:b.y;},Abs:function()
         {this.x=Math.abs(this.x);this.y=Math.abs(this.y);},Length:function()
         {return Math.sqrt(this.x*this.x+this.y*this.y);},Normalize:function()
         {var length=this.Length();if(length<Number.MIN_VALUE)
         {return 0.0;}
         var invLength=1.0/length;this.x*=invLength;this.y*=invLength;return length;},IsValid:function()
         {return b2Math.b2IsValid(this.x)&&b2Math.b2IsValid(this.y);},x:null,y:null};b2Vec2.Make=function(x_,y_)
         {return new b2Vec2(x_,y_);};
         var b2Mat22=Class.create();b2Mat22.prototype={initialize:function(angle,c1,c2)
         {if(angle==null)angle=0;this.col1=new b2Vec2();this.col2=new b2Vec2();if(c1!=null&&c2!=null){this.col1.SetV(c1);this.col2.SetV(c2);}
         else{var c=Math.cos(angle);var s=Math.sin(angle);this.col1.x=c;this.col2.x=-s;this.col1.y=s;this.col2.y=c;}},Set:function(angle)
         {var c=Math.cos(angle);var s=Math.sin(angle);this.col1.x=c;this.col2.x=-s;this.col1.y=s;this.col2.y=c;},SetVV:function(c1,c2)
         {this.col1.SetV(c1);this.col2.SetV(c2);},Copy:function(){return new b2Mat22(0,this.col1,this.col2);},SetM:function(m)
         {this.col1.SetV(m.col1);this.col2.SetV(m.col2);},AddM:function(m)
         {this.col1.x+=m.col1.x;this.col1.y+=m.col1.y;this.col2.x+=m.col2.x;this.col2.y+=m.col2.y;},SetIdentity:function()
         {this.col1.x=1.0;this.col2.x=0.0;this.col1.y=0.0;this.col2.y=1.0;},SetZero:function()
         {this.col1.x=0.0;this.col2.x=0.0;this.col1.y=0.0;this.col2.y=0.0;},Invert:function(out)
         {var a=this.col1.x;var b=this.col2.x;var c=this.col1.y;var d=this.col2.y;var det=a*d-b*c;det=1.0/det;out.col1.x=det*d;out.col2.x=-det*b;out.col1.y=-det*c;out.col2.y=det*a;return out;},Solve:function(out,bX,bY)
         {var a11=this.col1.x;var a12=this.col2.x;var a21=this.col1.y;var a22=this.col2.y;var det=a11*a22-a12*a21;det=1.0/det;out.x=det*(a22*bX-a12*bY);out.y=det*(a11*bY-a21*bX);return out;},Abs:function()
         {this.col1.Abs();this.col2.Abs();},col1:new b2Vec2(),col2:new b2Vec2()};
         var b2Math=Class.create();b2Math.prototype={initialize:function(){}}
         b2Math.b2IsValid=function(x)
         {return isFinite(x);};b2Math.b2Dot=function(a,b)
         {return a.x*b.x+a.y*b.y;};b2Math.b2CrossVV=function(a,b)
         {return a.x*b.y-a.y*b.x;};b2Math.b2CrossVF=function(a,s)
         {var v=new b2Vec2(s*a.y,-s*a.x);return v;};b2Math.b2CrossFV=function(s,a)
         {var v=new b2Vec2(-s*a.y,s*a.x);return v;};b2Math.b2MulMV=function(A,v)
         {var u=new b2Vec2(A.col1.x*v.x+A.col2.x*v.y,A.col1.y*v.x+A.col2.y*v.y);return u;};b2Math.b2MulTMV=function(A,v)
         {var u=new b2Vec2(b2Math.b2Dot(v,A.col1),b2Math.b2Dot(v,A.col2));return u;};b2Math.AddVV=function(a,b)
         {var v=new b2Vec2(a.x+b.x,a.y+b.y);return v;};b2Math.SubtractVV=function(a,b)
         {var v=new b2Vec2(a.x-b.x,a.y-b.y);return v;};b2Math.MulFV=function(s,a)
         {var v=new b2Vec2(s*a.x,s*a.y);return v;};b2Math.AddMM=function(A,B)
         {var C=new b2Mat22(0,b2Math.AddVV(A.col1,B.col1),b2Math.AddVV(A.col2,B.col2));return C;};b2Math.b2MulMM=function(A,B)
         {var C=new b2Mat22(0,b2Math.b2MulMV(A,B.col1),b2Math.b2MulMV(A,B.col2));return C;};b2Math.b2MulTMM=function(A,B)
         {var c1=new b2Vec2(b2Math.b2Dot(A.col1,B.col1),b2Math.b2Dot(A.col2,B.col1));var c2=new b2Vec2(b2Math.b2Dot(A.col1,B.col2),b2Math.b2Dot(A.col2,B.col2));var C=new b2Mat22(0,c1,c2);return C;};b2Math.b2Abs=function(a)
         {return a>0.0?a:-a;};b2Math.b2AbsV=function(a)
         {var b=new b2Vec2(b2Math.b2Abs(a.x),b2Math.b2Abs(a.y));return b;};b2Math.b2AbsM=function(A)
         {var B=new b2Mat22(0,b2Math.b2AbsV(A.col1),b2Math.b2AbsV(A.col2));return B;};b2Math.b2Min=function(a,b)
         {return a<b?a:b;};b2Math.b2MinV=function(a,b)
         {var c=new b2Vec2(b2Math.b2Min(a.x,b.x),b2Math.b2Min(a.y,b.y));return c;};b2Math.b2Max=function(a,b)
         {return a>b?a:b;};b2Math.b2MaxV=function(a,b)
         {var c=new b2Vec2(b2Math.b2Max(a.x,b.x),b2Math.b2Max(a.y,b.y));return c;};b2Math.b2Clamp=function(a,low,high)
         {return b2Math.b2Max(low,b2Math.b2Min(a,high));};b2Math.b2ClampV=function(a,low,high)
         {return b2Math.b2MaxV(low,b2Math.b2MinV(a,high));};b2Math.b2Swap=function(a,b)
         {var tmp=a[0];a[0]=b[0];b[0]=tmp;};b2Math.b2Random=function()
         {return Math.random()*2-1;};b2Math.b2NextPowerOfTwo=function(x)
         {x|=(x>>1)&0x7FFFFFFF;x|=(x>>2)&0x3FFFFFFF;x|=(x>>4)&0x0FFFFFFF;x|=(x>>8)&0x00FFFFFF;x|=(x>>16)&0x0000FFFF;return x+1;};b2Math.b2IsPowerOfTwo=function(x)
         {var result=x>0&&(x&(x-1))==0;return result;};b2Math.tempVec2=new b2Vec2();b2Math.tempVec3=new b2Vec2();b2Math.tempVec4=new b2Vec2();b2Math.tempVec5=new b2Vec2();b2Math.tempMat=new b2Mat22();
         var b2AABB=Class.create();b2AABB.prototype={IsValid:function(){var dX=this.maxVertex.x;var dY=this.maxVertex.y;dX=this.maxVertex.x;dY=this.maxVertex.y;dX-=this.minVertex.x;dY-=this.minVertex.y;var valid=dX>=0.0&&dY>=0.0;valid=valid&&this.minVertex.IsValid()&&this.maxVertex.IsValid();return valid;},minVertex:new b2Vec2(),maxVertex:new b2Vec2(),initialize:function(){this.minVertex=new b2Vec2();this.maxVertex=new b2Vec2();}};
         var b2Bound=Class.create();b2Bound.prototype={IsLower:function(){return(this.value&1)==0;},IsUpper:function(){return(this.value&1)==1;},Swap:function(b){var tempValue=this.value;var tempProxyId=this.proxyId;var tempStabbingCount=this.stabbingCount;this.value=b.value;this.proxyId=b.proxyId;this.stabbingCount=b.stabbingCount;b.value=tempValue;b.proxyId=tempProxyId;b.stabbingCount=tempStabbingCount;},value:0,proxyId:0,stabbingCount:0,initialize:function(){}}

         var b2BoundValues=Class.create();b2BoundValues.prototype={lowerValues:[0,0],upperValues:[0,0],initialize:function(){this.lowerValues=[0,0];this.upperValues=[0,0];}}

         var b2Pair=Class.create();b2Pair.prototype={SetBuffered:function(){this.status|=b2Pair.e_pairBuffered;},ClearBuffered:function(){this.status&=~b2Pair.e_pairBuffered;},IsBuffered:function(){return(this.status&b2Pair.e_pairBuffered)==b2Pair.e_pairBuffered;},SetRemoved:function(){this.status|=b2Pair.e_pairRemoved;},ClearRemoved:function(){this.status&=~b2Pair.e_pairRemoved;},IsRemoved:function(){return(this.status&b2Pair.e_pairRemoved)==b2Pair.e_pairRemoved;},SetFinal:function(){this.status|=b2Pair.e_pairFinal;},IsFinal:function(){return(this.status&b2Pair.e_pairFinal)==b2Pair.e_pairFinal;},userData:null,proxyId1:0,proxyId2:0,next:0,status:0,initialize:function(){}};b2Pair.b2_nullPair=b2Settings.USHRT_MAX;b2Pair.b2_nullProxy=b2Settings.USHRT_MAX;b2Pair.b2_tableCapacity=b2Settings.b2_maxPairs;b2Pair.b2_tableMask=b2Pair.b2_tableCapacity-1;b2Pair.e_pairBuffered=0x0001;b2Pair.e_pairRemoved=0x0002;b2Pair.e_pairFinal=0x0004;
         var b2PairCallback=Class.create();b2PairCallback.prototype={PairAdded:function(proxyUserData1,proxyUserData2){return null},PairRemoved:function(proxyUserData1,proxyUserData2,pairUserData){},initialize:function(){}};
         var b2BufferedPair=Class.create();b2BufferedPair.prototype={proxyId1:0,proxyId2:0,initialize:function(){}}

         var b2PairManager=Class.create();b2PairManager.prototype={initialize:function(){var i=0;this.m_hashTable=new Array(b2Pair.b2_tableCapacity);for(i=0;i<b2Pair.b2_tableCapacity;++i)
         {this.m_hashTable[i]=b2Pair.b2_nullPair;}
         this.m_pairs=new Array(b2Settings.b2_maxPairs);for(i=0;i<b2Settings.b2_maxPairs;++i)
         {this.m_pairs[i]=new b2Pair();}
         this.m_pairBuffer=new Array(b2Settings.b2_maxPairs);for(i=0;i<b2Settings.b2_maxPairs;++i)
         {this.m_pairBuffer[i]=new b2BufferedPair();}
         for(i=0;i<b2Settings.b2_maxPairs;++i)
         {this.m_pairs[i].proxyId1=b2Pair.b2_nullProxy;this.m_pairs[i].proxyId2=b2Pair.b2_nullProxy;this.m_pairs[i].userData=null;this.m_pairs[i].status=0;this.m_pairs[i].next=(i+1);}
         this.m_pairs[b2Settings.b2_maxPairs-1].next=b2Pair.b2_nullPair;this.m_pairCount=0;},Initialize:function(broadPhase,callback){this.m_broadPhase=broadPhase;this.m_callback=callback;},AddBufferedPair:function(proxyId1,proxyId2){var pair=this.AddPair(proxyId1,proxyId2);if(pair.IsBuffered()==false)
         {pair.SetBuffered();this.m_pairBuffer[this.m_pairBufferCount].proxyId1=pair.proxyId1;this.m_pairBuffer[this.m_pairBufferCount].proxyId2=pair.proxyId2;++this.m_pairBufferCount;}
         pair.ClearRemoved();if(b2BroadPhase.s_validate)
         {this.ValidateBuffer();}},RemoveBufferedPair:function(proxyId1,proxyId2){var pair=this.Find(proxyId1,proxyId2);if(pair==null)
         {return;}
         if(pair.IsBuffered()==false)
         {pair.SetBuffered();this.m_pairBuffer[this.m_pairBufferCount].proxyId1=pair.proxyId1;this.m_pairBuffer[this.m_pairBufferCount].proxyId2=pair.proxyId2;++this.m_pairBufferCount;}
         pair.SetRemoved();if(b2BroadPhase.s_validate)
         {this.ValidateBuffer();}},Commit:function(){var i=0;var removeCount=0;var proxies=this.m_broadPhase.m_proxyPool;for(i=0;i<this.m_pairBufferCount;++i)
         {var pair=this.Find(this.m_pairBuffer[i].proxyId1,this.m_pairBuffer[i].proxyId2);pair.ClearBuffered();var proxy1=proxies[pair.proxyId1];var proxy2=proxies[pair.proxyId2];if(pair.IsRemoved())
         {if(pair.IsFinal()==true)
         {this.m_callback.PairRemoved(proxy1.userData,proxy2.userData,pair.userData);}
         this.m_pairBuffer[removeCount].proxyId1=pair.proxyId1;this.m_pairBuffer[removeCount].proxyId2=pair.proxyId2;++removeCount;}
         else
         {if(pair.IsFinal()==false)
         {pair.userData=this.m_callback.PairAdded(proxy1.userData,proxy2.userData);pair.SetFinal();}}}
         for(i=0;i<removeCount;++i)
         {this.RemovePair(this.m_pairBuffer[i].proxyId1,this.m_pairBuffer[i].proxyId2);}
         this.m_pairBufferCount=0;if(b2BroadPhase.s_validate)
         {this.ValidateTable();}},AddPair:function(proxyId1,proxyId2){if(proxyId1>proxyId2){var temp=proxyId1;proxyId1=proxyId2;proxyId2=temp;}
         var hash=b2PairManager.Hash(proxyId1,proxyId2)&b2Pair.b2_tableMask;var pair=pair=this.FindHash(proxyId1,proxyId2,hash);if(pair!=null)
         {return pair;}
         var pIndex=this.m_freePair;pair=this.m_pairs[pIndex];this.m_freePair=pair.next;pair.proxyId1=proxyId1;pair.proxyId2=proxyId2;pair.status=0;pair.userData=null;pair.next=this.m_hashTable[hash];this.m_hashTable[hash]=pIndex;++this.m_pairCount;return pair;},RemovePair:function(proxyId1,proxyId2){if(proxyId1>proxyId2){var temp=proxyId1;proxyId1=proxyId2;proxyId2=temp;}
         var hash=b2PairManager.Hash(proxyId1,proxyId2)&b2Pair.b2_tableMask;var node=this.m_hashTable[hash];var pNode=null;while(node!=b2Pair.b2_nullPair)
         {if(b2PairManager.Equals(this.m_pairs[node],proxyId1,proxyId2))
         {var index=node;if(pNode){pNode.next=this.m_pairs[node].next;}
         else{this.m_hashTable[hash]=this.m_pairs[node].next;}
         var pair=this.m_pairs[index];var userData=pair.userData;pair.next=this.m_freePair;pair.proxyId1=b2Pair.b2_nullProxy;pair.proxyId2=b2Pair.b2_nullProxy;pair.userData=null;pair.status=0;this.m_freePair=index;--this.m_pairCount;return userData;}
         else
         {pNode=this.m_pairs[node];node=pNode.next;}}
         return null;},Find:function(proxyId1,proxyId2){if(proxyId1>proxyId2){var temp=proxyId1;proxyId1=proxyId2;proxyId2=temp;}
         var hash=b2PairManager.Hash(proxyId1,proxyId2)&b2Pair.b2_tableMask;return this.FindHash(proxyId1,proxyId2,hash);},FindHash:function(proxyId1,proxyId2,hash){var index=this.m_hashTable[hash];while(index!=b2Pair.b2_nullPair&&b2PairManager.Equals(this.m_pairs[index],proxyId1,proxyId2)==false)
         {index=this.m_pairs[index].next;}
         if(index==b2Pair.b2_nullPair)
         {return null;}
         return this.m_pairs[index];},ValidateBuffer:function(){},ValidateTable:function(){},m_broadPhase:null,m_callback:null,m_pairs:null,m_freePair:0,m_pairCount:0,m_pairBuffer:null,m_pairBufferCount:0,m_hashTable:null};b2PairManager.Hash=function(proxyId1,proxyId2)
         {var key=((proxyId2<<16)&0xffff0000)|proxyId1;key=~key+((key<<15)&0xFFFF8000);key=key^((key>>12)&0x000fffff);key=key+((key<<2)&0xFFFFFFFC);key=key^((key>>4)&0x0fffffff);key=key*2057;key=key^((key>>16)&0x0000ffff);return key;};b2PairManager.Equals=function(pair,proxyId1,proxyId2)
         {return(pair.proxyId1==proxyId1&&pair.proxyId2==proxyId2);};b2PairManager.EqualsPair=function(pair1,pair2)
         {return pair1.proxyId1==pair2.proxyId1&&pair1.proxyId2==pair2.proxyId2;};
         var b2BroadPhase=Class.create();b2BroadPhase.prototype={initialize:function(worldAABB,callback){this.m_pairManager=new b2PairManager();this.m_proxyPool=new Array(b2Settings.b2_maxPairs);this.m_bounds=new Array(2*b2Settings.b2_maxProxies);this.m_queryResults=new Array(b2Settings.b2_maxProxies);this.m_quantizationFactor=new b2Vec2();var i=0;this.m_pairManager.Initialize(this,callback);this.m_worldAABB=worldAABB;this.m_proxyCount=0;for(i=0;i<b2Settings.b2_maxProxies;i++){this.m_queryResults[i]=0;}
         this.m_bounds=new Array(2);for(i=0;i<2;i++){this.m_bounds[i]=new Array(2*b2Settings.b2_maxProxies);for(var j=0;j<2*b2Settings.b2_maxProxies;j++){this.m_bounds[i][j]=new b2Bound();}}
         var dX=worldAABB.maxVertex.x;var dY=worldAABB.maxVertex.y;dX-=worldAABB.minVertex.x;dY-=worldAABB.minVertex.y;this.m_quantizationFactor.x=b2Settings.USHRT_MAX/dX;this.m_quantizationFactor.y=b2Settings.USHRT_MAX/dY;var tProxy;for(i=0;i<b2Settings.b2_maxProxies-1;++i)
         {tProxy=new b2Proxy();this.m_proxyPool[i]=tProxy;tProxy.SetNext(i+1);tProxy.timeStamp=0;tProxy.overlapCount=b2BroadPhase.b2_invalid;tProxy.userData=null;}
         tProxy=new b2Proxy();this.m_proxyPool[b2Settings.b2_maxProxies-1]=tProxy;tProxy.SetNext(b2Pair.b2_nullProxy);tProxy.timeStamp=0;tProxy.overlapCount=b2BroadPhase.b2_invalid;tProxy.userData=null;this.m_freeProxy=0;this.m_timeStamp=1;this.m_queryResultCount=0;},InRange:function(aabb){var dX;var dY;var d2X;var d2Y;dX=aabb.minVertex.x;dY=aabb.minVertex.y;dX-=this.m_worldAABB.maxVertex.x;dY-=this.m_worldAABB.maxVertex.y;d2X=this.m_worldAABB.minVertex.x;d2Y=this.m_worldAABB.minVertex.y;d2X-=aabb.maxVertex.x;d2Y-=aabb.maxVertex.y;dX=b2Math.b2Max(dX,d2X);dY=b2Math.b2Max(dY,d2Y);return b2Math.b2Max(dX,dY)<0.0;},GetProxy:function(proxyId){if(proxyId==b2Pair.b2_nullProxy||this.m_proxyPool[proxyId].IsValid()==false)
         {return null;}
         return this.m_proxyPool[proxyId];},CreateProxy:function(aabb,userData){var index=0;var proxy;var proxyId=this.m_freeProxy;proxy=this.m_proxyPool[proxyId];this.m_freeProxy=proxy.GetNext();proxy.overlapCount=0;proxy.userData=userData;var boundCount=2*this.m_proxyCount;var lowerValues=new Array();var upperValues=new Array();this.ComputeBounds(lowerValues,upperValues,aabb);for(var axis=0;axis<2;++axis)
         {var bounds=this.m_bounds[axis];var lowerIndex=0;var upperIndex=0;var lowerIndexOut=[lowerIndex];var upperIndexOut=[upperIndex];this.Query(lowerIndexOut,upperIndexOut,lowerValues[axis],upperValues[axis],bounds,boundCount,axis);lowerIndex=lowerIndexOut[0];upperIndex=upperIndexOut[0];var tArr=new Array();var j=0;var tEnd=boundCount-upperIndex
         var tBound1;var tBound2;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[upperIndex+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}
         tEnd=tArr.length;var tIndex=upperIndex+2;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]
         tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}
         tArr=new Array();tEnd=upperIndex-lowerIndex;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[lowerIndex+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}
         tEnd=tArr.length;tIndex=lowerIndex+1;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]
         tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}
         ++upperIndex;bounds[lowerIndex].value=lowerValues[axis];bounds[lowerIndex].proxyId=proxyId;bounds[upperIndex].value=upperValues[axis];bounds[upperIndex].proxyId=proxyId;bounds[lowerIndex].stabbingCount=lowerIndex==0?0:bounds[lowerIndex-1].stabbingCount;bounds[upperIndex].stabbingCount=bounds[upperIndex-1].stabbingCount;for(index=lowerIndex;index<upperIndex;++index)
         {bounds[index].stabbingCount++;}
         for(index=lowerIndex;index<boundCount+2;++index)
         {var proxy2=this.m_proxyPool[bounds[index].proxyId];if(bounds[index].IsLower())
         {proxy2.lowerBounds[axis]=index;}
         else
         {proxy2.upperBounds[axis]=index;}}}
         ++this.m_proxyCount;for(var i=0;i<this.m_queryResultCount;++i)
         {this.m_pairManager.AddBufferedPair(proxyId,this.m_queryResults[i]);}
         this.m_pairManager.Commit();this.m_queryResultCount=0;this.IncrementTimeStamp();return proxyId;},DestroyProxy:function(proxyId){var proxy=this.m_proxyPool[proxyId];var boundCount=2*this.m_proxyCount;for(var axis=0;axis<2;++axis)
         {var bounds=this.m_bounds[axis];var lowerIndex=proxy.lowerBounds[axis];var upperIndex=proxy.upperBounds[axis];var lowerValue=bounds[lowerIndex].value;var upperValue=bounds[upperIndex].value;var tArr=new Array();var j=0;var tEnd=upperIndex-lowerIndex-1;var tBound1;var tBound2;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[lowerIndex+1+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}
         tEnd=tArr.length;var tIndex=lowerIndex;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]
         tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}
         tArr=new Array();tEnd=boundCount-upperIndex-1;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[upperIndex+1+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}
         tEnd=tArr.length;tIndex=upperIndex-1;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]
         tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}
         tEnd=boundCount-2;for(var index=lowerIndex;index<tEnd;++index)
         {var proxy2=this.m_proxyPool[bounds[index].proxyId];if(bounds[index].IsLower())
         {proxy2.lowerBounds[axis]=index;}
         else
         {proxy2.upperBounds[axis]=index;}}
         tEnd=upperIndex-1;for(var index2=lowerIndex;index2<tEnd;++index2)
         {bounds[index2].stabbingCount--;}
         this.Query([0],[0],lowerValue,upperValue,bounds,boundCount-2,axis);}
         for(var i=0;i<this.m_queryResultCount;++i)
         {this.m_pairManager.RemoveBufferedPair(proxyId,this.m_queryResults[i]);}
         this.m_pairManager.Commit();this.m_queryResultCount=0;this.IncrementTimeStamp();proxy.userData=null;proxy.overlapCount=b2BroadPhase.b2_invalid;proxy.lowerBounds[0]=b2BroadPhase.b2_invalid;proxy.lowerBounds[1]=b2BroadPhase.b2_invalid;proxy.upperBounds[0]=b2BroadPhase.b2_invalid;proxy.upperBounds[1]=b2BroadPhase.b2_invalid;proxy.SetNext(this.m_freeProxy);this.m_freeProxy=proxyId;--this.m_proxyCount;},MoveProxy:function(proxyId,aabb){var axis=0;var index=0;var bound;var prevBound
         var nextBound
         var nextProxyId=0;var nextProxy;if(proxyId==b2Pair.b2_nullProxy||b2Settings.b2_maxProxies<=proxyId)
         {return;}
         if(aabb.IsValid()==false)
         {return;}
         var boundCount=2*this.m_proxyCount;var proxy=this.m_proxyPool[proxyId];var newValues=new b2BoundValues();this.ComputeBounds(newValues.lowerValues,newValues.upperValues,aabb);var oldValues=new b2BoundValues();for(axis=0;axis<2;++axis)
         {oldValues.lowerValues[axis]=this.m_bounds[axis][proxy.lowerBounds[axis]].value;oldValues.upperValues[axis]=this.m_bounds[axis][proxy.upperBounds[axis]].value;}
         for(axis=0;axis<2;++axis)
         {var bounds=this.m_bounds[axis];var lowerIndex=proxy.lowerBounds[axis];var upperIndex=proxy.upperBounds[axis];var lowerValue=newValues.lowerValues[axis];var upperValue=newValues.upperValues[axis];var deltaLower=lowerValue-bounds[lowerIndex].value;var deltaUpper=upperValue-bounds[upperIndex].value;bounds[lowerIndex].value=lowerValue;bounds[upperIndex].value=upperValue;if(deltaLower<0)
         {index=lowerIndex;while(index>0&&lowerValue<bounds[index-1].value)
         {bound=bounds[index];prevBound=bounds[index-1];var prevProxyId=prevBound.proxyId;var prevProxy=this.m_proxyPool[prevBound.proxyId];prevBound.stabbingCount++;if(prevBound.IsUpper()==true)
         {if(this.TestOverlap(newValues,prevProxy))
         {this.m_pairManager.AddBufferedPair(proxyId,prevProxyId);}
         prevProxy.upperBounds[axis]++;bound.stabbingCount++;}
         else
         {prevProxy.lowerBounds[axis]++;bound.stabbingCount--;}
         proxy.lowerBounds[axis]--;bound.Swap(prevBound);--index;}}
         if(deltaUpper>0)
         {index=upperIndex;while(index<boundCount-1&&bounds[index+1].value<=upperValue)
         {bound=bounds[index];nextBound=bounds[index+1];nextProxyId=nextBound.proxyId;nextProxy=this.m_proxyPool[nextProxyId];nextBound.stabbingCount++;if(nextBound.IsLower()==true)
         {if(this.TestOverlap(newValues,nextProxy))
         {this.m_pairManager.AddBufferedPair(proxyId,nextProxyId);}
         nextProxy.lowerBounds[axis]--;bound.stabbingCount++;}
         else
         {nextProxy.upperBounds[axis]--;bound.stabbingCount--;}
         proxy.upperBounds[axis]++;bound.Swap(nextBound);index++;}}
         if(deltaLower>0)
         {index=lowerIndex;while(index<boundCount-1&&bounds[index+1].value<=lowerValue)
         {bound=bounds[index];nextBound=bounds[index+1];nextProxyId=nextBound.proxyId;nextProxy=this.m_proxyPool[nextProxyId];nextBound.stabbingCount--;if(nextBound.IsUpper())
         {if(this.TestOverlap(oldValues,nextProxy))
         {this.m_pairManager.RemoveBufferedPair(proxyId,nextProxyId);}
         nextProxy.upperBounds[axis]--;bound.stabbingCount--;}
         else
         {nextProxy.lowerBounds[axis]--;bound.stabbingCount++;}
         proxy.lowerBounds[axis]++;bound.Swap(nextBound);index++;}}
         if(deltaUpper<0)
         {index=upperIndex;while(index>0&&upperValue<bounds[index-1].value)
         {bound=bounds[index];prevBound=bounds[index-1];prevProxyId=prevBound.proxyId;prevProxy=this.m_proxyPool[prevProxyId];prevBound.stabbingCount--;if(prevBound.IsLower()==true)
         {if(this.TestOverlap(oldValues,prevProxy))
         {this.m_pairManager.RemoveBufferedPair(proxyId,prevProxyId);}
         prevProxy.lowerBounds[axis]++;bound.stabbingCount--;}
         else
         {prevProxy.upperBounds[axis]++;bound.stabbingCount++;}
         proxy.upperBounds[axis]--;bound.Swap(prevBound);index--;}}}},Commit:function(){this.m_pairManager.Commit();},QueryAABB:function(aabb,userData,maxCount){var lowerValues=new Array();var upperValues=new Array();this.ComputeBounds(lowerValues,upperValues,aabb);var lowerIndex=0;var upperIndex=0;var lowerIndexOut=[lowerIndex];var upperIndexOut=[upperIndex];this.Query(lowerIndexOut,upperIndexOut,lowerValues[0],upperValues[0],this.m_bounds[0],2*this.m_proxyCount,0);this.Query(lowerIndexOut,upperIndexOut,lowerValues[1],upperValues[1],this.m_bounds[1],2*this.m_proxyCount,1);var count=0;for(var i=0;i<this.m_queryResultCount&&count<maxCount;++i,++count)
         {var proxy=this.m_proxyPool[this.m_queryResults[i]];userData[i]=proxy.userData;}
         this.m_queryResultCount=0;this.IncrementTimeStamp();return count;},Validate:function(){var pair;var proxy1;var proxy2;var overlap;for(var axis=0;axis<2;++axis)
         {var bounds=this.m_bounds[axis];var boundCount=2*this.m_proxyCount;var stabbingCount=0;for(var i=0;i<boundCount;++i)
         {var bound=bounds[i];if(bound.IsLower()==true)
         {stabbingCount++;}
         else
         {stabbingCount--;}}}},ComputeBounds:function(lowerValues,upperValues,aabb)
         {var minVertexX=aabb.minVertex.x;var minVertexY=aabb.minVertex.y;minVertexX=b2Math.b2Min(minVertexX,this.m_worldAABB.maxVertex.x);minVertexY=b2Math.b2Min(minVertexY,this.m_worldAABB.maxVertex.y);minVertexX=b2Math.b2Max(minVertexX,this.m_worldAABB.minVertex.x);minVertexY=b2Math.b2Max(minVertexY,this.m_worldAABB.minVertex.y);var maxVertexX=aabb.maxVertex.x;var maxVertexY=aabb.maxVertex.y;maxVertexX=b2Math.b2Min(maxVertexX,this.m_worldAABB.maxVertex.x);maxVertexY=b2Math.b2Min(maxVertexY,this.m_worldAABB.maxVertex.y);maxVertexX=b2Math.b2Max(maxVertexX,this.m_worldAABB.minVertex.x);maxVertexY=b2Math.b2Max(maxVertexY,this.m_worldAABB.minVertex.y);lowerValues[0]=(this.m_quantizationFactor.x*(minVertexX-this.m_worldAABB.minVertex.x))&(b2Settings.USHRT_MAX-1);upperValues[0]=((this.m_quantizationFactor.x*(maxVertexX-this.m_worldAABB.minVertex.x))&0x0000ffff)|1;lowerValues[1]=(this.m_quantizationFactor.y*(minVertexY-this.m_worldAABB.minVertex.y))&(b2Settings.USHRT_MAX-1);upperValues[1]=((this.m_quantizationFactor.y*(maxVertexY-this.m_worldAABB.minVertex.y))&0x0000ffff)|1;},TestOverlapValidate:function(p1,p2){for(var axis=0;axis<2;++axis)
         {var bounds=this.m_bounds[axis];if(bounds[p1.lowerBounds[axis]].value>bounds[p2.upperBounds[axis]].value)
         return false;if(bounds[p1.upperBounds[axis]].value<bounds[p2.lowerBounds[axis]].value)
         return false;}
         return true;},TestOverlap:function(b,p)
         {for(var axis=0;axis<2;++axis)
         {var bounds=this.m_bounds[axis];if(b.lowerValues[axis]>bounds[p.upperBounds[axis]].value)
         return false;if(b.upperValues[axis]<bounds[p.lowerBounds[axis]].value)
         return false;}
         return true;},Query:function(lowerQueryOut,upperQueryOut,lowerValue,upperValue,bounds,boundCount,axis){var lowerQuery=b2BroadPhase.BinarySearch(bounds,boundCount,lowerValue);var upperQuery=b2BroadPhase.BinarySearch(bounds,boundCount,upperValue);for(var j=lowerQuery;j<upperQuery;++j)
         {if(bounds[j].IsLower())
         {this.IncrementOverlapCount(bounds[j].proxyId);}}
         if(lowerQuery>0)
         {var i=lowerQuery-1;var s=bounds[i].stabbingCount;while(s)
         {if(bounds[i].IsLower())
         {var proxy=this.m_proxyPool[bounds[i].proxyId];if(lowerQuery<=proxy.upperBounds[axis])
         {this.IncrementOverlapCount(bounds[i].proxyId);--s;}}
         --i;}}
         lowerQueryOut[0]=lowerQuery;upperQueryOut[0]=upperQuery;},IncrementOverlapCount:function(proxyId){var proxy=this.m_proxyPool[proxyId];if(proxy.timeStamp<this.m_timeStamp)
         {proxy.timeStamp=this.m_timeStamp;proxy.overlapCount=1;}
         else
         {proxy.overlapCount=2;this.m_queryResults[this.m_queryResultCount]=proxyId;++this.m_queryResultCount;}},IncrementTimeStamp:function(){if(this.m_timeStamp==b2Settings.USHRT_MAX)
         {for(var i=0;i<b2Settings.b2_maxProxies;++i)
         {this.m_proxyPool[i].timeStamp=0;}
         this.m_timeStamp=1;}
         else
         {++this.m_timeStamp;}},m_pairManager:new b2PairManager(),m_proxyPool:new Array(b2Settings.b2_maxPairs),m_freeProxy:0,m_bounds:new Array(2*b2Settings.b2_maxProxies),m_queryResults:new Array(b2Settings.b2_maxProxies),m_queryResultCount:0,m_worldAABB:null,m_quantizationFactor:new b2Vec2(),m_proxyCount:0,m_timeStamp:0};b2BroadPhase.s_validate=false;b2BroadPhase.b2_invalid=b2Settings.USHRT_MAX;b2BroadPhase.b2_nullEdge=b2Settings.USHRT_MAX;b2BroadPhase.BinarySearch=function(bounds,count,value)
         {var low=0;var high=count-1;while(low<=high)
         {var mid=Math.floor((low+high)/2);if(bounds[mid].value>value)
         {high=mid-1;}
         else if(bounds[mid].value<value)
         {low=mid+1;}
         else
         {return(mid);}}
         return(low);};
         var b2Collision=Class.create();b2Collision.prototype={initialize:function(){}}
         b2Collision.b2_nullFeature=0x000000ff;b2Collision.ClipSegmentToLine=function(vOut,vIn,normal,offset)
         {var numOut=0;var vIn0=vIn[0].v;var vIn1=vIn[1].v;var distance0=b2Math.b2Dot(normal,vIn[0].v)-offset;var distance1=b2Math.b2Dot(normal,vIn[1].v)-offset;if(distance0<=0.0)vOut[numOut++]=vIn[0];if(distance1<=0.0)vOut[numOut++]=vIn[1];if(distance0*distance1<0.0)
         {var interp=distance0/(distance0-distance1);var tVec=vOut[numOut].v;tVec.x=vIn0.x+interp*(vIn1.x-vIn0.x);tVec.y=vIn0.y+interp*(vIn1.y-vIn0.y);if(distance0>0.0)
         {vOut[numOut].id=vIn[0].id;}
         else
         {vOut[numOut].id=vIn[1].id;}
         ++numOut;}
         return numOut;};b2Collision.EdgeSeparation=function(poly1,edge1,poly2)
         {var vert1s=poly1.m_vertices;var count2=poly2.m_vertexCount;var vert2s=poly2.m_vertices;var normalX=poly1.m_normals[edge1].x;var normalY=poly1.m_normals[edge1].y;var tX=normalX;var tMat=poly1.m_R;normalX=tMat.col1.x*tX+tMat.col2.x*normalY;normalY=tMat.col1.y*tX+tMat.col2.y*normalY;var normalLocal2X=normalX;var normalLocal2Y=normalY;tMat=poly2.m_R;tX=normalLocal2X*tMat.col1.x+normalLocal2Y*tMat.col1.y;normalLocal2Y=normalLocal2X*tMat.col2.x+normalLocal2Y*tMat.col2.y;normalLocal2X=tX;var vertexIndex2=0;var minDot=Number.MAX_VALUE;for(var i=0;i<count2;++i)
         {var tVec=vert2s[i];var dot=tVec.x*normalLocal2X+tVec.y*normalLocal2Y;if(dot<minDot)
         {minDot=dot;vertexIndex2=i;}}
         tMat=poly1.m_R;var v1X=poly1.m_position.x+(tMat.col1.x*vert1s[edge1].x+tMat.col2.x*vert1s[edge1].y)
         var v1Y=poly1.m_position.y+(tMat.col1.y*vert1s[edge1].x+tMat.col2.y*vert1s[edge1].y)
         tMat=poly2.m_R;var v2X=poly2.m_position.x+(tMat.col1.x*vert2s[vertexIndex2].x+tMat.col2.x*vert2s[vertexIndex2].y)
         var v2Y=poly2.m_position.y+(tMat.col1.y*vert2s[vertexIndex2].x+tMat.col2.y*vert2s[vertexIndex2].y)
         v2X-=v1X;v2Y-=v1Y;var separation=v2X*normalX+v2Y*normalY;return separation;};b2Collision.FindMaxSeparation=function(edgeIndex,poly1,poly2,conservative)
         {var count1=poly1.m_vertexCount;var dX=poly2.m_position.x-poly1.m_position.x;var dY=poly2.m_position.y-poly1.m_position.y;var dLocal1X=(dX*poly1.m_R.col1.x+dY*poly1.m_R.col1.y);var dLocal1Y=(dX*poly1.m_R.col2.x+dY*poly1.m_R.col2.y);var edge=0;var maxDot=-Number.MAX_VALUE;for(var i=0;i<count1;++i)
         {var dot=(poly1.m_normals[i].x*dLocal1X+poly1.m_normals[i].y*dLocal1Y);if(dot>maxDot)
         {maxDot=dot;edge=i;}}
         var s=b2Collision.EdgeSeparation(poly1,edge,poly2);if(s>0.0&&conservative==false)
         {return s;}
         var prevEdge=edge-1>=0?edge-1:count1-1;var sPrev=b2Collision.EdgeSeparation(poly1,prevEdge,poly2);if(sPrev>0.0&&conservative==false)
         {return sPrev;}
         var nextEdge=edge+1<count1?edge+1:0;var sNext=b2Collision.EdgeSeparation(poly1,nextEdge,poly2);if(sNext>0.0&&conservative==false)
         {return sNext;}
         var bestEdge=0;var bestSeparation;var increment=0;if(sPrev>s&&sPrev>sNext)
         {increment=-1;bestEdge=prevEdge;bestSeparation=sPrev;}
         else if(sNext>s)
         {increment=1;bestEdge=nextEdge;bestSeparation=sNext;}
         else
         {edgeIndex[0]=edge;return s;}
         while(true)
         {if(increment==-1)
         edge=bestEdge-1>=0?bestEdge-1:count1-1;else
         edge=bestEdge+1<count1?bestEdge+1:0;s=b2Collision.EdgeSeparation(poly1,edge,poly2);if(s>0.0&&conservative==false)
         {return s;}
         if(s>bestSeparation)
         {bestEdge=edge;bestSeparation=s;}
         else
         {break;}}
         edgeIndex[0]=bestEdge;return bestSeparation;};b2Collision.FindIncidentEdge=function(c,poly1,edge1,poly2)
         {var count1=poly1.m_vertexCount;var vert1s=poly1.m_vertices;var count2=poly2.m_vertexCount;var vert2s=poly2.m_vertices;var vertex11=edge1;var vertex12=edge1+1==count1?0:edge1+1;var tVec=vert1s[vertex12];var normal1Local1X=tVec.x;var normal1Local1Y=tVec.y;tVec=vert1s[vertex11];normal1Local1X-=tVec.x;normal1Local1Y-=tVec.y;var tX=normal1Local1X;normal1Local1X=normal1Local1Y;normal1Local1Y=-tX;var invLength=1.0/Math.sqrt(normal1Local1X*normal1Local1X+normal1Local1Y*normal1Local1Y);normal1Local1X*=invLength;normal1Local1Y*=invLength;var normal1X=normal1Local1X;var normal1Y=normal1Local1Y;tX=normal1X;var tMat=poly1.m_R;normal1X=tMat.col1.x*tX+tMat.col2.x*normal1Y;normal1Y=tMat.col1.y*tX+tMat.col2.y*normal1Y;var normal1Local2X=normal1X;var normal1Local2Y=normal1Y;tMat=poly2.m_R;tX=normal1Local2X*tMat.col1.x+normal1Local2Y*tMat.col1.y;normal1Local2Y=normal1Local2X*tMat.col2.x+normal1Local2Y*tMat.col2.y;normal1Local2X=tX;var vertex21=0;var vertex22=0;var minDot=Number.MAX_VALUE;for(var i=0;i<count2;++i)
         {var i1=i;var i2=i+1<count2?i+1:0;tVec=vert2s[i2];var normal2Local2X=tVec.x;var normal2Local2Y=tVec.y;tVec=vert2s[i1];normal2Local2X-=tVec.x;normal2Local2Y-=tVec.yX=normal2Local2X;normal2Local2X=normal2Local2Y;normal2Local2Y=-tX;invLength=1.0/Math.sqrt(normal2Local2X*normal2Local2X+normal2Local2Y*normal2Local2Y);normal2Local2X*=invLength;normal2Local2Y*=invLength;var dot=normal2Local2X*normal1Local2X+normal2Local2Y*normal1Local2Y;if(dot<minDot)
         {minDot=dot;vertex21=i1;vertex22=i2;}}
         var tClip;tClip=c[0];tVec=tClip.v;tVec.SetV(vert2s[vertex21]);tVec.MulM(poly2.m_R);tVec.Add(poly2.m_position);tClip.id.features.referenceFace=edge1;tClip.id.features.incidentEdge=vertex21;tClip.id.features.incidentVertex=vertex21;tClip=c[1];tVec=tClip.v;tVec.SetV(vert2s[vertex22]);tVec.MulM(poly2.m_R);tVec.Add(poly2.m_position);tClip.id.features.referenceFace=edge1;tClip.id.features.incidentEdge=vertex21;tClip.id.features.incidentVertex=vertex22;};b2Collision.b2CollidePolyTempVec=new b2Vec2();b2Collision.b2CollidePoly=function(manifold,polyA,polyB,conservative)
         {manifold.pointCount=0;var edgeA=0;var edgeAOut=[edgeA];var separationA=b2Collision.FindMaxSeparation(edgeAOut,polyA,polyB,conservative);edgeA=edgeAOut[0];if(separationA>0.0&&conservative==false)
         return;var edgeB=0;var edgeBOut=[edgeB];var separationB=b2Collision.FindMaxSeparation(edgeBOut,polyB,polyA,conservative);edgeB=edgeBOut[0];if(separationB>0.0&&conservative==false)
         return;var poly1;var poly2;var edge1=0;var flip=0;var k_relativeTol=0.98;var k_absoluteTol=0.001;if(separationB>k_relativeTol*separationA+k_absoluteTol)
         {poly1=polyB;poly2=polyA;edge1=edgeB;flip=1;}
         else
         {poly1=polyA;poly2=polyB;edge1=edgeA;flip=0;}
         var incidentEdge=[new ClipVertex(),new ClipVertex()];b2Collision.FindIncidentEdge(incidentEdge,poly1,edge1,poly2);var count1=poly1.m_vertexCount;var vert1s=poly1.m_vertices;var v11=vert1s[edge1];var v12=edge1+1<count1?vert1s[edge1+1]:vert1s[0];var dvX=v12.x-v11.x;var dvY=v12.y-v11.y;var sideNormalX=v12.x-v11.x;var sideNormalY=v12.y-v11.y;var tX=sideNormalX;var tMat=poly1.m_R;sideNormalX=tMat.col1.x*tX+tMat.col2.x*sideNormalY;sideNormalY=tMat.col1.y*tX+tMat.col2.y*sideNormalY;var invLength=1.0/Math.sqrt(sideNormalX*sideNormalX+sideNormalY*sideNormalY);sideNormalX*=invLength;sideNormalY*=invLength;var frontNormalX=sideNormalX;var frontNormalY=sideNormalY;tX=frontNormalX;frontNormalX=frontNormalY;frontNormalY=-tX;var v11X=v11.x;var v11Y=v11.yX=v11X;tMat=poly1.m_R;v11X=tMat.col1.x*tX+tMat.col2.x*v11Y;v11Y=tMat.col1.y*tX+tMat.col2.y*v11Y;v11X+=poly1.m_position.x;v11Y+=poly1.m_position.y;var v12X=v12.x;var v12Y=v12.yX=v12X;tMat=poly1.m_R;v12X=tMat.col1.x*tX+tMat.col2.x*v12Y;v12Y=tMat.col1.y*tX+tMat.col2.y*v12Y;v12X+=poly1.m_position.x;v12Y+=poly1.m_position.y;var frontOffset=frontNormalX*v11X+frontNormalY*v11Y;var sideOffset1=-(sideNormalX*v11X+sideNormalY*v11Y);var sideOffset2=sideNormalX*v12X+sideNormalY*v12Y;var clipPoints1=[new ClipVertex(),new ClipVertex()];var clipPoints2=[new ClipVertex(),new ClipVertex()];var np=0;b2Collision.b2CollidePolyTempVec.Set(-sideNormalX,-sideNormalY);np=b2Collision.ClipSegmentToLine(clipPoints1,incidentEdge,b2Collision.b2CollidePolyTempVec,sideOffset1);if(np<2)
         return;b2Collision.b2CollidePolyTempVec.Set(sideNormalX,sideNormalY);np=b2Collision.ClipSegmentToLine(clipPoints2,clipPoints1,b2Collision.b2CollidePolyTempVec,sideOffset2);if(np<2)
         return;if(flip){manifold.normal.Set(-frontNormalX,-frontNormalY);}
         else{manifold.normal.Set(frontNormalX,frontNormalY);}
         var pointCount=0;for(var i=0;i<b2Settings.b2_maxManifoldPoints;++i)
         {var tVec=clipPoints2[i].v;var separation=(frontNormalX*tVec.x+frontNormalY*tVec.y)-frontOffset;if(separation<=0.0||conservative==true)
         {var cp=manifold.points[pointCount];cp.separation=separation;cp.position.SetV(clipPoints2[i].v);cp.id.Set(clipPoints2[i].id);cp.id.features.flip=flip;++pointCount;}}
         manifold.pointCount=pointCount;};b2Collision.b2CollideCircle=function(manifold,circle1,circle2,conservative)
         {manifold.pointCount=0;var dX=circle2.m_position.x-circle1.m_position.x;var dY=circle2.m_position.y-circle1.m_position.y;var distSqr=dX*dX+dY*dY;var radiusSum=circle1.m_radius+circle2.m_radius;if(distSqr>radiusSum*radiusSum&&conservative==false)
         {return;}
         var separation;if(distSqr<Number.MIN_VALUE)
         {separation=-radiusSum;manifold.normal.Set(0.0,1.0);}
         else
         {var dist=Math.sqrt(distSqr);separation=dist-radiusSum;var a=1.0/dist;manifold.normal.x=a*dX;manifold.normal.y=a*dY;}
         manifold.pointCount=1;var tPoint=manifold.points[0];tPoint.id.set_key(0);tPoint.separation=separation;tPoint.position.x=circle2.m_position.x-(circle2.m_radius*manifold.normal.x);tPoint.position.y=circle2.m_position.y-(circle2.m_radius*manifold.normal.y);};b2Collision.b2CollidePolyAndCircle=function(manifold,poly,circle,conservative)
         {manifold.pointCount=0;var tPoint;var dX;var dY;var xLocalX=circle.m_position.x-poly.m_position.x;var xLocalY=circle.m_position.y-poly.m_position.y;var tMat=poly.m_R;var tX=xLocalX*tMat.col1.x+xLocalY*tMat.col1.y;xLocalY=xLocalX*tMat.col2.x+xLocalY*tMat.col2.y;xLocalX=tX;var dist;var normalIndex=0;var separation=-Number.MAX_VALUE;var radius=circle.m_radius;for(var i=0;i<poly.m_vertexCount;++i)
         {var s=poly.m_normals[i].x*(xLocalX-poly.m_vertices[i].x)+poly.m_normals[i].y*(xLocalY-poly.m_vertices[i].y);if(s>radius)
         {return;}
         if(s>separation)
         {separation=s;normalIndex=i;}}
         if(separation<Number.MIN_VALUE)
         {manifold.pointCount=1;var tVec=poly.m_normals[normalIndex];manifold.normal.x=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;manifold.normal.y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tPoint=manifold.points[0];tPoint.id.features.incidentEdge=normalIndex;tPoint.id.features.incidentVertex=b2Collision.b2_nullFeature;tPoint.id.features.referenceFace=b2Collision.b2_nullFeature;tPoint.id.features.flip=0;tPoint.position.x=circle.m_position.x-radius*manifold.normal.x;tPoint.position.y=circle.m_position.y-radius*manifold.normal.y;tPoint.separation=separation-radius;return;}
         var vertIndex1=normalIndex;var vertIndex2=vertIndex1+1<poly.m_vertexCount?vertIndex1+1:0;var eX=poly.m_vertices[vertIndex2].x-poly.m_vertices[vertIndex1].x;var eY=poly.m_vertices[vertIndex2].y-poly.m_vertices[vertIndex1].y;var length=Math.sqrt(eX*eX+eY*eY);eX/=length;eY/=length;if(length<Number.MIN_VALUE)
         {dX=xLocalX-poly.m_vertices[vertIndex1].x;dY=xLocalY-poly.m_vertices[vertIndex1].y;dist=Math.sqrt(dX*dX+dY*dY);dX/=dist;dY/=dist;if(dist>radius)
         {return;}
         manifold.pointCount=1;manifold.normal.Set(tMat.col1.x*dX+tMat.col2.x*dY,tMat.col1.y*dX+tMat.col2.y*dY);tPoint=manifold.points[0];tPoint.id.features.incidentEdge=b2Collision.b2_nullFeature;tPoint.id.features.incidentVertex=vertIndex1;tPoint.id.features.referenceFace=b2Collision.b2_nullFeature;tPoint.id.features.flip=0;tPoint.position.x=circle.m_position.x-radius*manifold.normal.x;tPoint.position.y=circle.m_position.y-radius*manifold.normal.y;tPoint.separation=dist-radius;return;}
         var u=(xLocalX-poly.m_vertices[vertIndex1].x)*eX+(xLocalY-poly.m_vertices[vertIndex1].y)*eY;tPoint=manifold.points[0];tPoint.id.features.incidentEdge=b2Collision.b2_nullFeature;tPoint.id.features.incidentVertex=b2Collision.b2_nullFeature;tPoint.id.features.referenceFace=b2Collision.b2_nullFeature;tPoint.id.features.flip=0;var pX,pY;if(u<=0.0)
         {pX=poly.m_vertices[vertIndex1].x;pY=poly.m_vertices[vertIndex1].y;tPoint.id.features.incidentVertex=vertIndex1;}
         else if(u>=length)
         {pX=poly.m_vertices[vertIndex2].x;pY=poly.m_vertices[vertIndex2].y;tPoint.id.features.incidentVertex=vertIndex2;}
         else
         {pX=eX*u+poly.m_vertices[vertIndex1].x;pY=eY*u+poly.m_vertices[vertIndex1].y;tPoint.id.features.incidentEdge=vertIndex1;}
         dX=xLocalX-pX;dY=xLocalY-pY;dist=Math.sqrt(dX*dX+dY*dY);dX/=dist;dY/=dist;if(dist>radius)
         {return;}
         manifold.pointCount=1;manifold.normal.Set(tMat.col1.x*dX+tMat.col2.x*dY,tMat.col1.y*dX+tMat.col2.y*dY);tPoint.position.x=circle.m_position.x-radius*manifold.normal.x;tPoint.position.y=circle.m_position.y-radius*manifold.normal.y;tPoint.separation=dist-radius;};b2Collision.b2TestOverlap=function(a,b)
         {var t1=b.minVertex;var t2=a.maxVertex;var d1X=t1.x-t2.x;var d1Y=t1.y-t2.y1=a.minVertex;t2=b.maxVertex;var d2X=t1.x-t2.x;var d2Y=t1.y-t2.y;if(d1X>0.0||d1Y>0.0)
         return false;if(d2X>0.0||d2Y>0.0)
         return false;return true;};
         var Features=Class.create();Features.prototype={set_referenceFace:function(value){this._referenceFace=value;this._m_id._key=(this._m_id._key&0xffffff00)|(this._referenceFace&0x000000ff)},get_referenceFace:function(){return this._referenceFace;},_referenceFace:0,set_incidentEdge:function(value){this._incidentEdge=value;this._m_id._key=(this._m_id._key&0xffff00ff)|((this._incidentEdge<<8)&0x0000ff00)},get_incidentEdge:function(){return this._incidentEdge;},_incidentEdge:0,set_incidentVertex:function(value){this._incidentVertex=value;this._m_id._key=(this._m_id._key&0xff00ffff)|((this._incidentVertex<<16)&0x00ff0000)},get_incidentVertex:function(){return this._incidentVertex;},_incidentVertex:0,set_flip:function(value){this._flip=value;this._m_id._key=(this._m_id._key&0x00ffffff)|((this._flip<<24)&0xff000000)},get_flip:function(){return this._flip;},_flip:0,_m_id:null,initialize:function(){}};
         var b2ContactID=Class.create();b2ContactID.prototype={initialize:function(){this.features=new Features();this.features._m_id=this;},Set:function(id){this.set_key(id._key);},Copy:function(){var id=new b2ContactID();id.set_key(this._key);return id;},get_key:function(){return this._key;},set_key:function(value){this._key=value;this.features._referenceFace=this._key&0x000000ff;this.features._incidentEdge=((this._key&0x0000ff00)>>8)&0x000000ff;this.features._incidentVertex=((this._key&0x00ff0000)>>16)&0x000000ff;this.features._flip=((this._key&0xff000000)>>24)&0x000000ff;},features:new Features(),_key:0};
         var b2ContactPoint=Class.create();b2ContactPoint.prototype={position:new b2Vec2(),separation:null,normalImpulse:null,tangentImpulse:null,id:new b2ContactID(),initialize:function(){this.position=new b2Vec2();this.id=new b2ContactID();}};var b2Distance=Class.create();b2Distance.prototype={initialize:function(){}};b2Distance.ProcessTwo=function(p1Out,p2Out,p1s,p2s,points)
         {var rX=-points[1].x;var rY=-points[1].y;var dX=points[0].x-points[1].x;var dY=points[0].y-points[1].y;var length=Math.sqrt(dX*dX+dY*dY);dX/=length;dY/=length;var lambda=rX*dX+rY*dY;if(lambda<=0.0||length<Number.MIN_VALUE)
         {p1Out.SetV(p1s[1]);p2Out.SetV(p2s[1]);p1s[0].SetV(p1s[1]);p2s[0].SetV(p2s[1]);points[0].SetV(points[1]);return 1;}
         lambda/=length;p1Out.x=p1s[1].x+lambda*(p1s[0].x-p1s[1].x);p1Out.y=p1s[1].y+lambda*(p1s[0].y-p1s[1].y);p2Out.x=p2s[1].x+lambda*(p2s[0].x-p2s[1].x);p2Out.y=p2s[1].y+lambda*(p2s[0].y-p2s[1].y);return 2;};b2Distance.ProcessThree=function(p1Out,p2Out,p1s,p2s,points)
         {var aX=points[0].x;var aY=points[0].y;var bX=points[1].x;var bY=points[1].y;var cX=points[2].x;var cY=points[2].y;var abX=bX-aX;var abY=bY-aY;var acX=cX-aX;var acY=cY-aY;var bcX=cX-bX;var bcY=cY-bY;var sn=-(aX*abX+aY*abY);var sd=(bX*abX+bY*abY);var tn=-(aX*acX+aY*acY);var td=(cX*acX+cY*acY);var un=-(bX*bcX+bY*bcY);var ud=(cX*bcX+cY*bcY);if(td<=0.0&&ud<=0.0)
         {p1Out.SetV(p1s[2]);p2Out.SetV(p2s[2]);p1s[0].SetV(p1s[2]);p2s[0].SetV(p2s[2]);points[0].SetV(points[2]);return 1;}
         var n=abX*acY-abY*acX;var vc=n*(aX*bY-aY*bX);var va=n*(bX*cY-bY*cX);if(va<=0.0&&un>=0.0&&ud>=0.0)
         {var lambda=un/(un+ud);p1Out.x=p1s[1].x+lambda*(p1s[2].x-p1s[1].x);p1Out.y=p1s[1].y+lambda*(p1s[2].y-p1s[1].y);p2Out.x=p2s[1].x+lambda*(p2s[2].x-p2s[1].x);p2Out.y=p2s[1].y+lambda*(p2s[2].y-p2s[1].y);p1s[0].SetV(p1s[2]);p2s[0].SetV(p2s[2]);points[0].SetV(points[2]);return 2;}
         var vb=n*(cX*aY-cY*aX);if(vb<=0.0&&tn>=0.0&&td>=0.0)
         {var lambda=tn/(tn+td);p1Out.x=p1s[0].x+lambda*(p1s[2].x-p1s[0].x);p1Out.y=p1s[0].y+lambda*(p1s[2].y-p1s[0].y);p2Out.x=p2s[0].x+lambda*(p2s[2].x-p2s[0].x);p2Out.y=p2s[0].y+lambda*(p2s[2].y-p2s[0].y);p1s[1].SetV(p1s[2]);p2s[1].SetV(p2s[2]);points[1].SetV(points[2]);return 2;}
         var denom=va+vb+vc;denom=1.0/denom;var u=va*denom;var v=vb*denom;var w=1.0-u-v;p1Out.x=u*p1s[0].x+v*p1s[1].x+w*p1s[2].x;p1Out.y=u*p1s[0].y+v*p1s[1].y+w*p1s[2].y;p2Out.x=u*p2s[0].x+v*p2s[1].x+w*p2s[2].x;p2Out.y=u*p2s[0].y+v*p2s[1].y+w*p2s[2].y;return 3;};b2Distance.InPoinsts=function(w,points,pointCount)
         {for(var i=0;i<pointCount;++i)
         {if(w.x==points[i].x&&w.y==points[i].y)
         {return true;}}
         return false;};b2Distance.Distance=function(p1Out,p2Out,shape1,shape2)
         {var p1s=new Array(3);var p2s=new Array(3);var points=new Array(3);var pointCount=0;p1Out.SetV(shape1.m_position);p2Out.SetV(shape2.m_position);var vSqr=0.0;var maxIterations=20;for(var iter=0;iter<maxIterations;++iter)
         {var vX=p2Out.x-p1Out.x;var vY=p2Out.y-p1Out.y;var w1=shape1.Support(vX,vY);var w2=shape2.Support(-vX,-vY);vSqr=(vX*vX+vY*vY);var wX=w2.x-w1.x;var wY=w2.y-w1.y;var vw=(vX*wX+vY*wY);if(vSqr-b2Dot(vX*wX+vY*wY)<=0.01*vSqr)
         {if(pointCount==0)
         {p1Out.SetV(w1);p2Out.SetV(w2);}
         b2Distance.g_GJK_Iterations=iter;return Math.sqrt(vSqr);}
         switch(pointCount)
         {case 0:p1s[0].SetV(w1);p2s[0].SetV(w2);points[0]=w;p1Out.SetV(p1s[0]);p2Out.SetV(p2s[0]);++pointCount;break;case 1:p1s[1].SetV(w1);p2s[1].SetV(w2);points[1].x=wX;points[1].y=wY;pointCount=b2Distance.ProcessTwo(p1Out,p2Out,p1s,p2s,points);break;case 2:p1s[2].SetV(w1);p2s[2].SetV(w2);points[2].x=wX;points[2].y=wY;pointCount=b2Distance.ProcessThree(p1Out,p2Out,p1s,p2s,points);break;}
         if(pointCount==3)
         {b2Distance.g_GJK_Iterations=iter;return 0.0;}
         var maxSqr=-Number.MAX_VALUE;for(var i=0;i<pointCount;++i)
         {maxSqr=b2Math.b2Max(maxSqr,(points[i].x*points[i].x+points[i].y*points[i].y));}
         if(pointCount==3||vSqr<=100.0*Number.MIN_VALUE*maxSqr)
         {b2Distance.g_GJK_Iterations=iter;return Math.sqrt(vSqr);}}
         b2Distance.g_GJK_Iterations=maxIterations;return Math.sqrt(vSqr);};b2Distance.g_GJK_Iterations=0;
         var b2Manifold=Class.create();b2Manifold.prototype={initialize:function(){this.points=new Array(b2Settings.b2_maxManifoldPoints);for(var i=0;i<b2Settings.b2_maxManifoldPoints;i++){this.points[i]=new b2ContactPoint();}
         this.normal=new b2Vec2();},points:null,normal:null,pointCount:0};
         var b2OBB=Class.create();b2OBB.prototype={R:new b2Mat22(),center:new b2Vec2(),extents:new b2Vec2(),initialize:function(){this.R=new b2Mat22();this.center=new b2Vec2();this.extents=new b2Vec2();}};
         var b2Proxy=Class.create();b2Proxy.prototype={GetNext:function(){return this.lowerBounds[0];},SetNext:function(next){this.lowerBounds[0]=next;},IsValid:function(){return this.overlapCount!=b2BroadPhase.b2_invalid;},lowerBounds:[(0),(0)],upperBounds:[(0),(0)],overlapCount:0,timeStamp:0,userData:null,initialize:function(){this.lowerBounds=[(0),(0)];this.upperBounds=[(0),(0)];}}

         var ClipVertex=Class.create();ClipVertex.prototype={v:new b2Vec2(),id:new b2ContactID(),initialize:function(){this.v=new b2Vec2();this.id=new b2ContactID();}};var b2Shape=Class.create();b2Shape.prototype={TestPoint:function(p){return false},GetUserData:function(){return this.m_userData;},GetType:function(){return this.m_type;},GetBody:function(){return this.m_body;},GetPosition:function(){return this.m_position;},GetRotationMatrix:function(){return this.m_R;},ResetProxy:function(broadPhase){},GetNext:function(){return this.m_next;},initialize:function(def,body){this.m_R=new b2Mat22();this.m_position=new b2Vec2();this.m_userData=def.userData;this.m_friction=def.friction;this.m_restitution=def.restitution;this.m_body=body;this.m_proxyId=b2Pair.b2_nullProxy;this.m_maxRadius=0.0;this.m_categoryBits=def.categoryBits;this.m_maskBits=def.maskBits;this.m_groupIndex=def.groupIndex;},DestroyProxy:function()
         {if(this.m_proxyId!=b2Pair.b2_nullProxy)
         {this.m_body.m_world.m_broadPhase.DestroyProxy(this.m_proxyId);this.m_proxyId=b2Pair.b2_nullProxy;}},Synchronize:function(position1,R1,position2,R2){},QuickSync:function(position,R){},Support:function(dX,dY,out){},GetMaxRadius:function(){return this.m_maxRadius;},m_next:null,m_R:new b2Mat22(),m_position:new b2Vec2(),m_type:0,m_userData:null,m_body:null,m_friction:null,m_restitution:null,m_maxRadius:null,m_proxyId:0,m_categoryBits:0,m_maskBits:0,m_groupIndex:0};b2Shape.Create=function(def,body,center){switch(def.type)
         {case b2Shape.e_circleShape:{return new b2CircleShape(def,body,center);}
         case b2Shape.e_boxShape:case b2Shape.e_polyShape:{return new b2PolyShape(def,body,center);}}
         return null;};b2Shape.Destroy=function(shape)
         {if(shape.m_proxyId!=b2Pair.b2_nullProxy)
         shape.m_body.m_world.m_broadPhase.DestroyProxy(shape.m_proxyId);};b2Shape.e_unknownShape=-1;b2Shape.e_circleShape=0;b2Shape.e_boxShape=1;b2Shape.e_polyShape=2;b2Shape.e_meshShape=3;b2Shape.e_shapeTypeCount=4;b2Shape.PolyMass=function(massData,vs,count,rho)
         {var center=new b2Vec2();center.SetZero();var area=0.0;var I=0.0;var pRef=new b2Vec2(0.0,0.0);var inv3=1.0/3.0;for(var i=0;i<count;++i)
         {var p1=pRef;var p2=vs[i];var p3=i+1<count?vs[i+1]:vs[0];var e1=b2Math.SubtractVV(p2,p1);var e2=b2Math.SubtractVV(p3,p1);var D=b2Math.b2CrossVV(e1,e2);var triangleArea=0.5*D;area+=triangleArea;var tVec=new b2Vec2();tVec.SetV(p1);tVec.Add(p2);tVec.Add(p3);tVec.Multiply(inv3*triangleArea);center.Add(tVec);var px=p1.x;var py=p1.y;var ex1=e1.x;var ey1=e1.y;var ex2=e2.x;var ey2=e2.y;var intx2=inv3*(0.25*(ex1*ex1+ex2*ex1+ex2*ex2)+(px*ex1+px*ex2))+0.5*px*px;var inty2=inv3*(0.25*(ey1*ey1+ey2*ey1+ey2*ey2)+(py*ey1+py*ey2))+0.5*py*py;I+=D*(intx2+inty2);}
         massData.mass=rho*area;center.Multiply(1.0/area);massData.center=center;I=rho*(I-area*b2Math.b2Dot(center,center));massData.I=I;};b2Shape.PolyCentroid=function(vs,count,out)
         {var cX=0.0;var cY=0.0;var area=0.0;var pRefX=0.0;var pRefY=0.0;var inv3=1.0/3.0;for(var i=0;i<count;++i)
         {var p1X=pRefX;var p1Y=pRefY;var p2X=vs[i].x;var p2Y=vs[i].y;var p3X=i+1<count?vs[i+1].x:vs[0].x;var p3Y=i+1<count?vs[i+1].y:vs[0].y;var e1X=p2X-p1X;var e1Y=p2Y-p1Y;var e2X=p3X-p1X;var e2Y=p3Y-p1Y;var D=(e1X*e2Y-e1Y*e2X);var triangleArea=0.5*D;area+=triangleArea;cX+=triangleArea*inv3*(p1X+p2X+p3X);cY+=triangleArea*inv3*(p1Y+p2Y+p3Y);}
         cX*=1.0/area;cY*=1.0/area;out.Set(cX,cY);};
         var b2ShapeDef=Class.create();b2ShapeDef.prototype={initialize:function()
         {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;},ComputeMass:function(massData)
         {massData.center=new b2Vec2(0.0,0.0)
         if(this.density==0.0)
         {massData.mass=0.0;massData.center.Set(0.0,0.0);massData.I=0.0;};switch(this.type)
         {case b2Shape.e_circleShape:{var circle=this;massData.mass=this.density*b2Settings.b2_pi*circle.radius*circle.radius;massData.center.Set(0.0,0.0);massData.I=0.5*(massData.mass)*circle.radius*circle.radius;}
         break;case b2Shape.e_boxShape:{var box=this;massData.mass=4.0*this.density*box.extents.x*box.extents.y;massData.center.Set(0.0,0.0);massData.I=massData.mass/3.0*b2Math.b2Dot(box.extents,box.extents);}
         break;case b2Shape.e_polyShape:{var poly=this;b2Shape.PolyMass(massData,poly.vertices,poly.vertexCount,this.density);}
         break;default:massData.mass=0.0;massData.center.Set(0.0,0.0);massData.I=0.0;break;}},type:0,userData:null,localPosition:null,localRotation:null,friction:null,restitution:null,density:null,categoryBits:0,maskBits:0,groupIndex:0};
         var b2BoxDef=Class.create();Object.extend(b2BoxDef.prototype,b2ShapeDef.prototype);Object.extend(b2BoxDef.prototype,{initialize:function()
         {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;this.type=b2Shape.e_boxShape;this.extents=new b2Vec2(1.0,1.0);},extents:null});
         var b2CircleDef=Class.create();Object.extend(b2CircleDef.prototype,b2ShapeDef.prototype);Object.extend(b2CircleDef.prototype,{initialize:function()
         {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;this.type=b2Shape.e_circleShape;this.radius=1.0;},radius:null});var b2CircleShape=Class.create();Object.extend(b2CircleShape.prototype,b2Shape.prototype);Object.extend(b2CircleShape.prototype,{TestPoint:function(p){var d=new b2Vec2();d.SetV(p);d.Subtract(this.m_position);return b2Math.b2Dot(d,d)<=this.m_radius*this.m_radius;},initialize:function(def,body,localCenter){this.m_R=new b2Mat22();this.m_position=new b2Vec2();this.m_userData=def.userData;this.m_friction=def.friction;this.m_restitution=def.restitution;this.m_body=body;this.m_proxyId=b2Pair.b2_nullProxy;this.m_maxRadius=0.0;this.m_categoryBits=def.categoryBits;this.m_maskBits=def.maskBits;this.m_groupIndex=def.groupIndex;this.m_localPosition=new b2Vec2();var circle=def;this.m_localPosition.Set(def.localPosition.x-localCenter.x,def.localPosition.y-localCenter.y);this.m_type=b2Shape.e_circleShape;this.m_radius=circle.radius;this.m_R.SetM(this.m_body.m_R);var rX=this.m_R.col1.x*this.m_localPosition.x+this.m_R.col2.x*this.m_localPosition.y;var rY=this.m_R.col1.y*this.m_localPosition.x+this.m_R.col2.y*this.m_localPosition.y;this.m_position.x=this.m_body.m_position.x+rX;this.m_position.y=this.m_body.m_position.y+rY;this.m_maxRadius=Math.sqrt(rX*rX+rY*rY)+this.m_radius;var aabb=new b2AABB();aabb.minVertex.Set(this.m_position.x-this.m_radius,this.m_position.y-this.m_radius);aabb.maxVertex.Set(this.m_position.x+this.m_radius,this.m_position.y+this.m_radius);var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(aabb))
         {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}
         else
         {this.m_proxyId=b2Pair.b2_nullProxy;}
         if(this.m_proxyId==b2Pair.b2_nullProxy)
         {this.m_body.Freeze();}},Synchronize:function(position1,R1,position2,R2){this.m_R.SetM(R2);this.m_position.x=(R2.col1.x*this.m_localPosition.x+R2.col2.x*this.m_localPosition.y)+position2.x;this.m_position.y=(R2.col1.y*this.m_localPosition.x+R2.col2.y*this.m_localPosition.y)+position2.y;if(this.m_proxyId==b2Pair.b2_nullProxy)
         {return;}
         var p1X=position1.x+(R1.col1.x*this.m_localPosition.x+R1.col2.x*this.m_localPosition.y);var p1Y=position1.y+(R1.col1.y*this.m_localPosition.x+R1.col2.y*this.m_localPosition.y);var lowerX=Math.min(p1X,this.m_position.x);var lowerY=Math.min(p1Y,this.m_position.y);var upperX=Math.max(p1X,this.m_position.x);var upperY=Math.max(p1Y,this.m_position.y);var aabb=new b2AABB();aabb.minVertex.Set(lowerX-this.m_radius,lowerY-this.m_radius);aabb.maxVertex.Set(upperX+this.m_radius,upperY+this.m_radius);var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(aabb))
         {broadPhase.MoveProxy(this.m_proxyId,aabb);}
         else
         {this.m_body.Freeze();}},QuickSync:function(position,R){this.m_R.SetM(R);this.m_position.x=(R.col1.x*this.m_localPosition.x+R.col2.x*this.m_localPosition.y)+position.x;this.m_position.y=(R.col1.y*this.m_localPosition.x+R.col2.y*this.m_localPosition.y)+position.y;},ResetProxy:function(broadPhase)
         {if(this.m_proxyId==b2Pair.b2_nullProxy)
         {return;}
         var proxy=broadPhase.GetProxy(this.m_proxyId);broadPhase.DestroyProxy(this.m_proxyId);proxy=null;var aabb=new b2AABB();aabb.minVertex.Set(this.m_position.x-this.m_radius,this.m_position.y-this.m_radius);aabb.maxVertex.Set(this.m_position.x+this.m_radius,this.m_position.y+this.m_radius);if(broadPhase.InRange(aabb))
         {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}
         else
         {this.m_proxyId=b2Pair.b2_nullProxy;}
         if(this.m_proxyId==b2Pair.b2_nullProxy)
         {this.m_body.Freeze();}},Support:function(dX,dY,out)
         {var len=Math.sqrt(dX*dX+dY*dY);dX/=len;dY/=len;out.Set(this.m_position.x+this.m_radius*dX,this.m_position.y+this.m_radius*dY);},m_localPosition:new b2Vec2(),m_radius:null});
         var b2MassData=Class.create();b2MassData.prototype={mass:0.0,center:new b2Vec2(0,0),I:0.0,initialize:function(){this.center=new b2Vec2(0,0);}}

         var b2PolyDef=Class.create();Object.extend(b2PolyDef.prototype,b2ShapeDef.prototype);Object.extend(b2PolyDef.prototype,{initialize:function()
         {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;this.vertices=new Array(b2Settings.b2_maxPolyVertices);this.type=b2Shape.e_polyShape;this.vertexCount=0;for(var i=0;i<b2Settings.b2_maxPolyVertices;i++){this.vertices[i]=new b2Vec2();}},vertices:new Array(b2Settings.b2_maxPolyVertices),vertexCount:0});var b2PolyShape=Class.create();Object.extend(b2PolyShape.prototype,b2Shape.prototype);Object.extend(b2PolyShape.prototype,{TestPoint:function(p){var pLocal=new b2Vec2();pLocal.SetV(p);pLocal.Subtract(this.m_position);pLocal.MulTM(this.m_R);for(var i=0;i<this.m_vertexCount;++i)
         {var tVec=new b2Vec2();tVec.SetV(pLocal);tVec.Subtract(this.m_vertices[i]);var dot=b2Math.b2Dot(this.m_normals[i],tVec);if(dot>0.0)
         {return false;}}
         return true;},initialize:function(def,body,newOrigin){this.m_R=new b2Mat22();this.m_position=new b2Vec2();this.m_userData=def.userData;this.m_friction=def.friction;this.m_restitution=def.restitution;this.m_body=body;this.m_proxyId=b2Pair.b2_nullProxy;this.m_maxRadius=0.0;this.m_categoryBits=def.categoryBits;this.m_maskBits=def.maskBits;this.m_groupIndex=def.groupIndex;this.syncAABB=new b2AABB();this.syncMat=new b2Mat22();this.m_localCentroid=new b2Vec2();this.m_localOBB=new b2OBB();var i=0;var hX;var hY;var tVec;var aabb=new b2AABB();this.m_vertices=new Array(b2Settings.b2_maxPolyVertices);this.m_coreVertices=new Array(b2Settings.b2_maxPolyVertices);this.m_normals=new Array(b2Settings.b2_maxPolyVertices);this.m_type=b2Shape.e_polyShape;var localR=new b2Mat22(def.localRotation);if(def.type==b2Shape.e_boxShape)
         {this.m_localCentroid.x=def.localPosition.x-newOrigin.x;this.m_localCentroid.y=def.localPosition.y-newOrigin.y;var box=def;this.m_vertexCount=4;hX=box.extents.x;hY=box.extents.y;var hcX=Math.max(0.0,hX-2.0*b2Settings.b2_linearSlop);var hcY=Math.max(0.0,hY-2.0*b2Settings.b2_linearSlop);tVec=this.m_vertices[0]=new b2Vec2();tVec.x=localR.col1.x*hX+localR.col2.x*hY;tVec.y=localR.col1.y*hX+localR.col2.y*hY;tVec=this.m_vertices[1]=new b2Vec2();tVec.x=localR.col1.x*-hX+localR.col2.x*hY;tVec.y=localR.col1.y*-hX+localR.col2.y*hY;tVec=this.m_vertices[2]=new b2Vec2();tVec.x=localR.col1.x*-hX+localR.col2.x*-hY;tVec.y=localR.col1.y*-hX+localR.col2.y*-hY;tVec=this.m_vertices[3]=new b2Vec2();tVec.x=localR.col1.x*hX+localR.col2.x*-hY;tVec.y=localR.col1.y*hX+localR.col2.y*-hY;tVec=this.m_coreVertices[0]=new b2Vec2();tVec.x=localR.col1.x*hcX+localR.col2.x*hcY;tVec.y=localR.col1.y*hcX+localR.col2.y*hcY;tVec=this.m_coreVertices[1]=new b2Vec2();tVec.x=localR.col1.x*-hcX+localR.col2.x*hcY;tVec.y=localR.col1.y*-hcX+localR.col2.y*hcY;tVec=this.m_coreVertices[2]=new b2Vec2();tVec.x=localR.col1.x*-hcX+localR.col2.x*-hcY;tVec.y=localR.col1.y*-hcX+localR.col2.y*-hcY;tVec=this.m_coreVertices[3]=new b2Vec2();tVec.x=localR.col1.x*hcX+localR.col2.x*-hcY;tVec.y=localR.col1.y*hcX+localR.col2.y*-hcY;}
         else
         {var poly=def;this.m_vertexCount=poly.vertexCount;b2Shape.PolyCentroid(poly.vertices,poly.vertexCount,b2PolyShape.tempVec);var centroidX=b2PolyShape.tempVec.x;var centroidY=b2PolyShape.tempVec.y;this.m_localCentroid.x=def.localPosition.x+(localR.col1.x*centroidX+localR.col2.x*centroidY)-newOrigin.x;this.m_localCentroid.y=def.localPosition.y+(localR.col1.y*centroidX+localR.col2.y*centroidY)-newOrigin.y;for(i=0;i<this.m_vertexCount;++i)
         {this.m_vertices[i]=new b2Vec2();this.m_coreVertices[i]=new b2Vec2();hX=poly.vertices[i].x-centroidX;hY=poly.vertices[i].y-centroidY;this.m_vertices[i].x=localR.col1.x*hX+localR.col2.x*hY;this.m_vertices[i].y=localR.col1.y*hX+localR.col2.y*hY;var uX=this.m_vertices[i].x;var uY=this.m_vertices[i].y;var length=Math.sqrt(uX*uX+uY*uY);if(length>Number.MIN_VALUE)
         {uX*=1.0/length;uY*=1.0/length;}
         this.m_coreVertices[i].x=this.m_vertices[i].x-2.0*b2Settings.b2_linearSlop*uX;this.m_coreVertices[i].y=this.m_vertices[i].y-2.0*b2Settings.b2_linearSlop*uY;}}
         var minVertexX=Number.MAX_VALUE;var minVertexY=Number.MAX_VALUE;var maxVertexX=-Number.MAX_VALUE;var maxVertexY=-Number.MAX_VALUE;this.m_maxRadius=0.0;for(i=0;i<this.m_vertexCount;++i)
         {var v=this.m_vertices[i];minVertexX=Math.min(minVertexX,v.x);minVertexY=Math.min(minVertexY,v.y);maxVertexX=Math.max(maxVertexX,v.x);maxVertexY=Math.max(maxVertexY,v.y);this.m_maxRadius=Math.max(this.m_maxRadius,v.Length());}
         this.m_localOBB.R.SetIdentity();this.m_localOBB.center.Set((minVertexX+maxVertexX)*0.5,(minVertexY+maxVertexY)*0.5);this.m_localOBB.extents.Set((maxVertexX-minVertexX)*0.5,(maxVertexY-minVertexY)*0.5);var i1=0;var i2=0;for(i=0;i<this.m_vertexCount;++i)
         {this.m_normals[i]=new b2Vec2();i1=i;i2=i+1<this.m_vertexCount?i+1:0;this.m_normals[i].x=this.m_vertices[i2].y-this.m_vertices[i1].y;this.m_normals[i].y=-(this.m_vertices[i2].x-this.m_vertices[i1].x);this.m_normals[i].Normalize();}
         for(i=0;i<this.m_vertexCount;++i)
         {i1=i;i2=i+1<this.m_vertexCount?i+1:0;}
         this.m_R.SetM(this.m_body.m_R);this.m_position.x=this.m_body.m_position.x+(this.m_R.col1.x*this.m_localCentroid.x+this.m_R.col2.x*this.m_localCentroid.y);this.m_position.y=this.m_body.m_position.y+(this.m_R.col1.y*this.m_localCentroid.x+this.m_R.col2.y*this.m_localCentroid.y);b2PolyShape.tAbsR.col1.x=this.m_R.col1.x*this.m_localOBB.R.col1.x+this.m_R.col2.x*this.m_localOBB.R.col1.y;b2PolyShape.tAbsR.col1.y=this.m_R.col1.y*this.m_localOBB.R.col1.x+this.m_R.col2.y*this.m_localOBB.R.col1.y;b2PolyShape.tAbsR.col2.x=this.m_R.col1.x*this.m_localOBB.R.col2.x+this.m_R.col2.x*this.m_localOBB.R.col2.y;b2PolyShape.tAbsR.col2.y=this.m_R.col1.y*this.m_localOBB.R.col2.x+this.m_R.col2.y*this.m_localOBB.R.col2.y;b2PolyShape.tAbsR.Abs()
         hX=b2PolyShape.tAbsR.col1.x*this.m_localOBB.extents.x+b2PolyShape.tAbsR.col2.x*this.m_localOBB.extents.y;hY=b2PolyShape.tAbsR.col1.y*this.m_localOBB.extents.x+b2PolyShape.tAbsR.col2.y*this.m_localOBB.extents.y;var positionX=this.m_position.x+(this.m_R.col1.x*this.m_localOBB.center.x+this.m_R.col2.x*this.m_localOBB.center.y);var positionY=this.m_position.y+(this.m_R.col1.y*this.m_localOBB.center.x+this.m_R.col2.y*this.m_localOBB.center.y);aabb.minVertex.x=positionX-hX;aabb.minVertex.y=positionY-hY;aabb.maxVertex.x=positionX+hX;aabb.maxVertex.y=positionY+hY;var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(aabb))
         {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}
         else
         {this.m_proxyId=b2Pair.b2_nullProxy;}
         if(this.m_proxyId==b2Pair.b2_nullProxy)
         {this.m_body.Freeze();}},syncAABB:new b2AABB(),syncMat:new b2Mat22(),Synchronize:function(position1,R1,position2,R2){this.m_R.SetM(R2);this.m_position.x=this.m_body.m_position.x+(R2.col1.x*this.m_localCentroid.x+R2.col2.x*this.m_localCentroid.y);this.m_position.y=this.m_body.m_position.y+(R2.col1.y*this.m_localCentroid.x+R2.col2.y*this.m_localCentroid.y);if(this.m_proxyId==b2Pair.b2_nullProxy)
         {return;}
         var hX;var hY;var v1=R1.col1;var v2=R1.col2;var v3=this.m_localOBB.R.col1;var v4=this.m_localOBB.R.col2;this.syncMat.col1.x=v1.x*v3.x+v2.x*v3.y;this.syncMat.col1.y=v1.y*v3.x+v2.y*v3.y;this.syncMat.col2.x=v1.x*v4.x+v2.x*v4.y;this.syncMat.col2.y=v1.y*v4.x+v2.y*v4.y;this.syncMat.Abs();hX=this.m_localCentroid.x+this.m_localOBB.center.x;hY=this.m_localCentroid.y+this.m_localOBB.center.y;var centerX=position1.x+(R1.col1.x*hX+R1.col2.x*hY);var centerY=position1.y+(R1.col1.y*hX+R1.col2.y*hY);hX=this.syncMat.col1.x*this.m_localOBB.extents.x+this.syncMat.col2.x*this.m_localOBB.extents.y;hY=this.syncMat.col1.y*this.m_localOBB.extents.x+this.syncMat.col2.y*this.m_localOBB.extents.y;this.syncAABB.minVertex.x=centerX-hX;this.syncAABB.minVertex.y=centerY-hY;this.syncAABB.maxVertex.x=centerX+hX;this.syncAABB.maxVertex.y=centerY+hY;v1=R2.col1;v2=R2.col2;v3=this.m_localOBB.R.col1;v4=this.m_localOBB.R.col2;this.syncMat.col1.x=v1.x*v3.x+v2.x*v3.y;this.syncMat.col1.y=v1.y*v3.x+v2.y*v3.y;this.syncMat.col2.x=v1.x*v4.x+v2.x*v4.y;this.syncMat.col2.y=v1.y*v4.x+v2.y*v4.y;this.syncMat.Abs();hX=this.m_localCentroid.x+this.m_localOBB.center.x;hY=this.m_localCentroid.y+this.m_localOBB.center.y;centerX=position2.x+(R2.col1.x*hX+R2.col2.x*hY);centerY=position2.y+(R2.col1.y*hX+R2.col2.y*hY);hX=this.syncMat.col1.x*this.m_localOBB.extents.x+this.syncMat.col2.x*this.m_localOBB.extents.y;hY=this.syncMat.col1.y*this.m_localOBB.extents.x+this.syncMat.col2.y*this.m_localOBB.extents.y;this.syncAABB.minVertex.x=Math.min(this.syncAABB.minVertex.x,centerX-hX);this.syncAABB.minVertex.y=Math.min(this.syncAABB.minVertex.y,centerY-hY);this.syncAABB.maxVertex.x=Math.max(this.syncAABB.maxVertex.x,centerX+hX);this.syncAABB.maxVertex.y=Math.max(this.syncAABB.maxVertex.y,centerY+hY);var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(this.syncAABB))
         {broadPhase.MoveProxy(this.m_proxyId,this.syncAABB);}
         else
         {this.m_body.Freeze();}},QuickSync:function(position,R){this.m_R.SetM(R);this.m_position.x=position.x+(R.col1.x*this.m_localCentroid.x+R.col2.x*this.m_localCentroid.y);this.m_position.y=position.y+(R.col1.y*this.m_localCentroid.x+R.col2.y*this.m_localCentroid.y);},ResetProxy:function(broadPhase){if(this.m_proxyId==b2Pair.b2_nullProxy)
         {return;}
         var proxy=broadPhase.GetProxy(this.m_proxyId);broadPhase.DestroyProxy(this.m_proxyId);proxy=null;var R=b2Math.b2MulMM(this.m_R,this.m_localOBB.R);var absR=b2Math.b2AbsM(R);var h=b2Math.b2MulMV(absR,this.m_localOBB.extents);var position=b2Math.b2MulMV(this.m_R,this.m_localOBB.center);position.Add(this.m_position);var aabb=new b2AABB();aabb.minVertex.SetV(position);aabb.minVertex.Subtract(h);aabb.maxVertex.SetV(position);aabb.maxVertex.Add(h);if(broadPhase.InRange(aabb))
         {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}
         else
         {this.m_proxyId=b2Pair.b2_nullProxy;}
         if(this.m_proxyId==b2Pair.b2_nullProxy)
         {this.m_body.Freeze();}},Support:function(dX,dY,out)
         {var dLocalX=(dX*this.m_R.col1.x+dY*this.m_R.col1.y);var dLocalY=(dX*this.m_R.col2.x+dY*this.m_R.col2.y);var bestIndex=0;var bestValue=(this.m_coreVertices[0].x*dLocalX+this.m_coreVertices[0].y*dLocalY);for(var i=1;i<this.m_vertexCount;++i)
         {var value=(this.m_coreVertices[i].x*dLocalX+this.m_coreVertices[i].y*dLocalY);if(value>bestValue)
         {bestIndex=i;bestValue=value;}}
         out.Set(this.m_position.x+(this.m_R.col1.x*this.m_coreVertices[bestIndex].x+this.m_R.col2.x*this.m_coreVertices[bestIndex].y),this.m_position.y+(this.m_R.col1.y*this.m_coreVertices[bestIndex].x+this.m_R.col2.y*this.m_coreVertices[bestIndex].y));},m_localCentroid:new b2Vec2(),m_localOBB:new b2OBB(),m_vertices:null,m_coreVertices:null,m_vertexCount:0,m_normals:null});b2PolyShape.tempVec=new b2Vec2();b2PolyShape.tAbsR=new b2Mat22();
         var b2Body=Class.create();b2Body.prototype={SetOriginPosition:function(position,rotation){if(this.IsFrozen())
         {return;}
         this.m_rotation=rotation;this.m_R.Set(this.m_rotation);this.m_position=b2Math.AddVV(position,b2Math.b2MulMV(this.m_R,this.m_center));this.m_position0.SetV(this.m_position);this.m_rotation0=this.m_rotation;for(var s=this.m_shapeList;s!=null;s=s.m_next)
         {s.Synchronize(this.m_position,this.m_R,this.m_position,this.m_R);}
         this.m_world.m_broadPhase.Commit();},GetOriginPosition:function(){return b2Math.SubtractVV(this.m_position,b2Math.b2MulMV(this.m_R,this.m_center));},SetCenterPosition:function(position,rotation){if(this.IsFrozen())
         {return;}
         this.m_rotation=rotation;this.m_R.Set(this.m_rotation);this.m_position.SetV(position);this.m_position0.SetV(this.m_position);this.m_rotation0=this.m_rotation;for(var s=this.m_shapeList;s!=null;s=s.m_next)
         {s.Synchronize(this.m_position,this.m_R,this.m_position,this.m_R);}
         this.m_world.m_broadPhase.Commit();},GetCenterPosition:function(){return this.m_position;},GetRotation:function(){return this.m_rotation;},GetRotationMatrix:function(){return this.m_R;},SetLinearVelocity:function(v){this.m_linearVelocity.SetV(v);},GetLinearVelocity:function(){return this.m_linearVelocity;},SetAngularVelocity:function(w){this.m_angularVelocity=w;},GetAngularVelocity:function(){return this.m_angularVelocity;},ApplyForce:function(force,point)
         {if(this.IsSleeping()==false)
         {this.m_force.Add(force);this.m_torque+=b2Math.b2CrossVV(b2Math.SubtractVV(point,this.m_position),force);}},ApplyTorque:function(torque)
         {if(this.IsSleeping()==false)
         {this.m_torque+=torque;}},ApplyImpulse:function(impulse,point)
         {if(this.IsSleeping()==false)
         {this.m_linearVelocity.Add(b2Math.MulFV(this.m_invMass,impulse));this.m_angularVelocity+=(this.m_invI*b2Math.b2CrossVV(b2Math.SubtractVV(point,this.m_position),impulse));}},GetMass:function(){return this.m_mass;},GetInertia:function(){return this.m_I;},GetWorldPoint:function(localPoint){return b2Math.AddVV(this.m_position,b2Math.b2MulMV(this.m_R,localPoint));},GetWorldVector:function(localVector){return b2Math.b2MulMV(this.m_R,localVector);},GetLocalPoint:function(worldPoint){return b2Math.b2MulTMV(this.m_R,b2Math.SubtractVV(worldPoint,this.m_position));},GetLocalVector:function(worldVector){return b2Math.b2MulTMV(this.m_R,worldVector);},IsStatic:function(){return(this.m_flags&b2Body.e_staticFlag)==b2Body.e_staticFlag;},IsFrozen:function()
         {return(this.m_flags&b2Body.e_frozenFlag)==b2Body.e_frozenFlag;},IsSleeping:function(){return(this.m_flags&b2Body.e_sleepFlag)==b2Body.e_sleepFlag;},AllowSleeping:function(flag)
         {if(flag)
         {this.m_flags|=b2Body.e_allowSleepFlag;}
         else
         {this.m_flags&=~b2Body.e_allowSleepFlag;this.WakeUp();}},WakeUp:function(){this.m_flags&=~b2Body.e_sleepFlag;this.m_sleepTime=0.0;},GetShapeList:function(){return this.m_shapeList;},GetContactList:function()
         {return this.m_contactList;},GetJointList:function()
         {return this.m_jointList;},GetNext:function(){return this.m_next;},GetUserData:function(){return this.m_userData;},initialize:function(bd,world){this.sMat0=new b2Mat22();this.m_position=new b2Vec2();this.m_R=new b2Mat22(0);this.m_position0=new b2Vec2();var i=0;var sd;var massData;this.m_flags=0;this.m_position.SetV(bd.position);this.m_rotation=bd.rotation;this.m_R.Set(this.m_rotation);this.m_position0.SetV(this.m_position);this.m_rotation0=this.m_rotation;this.m_world=world;this.m_linearDamping=b2Math.b2Clamp(1.0-bd.linearDamping,0.0,1.0);this.m_angularDamping=b2Math.b2Clamp(1.0-bd.angularDamping,0.0,1.0);this.m_force=new b2Vec2(0.0,0.0);this.m_torque=0.0;this.m_mass=0.0;var massDatas=new Array(b2Settings.b2_maxShapesPerBody);for(i=0;i<b2Settings.b2_maxShapesPerBody;i++){massDatas[i]=new b2MassData();}
         this.m_shapeCount=0;this.m_center=new b2Vec2(0.0,0.0);for(i=0;i<b2Settings.b2_maxShapesPerBody;++i)
         {sd=bd.shapes[i];if(sd==null)break;massData=massDatas[i];sd.ComputeMass(massData);this.m_mass+=massData.mass;this.m_center.x+=massData.mass*(sd.localPosition.x+massData.center.x);this.m_center.y+=massData.mass*(sd.localPosition.y+massData.center.y);++this.m_shapeCount;}
         if(this.m_mass>0.0)
         {this.m_center.Multiply(1.0/this.m_mass);this.m_position.Add(b2Math.b2MulMV(this.m_R,this.m_center));}
         else
         {this.m_flags|=b2Body.e_staticFlag;}
         this.m_I=0.0;for(i=0;i<this.m_shapeCount;++i)
         {sd=bd.shapes[i];massData=massDatas[i];this.m_I+=massData.I;var r=b2Math.SubtractVV(b2Math.AddVV(sd.localPosition,massData.center),this.m_center);this.m_I+=massData.mass*b2Math.b2Dot(r,r);}
         if(this.m_mass>0.0)
         {this.m_invMass=1.0/this.m_mass;}
         else
         {this.m_invMass=0.0;}
         if(this.m_I>0.0&&bd.preventRotation==false)
         {this.m_invI=1.0/this.m_I;}
         else
         {this.m_I=0.0;this.m_invI=0.0;}
         this.m_linearVelocity=b2Math.AddVV(bd.linearVelocity,b2Math.b2CrossFV(bd.angularVelocity,this.m_center));this.m_angularVelocity=bd.angularVelocity;this.m_jointList=null;this.m_contactList=null;this.m_prev=null;this.m_next=null;this.m_shapeList=null;for(i=0;i<this.m_shapeCount;++i)
         {sd=bd.shapes[i];var shape=b2Shape.Create(sd,this,this.m_center);shape.m_next=this.m_shapeList;this.m_shapeList=shape;}
         this.m_sleepTime=0.0;if(bd.allowSleep)
         {this.m_flags|=b2Body.e_allowSleepFlag;}
         if(bd.isSleeping)
         {this.m_flags|=b2Body.e_sleepFlag;}
         if((this.m_flags&b2Body.e_sleepFlag)||this.m_invMass==0.0)
         {this.m_linearVelocity.Set(0.0,0.0);this.m_angularVelocity=0.0;}
         this.m_userData=bd.userData;},Destroy:function(){var s=this.m_shapeList;while(s)
         {var s0=s;s=s.m_next;b2Shape.Destroy(s0);}},sMat0:new b2Mat22(),SynchronizeShapes:function(){this.sMat0.Set(this.m_rotation0);for(var s=this.m_shapeList;s!=null;s=s.m_next)
         {s.Synchronize(this.m_position0,this.sMat0,this.m_position,this.m_R);}},QuickSyncShapes:function(){for(var s=this.m_shapeList;s!=null;s=s.m_next)
         {s.QuickSync(this.m_position,this.m_R);}},IsConnected:function(other){for(var jn=this.m_jointList;jn!=null;jn=jn.next)
         {if(jn.other==other)
         return jn.joint.m_collideConnected==false;}
         return false;},Freeze:function(){this.m_flags|=b2Body.e_frozenFlag;this.m_linearVelocity.SetZero();this.m_angularVelocity=0.0;for(var s=this.m_shapeList;s!=null;s=s.m_next)
         {s.DestroyProxy();}},m_flags:0,m_position:new b2Vec2(),m_rotation:null,m_R:new b2Mat22(0),m_position0:new b2Vec2(),m_rotation0:null,m_linearVelocity:null,m_angularVelocity:null,m_force:null,m_torque:null,m_center:null,m_world:null,m_prev:null,m_next:null,m_shapeList:null,m_shapeCount:0,m_jointList:null,m_contactList:null,m_mass:null,m_invMass:null,m_I:null,m_invI:null,m_linearDamping:null,m_angularDamping:null,m_sleepTime:null,m_userData:null};b2Body.e_staticFlag=0x0001;b2Body.e_frozenFlag=0x0002;b2Body.e_islandFlag=0x0004;b2Body.e_sleepFlag=0x0008;b2Body.e_allowSleepFlag=0x0010;b2Body.e_destroyFlag=0x0020;
         var b2BodyDef=Class.create();b2BodyDef.prototype={initialize:function()
         {this.shapes=new Array();this.userData=null;for(var i=0;i<b2Settings.b2_maxShapesPerBody;i++){this.shapes[i]=null;}
         this.position=new b2Vec2(0.0,0.0);this.rotation=0.0;this.linearVelocity=new b2Vec2(0.0,0.0);this.angularVelocity=0.0;this.linearDamping=0.0;this.angularDamping=0.0;this.allowSleep=true;this.isSleeping=false;this.preventRotation=false;},userData:null,shapes:new Array(),position:null,rotation:null,linearVelocity:null,angularVelocity:null,linearDamping:null,angularDamping:null,allowSleep:null,isSleeping:null,preventRotation:null,AddShape:function(shape)
         {for(var i=0;i<b2Settings.b2_maxShapesPerBody;++i)
         {if(this.shapes[i]==null)
         {this.shapes[i]=shape;break;}}}};
         var b2CollisionFilter=Class.create();b2CollisionFilter.prototype={ShouldCollide:function(shape1,shape2){if(shape1.m_groupIndex==shape2.m_groupIndex&&shape1.m_groupIndex!=0)
         {return shape1.m_groupIndex>0;}
         var collide=(shape1.m_maskBits&shape2.m_categoryBits)!=0&&(shape1.m_categoryBits&shape2.m_maskBits)!=0;return collide;},initialize:function(){}};b2CollisionFilter.b2_defaultFilter=new b2CollisionFilter;
         var b2Island=Class.create();b2Island.prototype={initialize:function(bodyCapacity,contactCapacity,jointCapacity,allocator)
         {var i=0;this.m_bodyCapacity=bodyCapacity;this.m_contactCapacity=contactCapacity;this.m_jointCapacity=jointCapacity;this.m_bodyCount=0;this.m_contactCount=0;this.m_jointCount=0;this.m_bodies=new Array(bodyCapacity);for(i=0;i<bodyCapacity;i++)
         this.m_bodies[i]=null;this.m_contacts=new Array(contactCapacity);for(i=0;i<contactCapacity;i++)
         this.m_contacts[i]=null;this.m_joints=new Array(jointCapacity);for(i=0;i<jointCapacity;i++)
         this.m_joints[i]=null;this.m_allocator=allocator;},Clear:function()
         {this.m_bodyCount=0;this.m_contactCount=0;this.m_jointCount=0;},Solve:function(step,gravity)
         {var i=0;var b;for(i=0;i<this.m_bodyCount;++i)
         {b=this.m_bodies[i];if(b.m_invMass==0.0)
         continue;b.m_linearVelocity.Add(b2Math.MulFV(step.dt,b2Math.AddVV(gravity,b2Math.MulFV(b.m_invMass,b.m_force))));b.m_angularVelocity+=step.dt*b.m_invI*b.m_torque;b.m_linearVelocity.Multiply(b.m_linearDamping);b.m_angularVelocity*=b.m_angularDamping;b.m_position0.SetV(b.m_position);b.m_rotation0=b.m_rotation;}
         var contactSolver=new b2ContactSolver(this.m_contacts,this.m_contactCount,this.m_allocator);contactSolver.PreSolve();for(i=0;i<this.m_jointCount;++i)
         {this.m_joints[i].PrepareVelocitySolver();}
         for(i=0;i<step.iterations;++i)
         {contactSolver.SolveVelocityConstraints();for(var j=0;j<this.m_jointCount;++j)
         {this.m_joints[j].SolveVelocityConstraints(step);}}
         for(i=0;i<this.m_bodyCount;++i)
         {b=this.m_bodies[i];if(b.m_invMass==0.0)
         continue;b.m_position.x+=step.dt*b.m_linearVelocity.x;b.m_position.y+=step.dt*b.m_linearVelocity.y;b.m_rotation+=step.dt*b.m_angularVelocity;b.m_R.Set(b.m_rotation);}
         for(i=0;i<this.m_jointCount;++i)
         {this.m_joints[i].PreparePositionSolver();}
         if(b2World.s_enablePositionCorrection)
         {for(b2Island.m_positionIterationCount=0;b2Island.m_positionIterationCount<step.iterations;++b2Island.m_positionIterationCount)
         {var contactsOkay=contactSolver.SolvePositionConstraints(b2Settings.b2_contactBaumgarte);var jointsOkay=true;for(i=0;i<this.m_jointCount;++i)
         {var jointOkay=this.m_joints[i].SolvePositionConstraints();jointsOkay=jointsOkay&&jointOkay;}
         if(contactsOkay&&jointsOkay)
         {break;}}}
         contactSolver.PostSolve();for(i=0;i<this.m_bodyCount;++i)
         {b=this.m_bodies[i];if(b.m_invMass==0.0)
         continue;b.m_R.Set(b.m_rotation);b.SynchronizeShapes();b.m_force.Set(0.0,0.0);b.m_torque=0.0;}},UpdateSleep:function(dt)
         {var i=0;var b;var minSleepTime=Number.MAX_VALUE;var linTolSqr=b2Settings.b2_linearSleepTolerance*b2Settings.b2_linearSleepTolerance;var angTolSqr=b2Settings.b2_angularSleepTolerance*b2Settings.b2_angularSleepTolerance;for(i=0;i<this.m_bodyCount;++i)
         {b=this.m_bodies[i];if(b.m_invMass==0.0)
         {continue;}
         if((b.m_flags&b2Body.e_allowSleepFlag)==0)
         {b.m_sleepTime=0.0;minSleepTime=0.0;}
         if((b.m_flags&b2Body.e_allowSleepFlag)==0||b.m_angularVelocity*b.m_angularVelocity>angTolSqr||b2Math.b2Dot(b.m_linearVelocity,b.m_linearVelocity)>linTolSqr)
         {b.m_sleepTime=0.0;minSleepTime=0.0;}
         else
         {b.m_sleepTime+=dt;minSleepTime=b2Math.b2Min(minSleepTime,b.m_sleepTime);}}
         if(minSleepTime>=b2Settings.b2_timeToSleep)
         {for(i=0;i<this.m_bodyCount;++i)
         {b=this.m_bodies[i];b.m_flags|=b2Body.e_sleepFlag;}}},AddBody:function(body)
         {this.m_bodies[this.m_bodyCount++]=body;},AddContact:function(contact)
         {this.m_contacts[this.m_contactCount++]=contact;},AddJoint:function(joint)
         {this.m_joints[this.m_jointCount++]=joint;},m_allocator:null,m_bodies:null,m_contacts:null,m_joints:null,m_bodyCount:0,m_jointCount:0,m_contactCount:0,m_bodyCapacity:0,m_contactCapacity:0,m_jointCapacity:0,m_positionError:null};b2Island.m_positionIterationCount=0;
         var b2TimeStep=Class.create();b2TimeStep.prototype={dt:null,inv_dt:null,iterations:0,initialize:function(){}};
         var b2ContactNode=Class.create();b2ContactNode.prototype={other:null,contact:null,prev:null,next:null,initialize:function(){}};
         var b2Contact=Class.create();b2Contact.prototype={GetManifolds:function(){return null},GetManifoldCount:function()
         {return this.m_manifoldCount;},GetNext:function(){return this.m_next;},GetShape1:function(){return this.m_shape1;},GetShape2:function(){return this.m_shape2;},initialize:function(s1,s2)
         {this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}
         this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;},Evaluate:function(){},m_flags:0,m_prev:null,m_next:null,m_node1:new b2ContactNode(),m_node2:new b2ContactNode(),m_shape1:null,m_shape2:null,m_manifoldCount:0,m_friction:null,m_restitution:null};b2Contact.e_islandFlag=0x0001;b2Contact.e_destroyFlag=0x0002;b2Contact.AddType=function(createFcn,destroyFcn,type1,type2)
         {b2Contact.s_registers[type1][type2].createFcn=createFcn;b2Contact.s_registers[type1][type2].destroyFcn=destroyFcn;b2Contact.s_registers[type1][type2].primary=true;if(type1!=type2)
         {b2Contact.s_registers[type2][type1].createFcn=createFcn;b2Contact.s_registers[type2][type1].destroyFcn=destroyFcn;b2Contact.s_registers[type2][type1].primary=false;}};b2Contact.InitializeRegisters=function(){b2Contact.s_registers=new Array(b2Shape.e_shapeTypeCount);for(var i=0;i<b2Shape.e_shapeTypeCount;i++){b2Contact.s_registers[i]=new Array(b2Shape.e_shapeTypeCount);for(var j=0;j<b2Shape.e_shapeTypeCount;j++){b2Contact.s_registers[i][j]=new b2ContactRegister();}}
         b2Contact.AddType(b2CircleContact.Create,b2CircleContact.Destroy,b2Shape.e_circleShape,b2Shape.e_circleShape);b2Contact.AddType(b2PolyAndCircleContact.Create,b2PolyAndCircleContact.Destroy,b2Shape.e_polyShape,b2Shape.e_circleShape);b2Contact.AddType(b2PolyContact.Create,b2PolyContact.Destroy,b2Shape.e_polyShape,b2Shape.e_polyShape);};b2Contact.Create=function(shape1,shape2,allocator){if(b2Contact.s_initialized==false)
         {b2Contact.InitializeRegisters();b2Contact.s_initialized=true;}
         var type1=shape1.m_type;var type2=shape2.m_type;var createFcn=b2Contact.s_registers[type1][type2].createFcn;if(createFcn)
         {if(b2Contact.s_registers[type1][type2].primary)
         {return createFcn(shape1,shape2,allocator);}
         else
         {var c=createFcn(shape2,shape1,allocator);for(var i=0;i<c.GetManifoldCount();++i)
         {var m=c.GetManifolds()[i];m.normal=m.normal.Negative();}
         return c;}}
         else
         {return null;}};b2Contact.Destroy=function(contact,allocator){if(contact.GetManifoldCount()>0)
         {contact.m_shape1.m_body.WakeUp();contact.m_shape2.m_body.WakeUp();}
         var type1=contact.m_shape1.m_type;var type2=contact.m_shape2.m_type;var destroyFcn=b2Contact.s_registers[type1][type2].destroyFcn;destroyFcn(contact,allocator);};b2Contact.s_registers=null;b2Contact.s_initialized=false;
         var b2ContactConstraint=Class.create();b2ContactConstraint.prototype={initialize:function(){this.normal=new b2Vec2();this.points=new Array(b2Settings.b2_maxManifoldPoints);for(var i=0;i<b2Settings.b2_maxManifoldPoints;i++){this.points[i]=new b2ContactConstraintPoint();}},points:null,normal:new b2Vec2(),manifold:null,body1:null,body2:null,friction:null,restitution:null,pointCount:0};
         var b2ContactConstraintPoint=Class.create();b2ContactConstraintPoint.prototype={localAnchor1:new b2Vec2(),localAnchor2:new b2Vec2(),normalImpulse:null,tangentImpulse:null,positionImpulse:null,normalMass:null,tangentMass:null,separation:null,velocityBias:null,initialize:function(){this.localAnchor1=new b2Vec2();this.localAnchor2=new b2Vec2();}};
         var b2ContactRegister=Class.create();b2ContactRegister.prototype={createFcn:null,destroyFcn:null,primary:null,initialize:function(){}};
         var b2ContactSolver=Class.create();b2ContactSolver.prototype={initialize:function(contacts,contactCount,allocator){this.m_constraints=new Array();this.m_allocator=allocator;var i=0;var tVec;var tMat;this.m_constraintCount=0;for(i=0;i<contactCount;++i)
         {this.m_constraintCount+=contacts[i].GetManifoldCount();}
         for(i=0;i<this.m_constraintCount;i++){this.m_constraints[i]=new b2ContactConstraint();}
         var count=0;for(i=0;i<contactCount;++i)
         {var contact=contacts[i];var b1=contact.m_shape1.m_body;var b2=contact.m_shape2.m_body;var manifoldCount=contact.GetManifoldCount();var manifolds=contact.GetManifolds();var friction=contact.m_friction;var restitution=contact.m_restitution;var v1X=b1.m_linearVelocity.x;var v1Y=b1.m_linearVelocity.y;var v2X=b2.m_linearVelocity.x;var v2Y=b2.m_linearVelocity.y;var w1=b1.m_angularVelocity;var w2=b2.m_angularVelocity;for(var j=0;j<manifoldCount;++j)
         {var manifold=manifolds[j];var normalX=manifold.normal.x;var normalY=manifold.normal.y;var c=this.m_constraints[count];c.body1=b1;c.body2=b2;c.manifold=manifold;c.normal.x=normalX;c.normal.y=normalY;c.pointCount=manifold.pointCount;c.friction=friction;c.restitution=restitution;for(var k=0;k<c.pointCount;++k)
         {var cp=manifold.points[k];var ccp=c.points[k];ccp.normalImpulse=cp.normalImpulse;ccp.tangentImpulse=cp.tangentImpulse;ccp.separation=cp.separation;var r1X=cp.position.x-b1.m_position.x;var r1Y=cp.position.y-b1.m_position.y;var r2X=cp.position.x-b2.m_position.x;var r2Y=cp.position.y-b2.m_position.y;tVec=ccp.localAnchor1;tMat=b1.m_R;tVec.x=r1X*tMat.col1.x+r1Y*tMat.col1.y;tVec.y=r1X*tMat.col2.x+r1Y*tMat.col2.y;tVec=ccp.localAnchor2;tMat=b2.m_R;tVec.x=r2X*tMat.col1.x+r2Y*tMat.col1.y;tVec.y=r2X*tMat.col2.x+r2Y*tMat.col2.y;var r1Sqr=r1X*r1X+r1Y*r1Y;var r2Sqr=r2X*r2X+r2Y*r2Y;var rn1=r1X*normalX+r1Y*normalY;var rn2=r2X*normalX+r2Y*normalY;var kNormal=b1.m_invMass+b2.m_invMass;kNormal+=b1.m_invI*(r1Sqr-rn1*rn1)+b2.m_invI*(r2Sqr-rn2*rn2);ccp.normalMass=1.0/kNormal;var tangentX=normalY
         var tangentY=-normalX;var rt1=r1X*tangentX+r1Y*tangentY;var rt2=r2X*tangentX+r2Y*tangentY;var kTangent=b1.m_invMass+b2.m_invMass;kTangent+=b1.m_invI*(r1Sqr-rt1*rt1)+b2.m_invI*(r2Sqr-rt2*rt2);ccp.tangentMass=1.0/kTangent;ccp.velocityBias=0.0;if(ccp.separation>0.0)
         {ccp.velocityBias=-60.0*ccp.separation;}
         var tX=v2X+(-w2*r2Y)-v1X-(-w1*r1Y);var tY=v2Y+(w2*r2X)-v1Y-(w1*r1X);var vRel=c.normal.x*tX+c.normal.y*tY;if(vRel<-b2Settings.b2_velocityThreshold)
         {ccp.velocityBias+=-c.restitution*vRel;}}
         ++count;}}},PreSolve:function(){var tVec;var tVec2;var tMat;for(var i=0;i<this.m_constraintCount;++i)
         {var c=this.m_constraints[i];var b1=c.body1;var b2=c.body2;var invMass1=b1.m_invMass;var invI1=b1.m_invI;var invMass2=b2.m_invMass;var invI2=b2.m_invI;var normalX=c.normal.x;var normalY=c.normal.y;var tangentX=normalY;var tangentY=-normalX;var j=0;var tCount=0;if(b2World.s_enableWarmStarting)
         {tCount=c.pointCount;for(j=0;j<tCount;++j)
         {var ccp=c.points[j];var PX=ccp.normalImpulse*normalX+ccp.tangentImpulse*tangentX;var PY=ccp.normalImpulse*normalY+ccp.tangentImpulse*tangentY;tMat=b1.m_R;tVec=ccp.localAnchor1;var r1X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;var r1Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tMat=b2.m_R;tVec=ccp.localAnchor2;var r2X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;var r2Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;b1.m_angularVelocity-=invI1*(r1X*PY-r1Y*PX);b1.m_linearVelocity.x-=invMass1*PX;b1.m_linearVelocity.y-=invMass1*PY;b2.m_angularVelocity+=invI2*(r2X*PY-r2Y*PX);b2.m_linearVelocity.x+=invMass2*PX;b2.m_linearVelocity.y+=invMass2*PY;ccp.positionImpulse=0.0;}}
         else{tCount=c.pointCount;for(j=0;j<tCount;++j)
         {var ccp2=c.points[j];ccp2.normalImpulse=0.0;ccp2.tangentImpulse=0.0;ccp2.positionImpulse=0.0;}}}},SolveVelocityConstraints:function(){var j=0;var ccp;var r1X;var r1Y;var r2X;var r2Y;var dvX;var dvY;var lambda;var newImpulse;var PX;var PY;var tMat;var tVec;for(var i=0;i<this.m_constraintCount;++i)
         {var c=this.m_constraints[i];var b1=c.body1;var b2=c.body2;var b1_angularVelocity=b1.m_angularVelocity;var b1_linearVelocity=b1.m_linearVelocity;var b2_angularVelocity=b2.m_angularVelocity;var b2_linearVelocity=b2.m_linearVelocity;var invMass1=b1.m_invMass;var invI1=b1.m_invI;var invMass2=b2.m_invMass;var invI2=b2.m_invI;var normalX=c.normal.x;var normalY=c.normal.y;var tangentX=normalY;var tangentY=-normalX;var tCount=c.pointCount;for(j=0;j<tCount;++j)
         {ccp=c.points[j];tMat=b1.m_R;tVec=ccp.localAnchor1;r1X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y
         r1Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y
         tMat=b2.m_R;tVec=ccp.localAnchor2;r2X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y
         r2Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y
         dvX=b2_linearVelocity.x+(-b2_angularVelocity*r2Y)-b1_linearVelocity.x-(-b1_angularVelocity*r1Y);dvY=b2_linearVelocity.y+(b2_angularVelocity*r2X)-b1_linearVelocity.y-(b1_angularVelocity*r1X);var vn=dvX*normalX+dvY*normalY;lambda=-ccp.normalMass*(vn-ccp.velocityBias);newImpulse=b2Math.b2Max(ccp.normalImpulse+lambda,0.0);lambda=newImpulse-ccp.normalImpulse;PX=lambda*normalX;PY=lambda*normalY;b1_linearVelocity.x-=invMass1*PX;b1_linearVelocity.y-=invMass1*PY;b1_angularVelocity-=invI1*(r1X*PY-r1Y*PX);b2_linearVelocity.x+=invMass2*PX;b2_linearVelocity.y+=invMass2*PY;b2_angularVelocity+=invI2*(r2X*PY-r2Y*PX);ccp.normalImpulse=newImpulse;dvX=b2_linearVelocity.x+(-b2_angularVelocity*r2Y)-b1_linearVelocity.x-(-b1_angularVelocity*r1Y);dvY=b2_linearVelocity.y+(b2_angularVelocity*r2X)-b1_linearVelocity.y-(b1_angularVelocity*r1X);var vt=dvX*tangentX+dvY*tangentY;lambda=ccp.tangentMass*(-vt);var maxFriction=c.friction*ccp.normalImpulse;newImpulse=b2Math.b2Clamp(ccp.tangentImpulse+lambda,-maxFriction,maxFriction);lambda=newImpulse-ccp.tangentImpulse;PX=lambda*tangentX;PY=lambda*tangentY;b1_linearVelocity.x-=invMass1*PX;b1_linearVelocity.y-=invMass1*PY;b1_angularVelocity-=invI1*(r1X*PY-r1Y*PX);b2_linearVelocity.x+=invMass2*PX;b2_linearVelocity.y+=invMass2*PY;b2_angularVelocity+=invI2*(r2X*PY-r2Y*PX);ccp.tangentImpulse=newImpulse;}
         b1.m_angularVelocity=b1_angularVelocity;b2.m_angularVelocity=b2_angularVelocity;}},SolvePositionConstraints:function(beta){var minSeparation=0.0;var tMat;var tVec;for(var i=0;i<this.m_constraintCount;++i)
         {var c=this.m_constraints[i];var b1=c.body1;var b2=c.body2;var b1_position=b1.m_position;var b1_rotation=b1.m_rotation;var b2_position=b2.m_position;var b2_rotation=b2.m_rotation;var invMass1=b1.m_invMass;var invI1=b1.m_invI;var invMass2=b2.m_invMass;var invI2=b2.m_invI;var normalX=c.normal.x;var normalY=c.normal.y;var tangentX=normalY;var tangentY=-normalX;var tCount=c.pointCount;for(var j=0;j<tCount;++j)
         {var ccp=c.points[j];tMat=b1.m_R;tVec=ccp.localAnchor1;var r1X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y
         var r1Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y
         tMat=b2.m_R;tVec=ccp.localAnchor2;var r2X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y
         var r2Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y
         var p1X=b1_position.x+r1X;var p1Y=b1_position.y+r1Y;var p2X=b2_position.x+r2X;var p2Y=b2_position.y+r2Y;var dpX=p2X-p1X;var dpY=p2Y-p1Y;var separation=(dpX*normalX+dpY*normalY)+ccp.separation;minSeparation=b2Math.b2Min(minSeparation,separation);var C=beta*b2Math.b2Clamp(separation+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);var dImpulse=-ccp.normalMass*C;var impulse0=ccp.positionImpulse;ccp.positionImpulse=b2Math.b2Max(impulse0+dImpulse,0.0);dImpulse=ccp.positionImpulse-impulse0;var impulseX=dImpulse*normalX;var impulseY=dImpulse*normalY;b1_position.x-=invMass1*impulseX;b1_position.y-=invMass1*impulseY;b1_rotation-=invI1*(r1X*impulseY-r1Y*impulseX);b1.m_R.Set(b1_rotation);b2_position.x+=invMass2*impulseX;b2_position.y+=invMass2*impulseY;b2_rotation+=invI2*(r2X*impulseY-r2Y*impulseX);b2.m_R.Set(b2_rotation);}
         b1.m_rotation=b1_rotation;b2.m_rotation=b2_rotation;}
         return minSeparation>=-b2Settings.b2_linearSlop;},PostSolve:function(){for(var i=0;i<this.m_constraintCount;++i)
         {var c=this.m_constraints[i];var m=c.manifold;for(var j=0;j<c.pointCount;++j)
         {var mPoint=m.points[j];var cPoint=c.points[j];mPoint.normalImpulse=cPoint.normalImpulse;mPoint.tangentImpulse=cPoint.tangentImpulse;}}},m_allocator:null,m_constraints:new Array(),m_constraintCount:0};
         var b2CircleContact=Class.create();Object.extend(b2CircleContact.prototype,b2Contact.prototype);Object.extend(b2CircleContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}
         this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;this.m_manifold=[new b2Manifold()];this.m_manifold[0].pointCount=0;this.m_manifold[0].points[0].normalImpulse=0.0;this.m_manifold[0].points[0].tangentImpulse=0.0;},Evaluate:function(){b2Collision.b2CollideCircle(this.m_manifold[0],this.m_shape1,this.m_shape2,false);if(this.m_manifold[0].pointCount>0)
         {this.m_manifoldCount=1;}
         else
         {this.m_manifoldCount=0;}},GetManifolds:function()
         {return this.m_manifold;},m_manifold:[new b2Manifold()]});b2CircleContact.Create=function(shape1,shape2,allocator){return new b2CircleContact(shape1,shape2);};b2CircleContact.Destroy=function(contact,allocator){};
         var b2Conservative=Class.create();b2Conservative.prototype={initialize:function(){}}
         b2Conservative.R1=new b2Mat22();b2Conservative.R2=new b2Mat22();b2Conservative.x1=new b2Vec2();b2Conservative.x2=new b2Vec2();b2Conservative.Conservative=function(shape1,shape2){var body1=shape1.GetBody();var body2=shape2.GetBody();var v1X=body1.m_position.x-body1.m_position0.x;var v1Y=body1.m_position.y-body1.m_position0.y;var omega1=body1.m_rotation-body1.m_rotation0;var v2X=body2.m_position.x-body2.m_position0.x;var v2Y=body2.m_position.y-body2.m_position0.y;var omega2=body2.m_rotation-body2.m_rotation0;var r1=shape1.GetMaxRadius();var r2=shape2.GetMaxRadius();var p1StartX=body1.m_position0.x;var p1StartY=body1.m_position0.y;var a1Start=body1.m_rotation0;var p2StartX=body2.m_position0.x;var p2StartY=body2.m_position0.y;var a2Start=body2.m_rotation0;var p1X=p1StartX;var p1Y=p1StartY;var a1=a1Start;var p2X=p2StartX;var p2Y=p2StartY;var a2=a2Start;b2Conservative.R1.Set(a1);b2Conservative.R2.Set(a2);shape1.QuickSync(p1,b2Conservative.R1);shape2.QuickSync(p2,b2Conservative.R2);var s1=0.0;var maxIterations=10;var dX;var dY;var invRelativeVelocity=0.0;var hit=true;for(var iter=0;iter<maxIterations;++iter)
         {var distance=b2Distance.Distance(b2Conservative.x1,b2Conservative.x2,shape1,shape2);if(distance<b2Settings.b2_linearSlop)
         {if(iter==0)
         {hit=false;}
         else
         {hit=true;}
         break;}
         if(iter==0)
         {dX=b2Conservative.x2.x-b2Conservative.x1.x;dY=b2Conservative.x2.y-b2Conservative.x1.y;var dLen=Math.sqrt(dX*dX+dY*dY);var relativeVelocity=(dX*(v1X-v2X)+dY*(v1Y-v2Y))+Math.abs(omega1)*r1+Math.abs(omega2)*r2;if(Math.abs(relativeVelocity)<Number.MIN_VALUE)
         {hit=false;break;}
         invRelativeVelocity=1.0/relativeVelocity;}
         var ds=distance*invRelativeVelocity;var s2=s1+ds;if(s2<0.0||1.0<s2)
         {hit=false;break;}
         if(s2<(1.0+100.0*Number.MIN_VALUE)*s1)
         {hit=true;break;}
         s1=s2;p1X=p1StartX+s1*v1.x;p1Y=p1StartY+s1*v1.y;a1=a1Start+s1*omega1;p2X=p2StartX+s1*v2.x;p2Y=p2StartY+s1*v2.y;a2=a2Start+s1*omega2;b2Conservative.R1.Set(a1);b2Conservative.R2.Set(a2);shape1.QuickSync(p1,b2Conservative.R1);shape2.QuickSync(p2,b2Conservative.R2);}
         if(hit)
         {dX=b2Conservative.x2.x-b2Conservative.x1.x;dY=b2Conservative.x2.y-b2Conservative.x1.y;var length=Math.sqrt(dX*dX+dY*dY);if(length>FLT_EPSILON)
         {d*=b2_linearSlop/length;}
         if(body1.IsStatic())
         {body1.m_position.x=p1X;body1.m_position.y=p1Y;}
         else
         {body1.m_position.x=p1X-dX;body1.m_position.y=p1Y-dY;}
         body1.m_rotation=a1;body1.m_R.Set(a1);body1.QuickSyncShapes();if(body2.IsStatic())
         {body2.m_position.x=p2X;body2.m_position.y=p2Y;}
         else
         {body2.m_position.x=p2X+dX;body2.m_position.y=p2Y+dY;}
         body2.m_position.x=p2X+dX;body2.m_position.y=p2Y+dY;body2.m_rotation=a2;body2.m_R.Set(a2);body2.QuickSyncShapes();return true;}
         shape1.QuickSync(body1.m_position,body1.m_R);shape2.QuickSync(body2.m_position,body2.m_R);return false;};
         var b2NullContact=Class.create();Object.extend(b2NullContact.prototype,b2Contact.prototype);Object.extend(b2NullContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}
         this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;},Evaluate:function(){},GetManifolds:function(){return null;}});
         var b2PolyAndCircleContact=Class.create();Object.extend(b2PolyAndCircleContact.prototype,b2Contact.prototype);Object.extend(b2PolyAndCircleContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}
         this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;this.m_manifold=[new b2Manifold()];b2Settings.b2Assert(this.m_shape1.m_type==b2Shape.e_polyShape);b2Settings.b2Assert(this.m_shape2.m_type==b2Shape.e_circleShape);this.m_manifold[0].pointCount=0;this.m_manifold[0].points[0].normalImpulse=0.0;this.m_manifold[0].points[0].tangentImpulse=0.0;},Evaluate:function(){b2Collision.b2CollidePolyAndCircle(this.m_manifold[0],this.m_shape1,this.m_shape2,false);if(this.m_manifold[0].pointCount>0)
         {this.m_manifoldCount=1;}
         else
         {this.m_manifoldCount=0;}},GetManifolds:function()
         {return this.m_manifold;},m_manifold:[new b2Manifold()]})
         b2PolyAndCircleContact.Create=function(shape1,shape2,allocator){return new b2PolyAndCircleContact(shape1,shape2);};b2PolyAndCircleContact.Destroy=function(contact,allocator){};
         var b2PolyContact=Class.create();Object.extend(b2PolyContact.prototype,b2Contact.prototype);Object.extend(b2PolyContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}
         this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;this.m0=new b2Manifold();this.m_manifold=[new b2Manifold()];this.m_manifold[0].pointCount=0;},m0:new b2Manifold(),Evaluate:function(){var tMani=this.m_manifold[0];var tPoints=this.m0.points;for(var k=0;k<tMani.pointCount;k++){var tPoint=tPoints[k];var tPoint0=tMani.points[k];tPoint.normalImpulse=tPoint0.normalImpulse;tPoint.tangentImpulse=tPoint0.tangentImpulse;tPoint.id=tPoint0.id.Copy();}
         this.m0.pointCount=tMani.pointCount;b2Collision.b2CollidePoly(tMani,this.m_shape1,this.m_shape2,false);if(tMani.pointCount>0)
         {var match=[false,false];for(var i=0;i<tMani.pointCount;++i)
         {var cp=tMani.points[i];cp.normalImpulse=0.0;cp.tangentImpulse=0.0;var idKey=cp.id.key;for(var j=0;j<this.m0.pointCount;++j)
         {if(match[j]==true)
         continue;var cp0=this.m0.points[j];var id0=cp0.id;if(id0.key==idKey)
         {match[j]=true;cp.normalImpulse=cp0.normalImpulse;cp.tangentImpulse=cp0.tangentImpulse;break;}}}
         this.m_manifoldCount=1;}
         else
         {this.m_manifoldCount=0;}},GetManifolds:function()
         {return this.m_manifold;},m_manifold:[new b2Manifold()]});b2PolyContact.Create=function(shape1,shape2,allocator){return new b2PolyContact(shape1,shape2);};b2PolyContact.Destroy=function(contact,allocator){};
         var b2ContactManager=Class.create();Object.extend(b2ContactManager.prototype,b2PairCallback.prototype);Object.extend(b2ContactManager.prototype,{initialize:function(){this.m_nullContact=new b2NullContact();this.m_world=null;this.m_destroyImmediate=false;},PairAdded:function(proxyUserData1,proxyUserData2){var shape1=proxyUserData1;var shape2=proxyUserData2;var body1=shape1.m_body;var body2=shape2.m_body;if(body1.IsStatic()&&body2.IsStatic())
         {return this.m_nullContact;}
         if(shape1.m_body==shape2.m_body)
         {return this.m_nullContact;}
         if(body2.IsConnected(body1))
         {return this.m_nullContact;}
         if(this.m_world.m_filter!=null&&this.m_world.m_filter.ShouldCollide(shape1,shape2)==false)
         {return this.m_nullContact;}
         if(body2.m_invMass==0.0)
         {var tempShape=shape1;shape1=shape2;shape2=tempShape;var tempBody=body1;body1=body2;body2=tempBody;}
         var contact=b2Contact.Create(shape1,shape2,this.m_world.m_blockAllocator);if(contact==null)
         {return this.m_nullContact;}
         else
         {contact.m_prev=null;contact.m_next=this.m_world.m_contactList;if(this.m_world.m_contactList!=null)
         {this.m_world.m_contactList.m_prev=contact;}
         this.m_world.m_contactList=contact;this.m_world.m_contactCount++;}
         return contact;},PairRemoved:function(proxyUserData1,proxyUserData2,pairUserData){if(pairUserData==null)
         {return;}
         var c=pairUserData;if(c!=this.m_nullContact)
         {if(this.m_destroyImmediate==true)
         {this.DestroyContact(c);c=null;}
         else
         {c.m_flags|=b2Contact.e_destroyFlag;}}},DestroyContact:function(c)
         {if(c.m_prev)
         {c.m_prev.m_next=c.m_next;}
         if(c.m_next)
         {c.m_next.m_prev=c.m_prev;}
         if(c==this.m_world.m_contactList)
         {this.m_world.m_contactList=c.m_next;}
         if(c.GetManifoldCount()>0)
         {var body1=c.m_shape1.m_body;var body2=c.m_shape2.m_body;var node1=c.m_node1;var node2=c.m_node2;body1.WakeUp();body2.WakeUp();if(node1.prev)
         {node1.prev.next=node1.next;}
         if(node1.next)
         {node1.next.prev=node1.prev;}
         if(node1==body1.m_contactList)
         {body1.m_contactList=node1.next;}
         node1.prev=null;node1.next=null;if(node2.prev)
         {node2.prev.next=node2.next;}
         if(node2.next)
         {node2.next.prev=node2.prev;}
         if(node2==body2.m_contactList)
         {body2.m_contactList=node2.next;}
         node2.prev=null;node2.next=null;}
         b2Contact.Destroy(c,this.m_world.m_blockAllocator);--this.m_world.m_contactCount;},CleanContactList:function()
         {var c=this.m_world.m_contactList;while(c!=null)
         {var c0=c;c=c.m_next;if(c0.m_flags&b2Contact.e_destroyFlag)
         {this.DestroyContact(c0);c0=null;}}},Collide:function()
         {var body1;var body2;var node1;var node2;for(var c=this.m_world.m_contactList;c!=null;c=c.m_next)
         {if(c.m_shape1.m_body.IsSleeping()&&c.m_shape2.m_body.IsSleeping())
         {continue;}
         var oldCount=c.GetManifoldCount();c.Evaluate();var newCount=c.GetManifoldCount();if(oldCount==0&&newCount>0)
         {body1=c.m_shape1.m_body;body2=c.m_shape2.m_body;node1=c.m_node1;node2=c.m_node2;node1.contact=c;node1.other=body2;node1.prev=null;node1.next=body1.m_contactList;if(node1.next!=null)
         {node1.next.prev=c.m_node1;}
         body1.m_contactList=c.m_node1;node2.contact=c;node2.other=body1;node2.prev=null;node2.next=body2.m_contactList;if(node2.next!=null)
         {node2.next.prev=node2;}
         body2.m_contactList=node2;}
         else if(oldCount>0&&newCount==0)
         {body1=c.m_shape1.m_body;body2=c.m_shape2.m_body;node1=c.m_node1;node2=c.m_node2;if(node1.prev)
         {node1.prev.next=node1.next;}
         if(node1.next)
         {node1.next.prev=node1.prev;}
         if(node1==body1.m_contactList)
         {body1.m_contactList=node1.next;}
         node1.prev=null;node1.next=null;if(node2.prev)
         {node2.prev.next=node2.next;}
         if(node2.next)
         {node2.next.prev=node2.prev;}
         if(node2==body2.m_contactList)
         {body2.m_contactList=node2.next;}
         node2.prev=null;node2.next=null;}}},m_world:null,m_nullContact:new b2NullContact(),m_destroyImmediate:null});
         var b2World=Class.create();b2World.prototype={initialize:function(worldAABB,gravity,doSleep){this.step=new b2TimeStep();this.m_contactManager=new b2ContactManager();this.m_listener=null;this.m_filter=b2CollisionFilter.b2_defaultFilter;this.m_bodyList=null;this.m_contactList=null;this.m_jointList=null;this.m_bodyCount=0;this.m_contactCount=0;this.m_jointCount=0;this.m_bodyDestroyList=null;this.m_allowSleep=doSleep;this.m_gravity=gravity;this.m_contactManager.m_world=this;this.m_broadPhase=new b2BroadPhase(worldAABB,this.m_contactManager);var bd=new b2BodyDef();this.m_groundBody=this.CreateBody(bd);},SetListener:function(listener){this.m_listener=listener;},SetFilter:function(filter){this.m_filter=filter;},CreateBody:function(def){var b=new b2Body(def,this);b.m_prev=null;b.m_next=this.m_bodyList;if(this.m_bodyList)
         {this.m_bodyList.m_prev=b;}
         this.m_bodyList=b;++this.m_bodyCount;return b;},DestroyBody:function(b)
         {if(b.m_flags&b2Body.e_destroyFlag)
         {return;}
         if(b.m_prev)
         {b.m_prev.m_next=b.m_next;}
         if(b.m_next)
         {b.m_next.m_prev=b.m_prev;}
         if(b==this.m_bodyList)
         {this.m_bodyList=b.m_next;}
         b.m_flags|=b2Body.e_destroyFlag;--this.m_bodyCount;b.m_prev=null;b.m_next=this.m_bodyDestroyList;this.m_bodyDestroyList=b;},CleanBodyList:function()
         {this.m_contactManager.m_destroyImmediate=true;var b=this.m_bodyDestroyList;while(b)
         {var b0=b;b=b.m_next;var jn=b0.m_jointList;while(jn)
         {var jn0=jn;jn=jn.next;if(this.m_listener)
         {this.m_listener.NotifyJointDestroyed(jn0.joint);}
         this.DestroyJoint(jn0.joint);}
         b0.Destroy();}
         this.m_bodyDestroyList=null;this.m_contactManager.m_destroyImmediate=false;},CreateJoint:function(def){var j=b2Joint.Create(def,this.m_blockAllocator);j.m_prev=null;j.m_next=this.m_jointList;if(this.m_jointList)
         {this.m_jointList.m_prev=j;}
         this.m_jointList=j;++this.m_jointCount;j.m_node1.joint=j;j.m_node1.other=j.m_body2;j.m_node1.prev=null;j.m_node1.next=j.m_body1.m_jointList;if(j.m_body1.m_jointList)j.m_body1.m_jointList.prev=j.m_node1;j.m_body1.m_jointList=j.m_node1;j.m_node2.joint=j;j.m_node2.other=j.m_body1;j.m_node2.prev=null;j.m_node2.next=j.m_body2.m_jointList;if(j.m_body2.m_jointList)j.m_body2.m_jointList.prev=j.m_node2;j.m_body2.m_jointList=j.m_node2;if(def.collideConnected==false)
         {var b=def.body1.m_shapeCount<def.body2.m_shapeCount?def.body1:def.body2;for(var s=b.m_shapeList;s;s=s.m_next)
         {s.ResetProxy(this.m_broadPhase);}}
         return j;},DestroyJoint:function(j)
         {var collideConnected=j.m_collideConnected;if(j.m_prev)
         {j.m_prev.m_next=j.m_next;}
         if(j.m_next)
         {j.m_next.m_prev=j.m_prev;}
         if(j==this.m_jointList)
         {this.m_jointList=j.m_next;}
         var body1=j.m_body1;var body2=j.m_body2;body1.WakeUp();body2.WakeUp();if(j.m_node1.prev)
         {j.m_node1.prev.next=j.m_node1.next;}
         if(j.m_node1.next)
         {j.m_node1.next.prev=j.m_node1.prev;}
         if(j.m_node1==body1.m_jointList)
         {body1.m_jointList=j.m_node1.next;}
         j.m_node1.prev=null;j.m_node1.next=null;if(j.m_node2.prev)
         {j.m_node2.prev.next=j.m_node2.next;}
         if(j.m_node2.next)
         {j.m_node2.next.prev=j.m_node2.prev;}
         if(j.m_node2==body2.m_jointList)
         {body2.m_jointList=j.m_node2.next;}
         j.m_node2.prev=null;j.m_node2.next=null;b2Joint.Destroy(j,this.m_blockAllocator);--this.m_jointCount;if(collideConnected==false)
         {var b=body1.m_shapeCount<body2.m_shapeCount?body1:body2;for(var s=b.m_shapeList;s;s=s.m_next)
         {s.ResetProxy(this.m_broadPhase);}}},GetGroundBody:function(){return this.m_groundBody;},step:new b2TimeStep(),Step:function(dt,iterations){var b;var other;this.step.dt=dt;this.step.iterations=iterations;if(dt>0.0)
         {this.step.inv_dt=1.0/dt;}
         else
         {this.step.inv_dt=0.0;}
         this.m_positionIterationCount=0;this.m_contactManager.CleanContactList();this.CleanBodyList();this.m_contactManager.Collide();var island=new b2Island(this.m_bodyCount,this.m_contactCount,this.m_jointCount,this.m_stackAllocator);for(b=this.m_bodyList;b!=null;b=b.m_next)
         {b.m_flags&=~b2Body.e_islandFlag;}
         for(var c=this.m_contactList;c!=null;c=c.m_next)
         {c.m_flags&=~b2Contact.e_islandFlag;}
         for(var j=this.m_jointList;j!=null;j=j.m_next)
         {j.m_islandFlag=false;}
         var stackSize=this.m_bodyCount;var stack=new Array(this.m_bodyCount);for(var k=0;k<this.m_bodyCount;k++)
         stack[k]=null;for(var seed=this.m_bodyList;seed!=null;seed=seed.m_next)
         {if(seed.m_flags&(b2Body.e_staticFlag|b2Body.e_islandFlag|b2Body.e_sleepFlag|b2Body.e_frozenFlag))
         {continue;}
         island.Clear();var stackCount=0;stack[stackCount++]=seed;seed.m_flags|=b2Body.e_islandFlag;;while(stackCount>0)
         {b=stack[--stackCount];island.AddBody(b);b.m_flags&=~b2Body.e_sleepFlag;if(b.m_flags&b2Body.e_staticFlag)
         {continue;}
         for(var cn=b.m_contactList;cn!=null;cn=cn.next)
         {if(cn.contact.m_flags&b2Contact.e_islandFlag)
         {continue;}
         island.AddContact(cn.contact);cn.contact.m_flags|=b2Contact.e_islandFlag;other=cn.other;if(other.m_flags&b2Body.e_islandFlag)
         {continue;}
         stack[stackCount++]=other;other.m_flags|=b2Body.e_islandFlag;}
         for(var jn=b.m_jointList;jn!=null;jn=jn.next)
         {if(jn.joint.m_islandFlag==true)
         {continue;}
         island.AddJoint(jn.joint);jn.joint.m_islandFlag=true;other=jn.other;if(other.m_flags&b2Body.e_islandFlag)
         {continue;}
         stack[stackCount++]=other;other.m_flags|=b2Body.e_islandFlag;}}
         island.Solve(this.step,this.m_gravity);this.m_positionIterationCount=b2Math.b2Max(this.m_positionIterationCount,b2Island.m_positionIterationCount);if(this.m_allowSleep)
         {island.UpdateSleep(dt);}
         for(var i=0;i<island.m_bodyCount;++i)
         {b=island.m_bodies[i];if(b.m_flags&b2Body.e_staticFlag)
         {b.m_flags&=~b2Body.e_islandFlag;}
         if(b.IsFrozen()&&this.m_listener)
         {var response=this.m_listener.NotifyBoundaryViolated(b);if(response==b2WorldListener.b2_destroyBody)
         {this.DestroyBody(b);b=null;island.m_bodies[i]=null;}}}}
         this.m_broadPhase.Commit();},Query:function(aabb,shapes,maxCount){var results=new Array();var count=this.m_broadPhase.QueryAABB(aabb,results,maxCount);for(var i=0;i<count;++i)
         {shapes[i]=results[i];}
         return count;},GetBodyList:function(){return this.m_bodyList;},GetJointList:function(){return this.m_jointList;},GetContactList:function(){return this.m_contactList;},m_blockAllocator:null,m_stackAllocator:null,m_broadPhase:null,m_contactManager:new b2ContactManager(),m_bodyList:null,m_contactList:null,m_jointList:null,m_bodyCount:0,m_contactCount:0,m_jointCount:0,m_bodyDestroyList:null,m_gravity:null,m_allowSleep:null,m_groundBody:null,m_listener:null,m_filter:null,m_positionIterationCount:0};b2World.s_enablePositionCorrection=1;b2World.s_enableWarmStarting=1;
         var b2WorldListener=Class.create();b2WorldListener.prototype={NotifyJointDestroyed:function(joint){},NotifyBoundaryViolated:function(body)
         {return b2WorldListener.b2_freezeBody;},initialize:function(){}};b2WorldListener.b2_freezeBody=0;b2WorldListener.b2_destroyBody=1;
         var b2JointNode=Class.create();b2JointNode.prototype={other:null,joint:null,prev:null,next:null,initialize:function(){}}

         var b2Joint=Class.create();b2Joint.prototype={GetType:function(){return this.m_type;},GetAnchor1:function(){return null},GetAnchor2:function(){return null},GetReactionForce:function(invTimeStep){return null},GetReactionTorque:function(invTimeStep){return 0.0},GetBody1:function()
         {return this.m_body1;},GetBody2:function()
         {return this.m_body2;},GetNext:function(){return this.m_next;},GetUserData:function(){return this.m_userData;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;},PrepareVelocitySolver:function(){},SolveVelocityConstraints:function(step){},PreparePositionSolver:function(){},SolvePositionConstraints:function(){return false},m_type:0,m_prev:null,m_next:null,m_node1:new b2JointNode(),m_node2:new b2JointNode(),m_body1:null,m_body2:null,m_islandFlag:null,m_collideConnected:null,m_userData:null};b2Joint.Create=function(def,allocator){var joint=null;switch(def.type)
         {case b2Joint.e_distanceJoint:{joint=new b2DistanceJoint(def);}
         break;case b2Joint.e_mouseJoint:{joint=new b2MouseJoint(def);}
         break;case b2Joint.e_prismaticJoint:{joint=new b2PrismaticJoint(def);}
         break;case b2Joint.e_revoluteJoint:{joint=new b2RevoluteJoint(def);}
         break;case b2Joint.e_pulleyJoint:{joint=new b2PulleyJoint(def);}
         break;case b2Joint.e_gearJoint:{joint=new b2GearJoint(def);}
         break;default:break;}
         return joint;};b2Joint.Destroy=function(joint,allocator){};b2Joint.e_unknownJoint=0;b2Joint.e_revoluteJoint=1;b2Joint.e_prismaticJoint=2;b2Joint.e_distanceJoint=3;b2Joint.e_pulleyJoint=4;b2Joint.e_mouseJoint=5;b2Joint.e_gearJoint=6;b2Joint.e_inactiveLimit=0;b2Joint.e_atLowerLimit=1;b2Joint.e_atUpperLimit=2;b2Joint.e_equalLimits=3;
         var b2JointDef=Class.create();b2JointDef.prototype={initialize:function()
         {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;},type:0,userData:null,body1:null,body2:null,collideConnected:null}

         var b2DistanceJoint=Class.create();Object.extend(b2DistanceJoint.prototype,b2Joint.prototype);Object.extend(b2DistanceJoint.prototype,{initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_u=new b2Vec2();var tMat;var tX;var tY;tMat=this.m_body1.m_R;tX=def.anchorPoint1.x-this.m_body1.m_position.xY=def.anchorPoint1.y-this.m_body1.m_position.y;this.m_localAnchor1.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor1.y=tX*tMat.col2.x+tY*tMat.col2.y;tMat=this.m_body2.m_R;tX=def.anchorPoint2.x-this.m_body2.m_position.xY=def.anchorPoint2.y-this.m_body2.m_position.y;this.m_localAnchor2.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor2.y=tX*tMat.col2.x+tY*tMat.col2.yX=def.anchorPoint2.x-def.anchorPoint1.xY=def.anchorPoint2.y-def.anchorPoint1.y;this.m_length=Math.sqrt(tX*tX+tY*tY);this.m_impulse=0.0;},PrepareVelocitySolver:function(){var tMat;tMat=this.m_body1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=this.m_body2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;this.m_u.x=this.m_body2.m_position.x+r2X-this.m_body1.m_position.x-r1X;this.m_u.y=this.m_body2.m_position.y+r2Y-this.m_body1.m_position.y-r1Y;var length=Math.sqrt(this.m_u.x*this.m_u.x+this.m_u.y*this.m_u.y);if(length>b2Settings.b2_linearSlop)
         {this.m_u.Multiply(1.0/length);}
         else
         {this.m_u.SetZero();}
         var cr1u=(r1X*this.m_u.y-r1Y*this.m_u.x);var cr2u=(r2X*this.m_u.y-r2Y*this.m_u.x);this.m_mass=this.m_body1.m_invMass+this.m_body1.m_invI*cr1u*cr1u+this.m_body2.m_invMass+this.m_body2.m_invI*cr2u*cr2u;this.m_mass=1.0/this.m_mass;if(b2World.s_enableWarmStarting)
         {var PX=this.m_impulse*this.m_u.x;var PY=this.m_impulse*this.m_u.y;this.m_body1.m_linearVelocity.x-=this.m_body1.m_invMass*PX;this.m_body1.m_linearVelocity.y-=this.m_body1.m_invMass*PY;this.m_body1.m_angularVelocity-=this.m_body1.m_invI*(r1X*PY-r1Y*PX);this.m_body2.m_linearVelocity.x+=this.m_body2.m_invMass*PX;this.m_body2.m_linearVelocity.y+=this.m_body2.m_invMass*PY;this.m_body2.m_angularVelocity+=this.m_body2.m_invI*(r2X*PY-r2Y*PX);}
         else
         {this.m_impulse=0.0;}},SolveVelocityConstraints:function(step){var tMat;tMat=this.m_body1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=this.m_body2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var v1X=this.m_body1.m_linearVelocity.x+(-this.m_body1.m_angularVelocity*r1Y);var v1Y=this.m_body1.m_linearVelocity.y+(this.m_body1.m_angularVelocity*r1X);var v2X=this.m_body2.m_linearVelocity.x+(-this.m_body2.m_angularVelocity*r2Y);var v2Y=this.m_body2.m_linearVelocity.y+(this.m_body2.m_angularVelocity*r2X);var Cdot=(this.m_u.x*(v2X-v1X)+this.m_u.y*(v2Y-v1Y));var impulse=-this.m_mass*Cdot;this.m_impulse+=impulse;var PX=impulse*this.m_u.x;var PY=impulse*this.m_u.y;this.m_body1.m_linearVelocity.x-=this.m_body1.m_invMass*PX;this.m_body1.m_linearVelocity.y-=this.m_body1.m_invMass*PY;this.m_body1.m_angularVelocity-=this.m_body1.m_invI*(r1X*PY-r1Y*PX);this.m_body2.m_linearVelocity.x+=this.m_body2.m_invMass*PX;this.m_body2.m_linearVelocity.y+=this.m_body2.m_invMass*PY;this.m_body2.m_angularVelocity+=this.m_body2.m_invI*(r2X*PY-r2Y*PX);},SolvePositionConstraints:function(){var tMat;tMat=this.m_body1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=this.m_body2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var dX=this.m_body2.m_position.x+r2X-this.m_body1.m_position.x-r1X;var dY=this.m_body2.m_position.y+r2Y-this.m_body1.m_position.y-r1Y;var length=Math.sqrt(dX*dX+dY*dY);dX/=length;dY/=length;var C=length-this.m_length;C=b2Math.b2Clamp(C,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);var impulse=-this.m_mass*C;this.m_u.Set(dX,dY);var PX=impulse*this.m_u.x;var PY=impulse*this.m_u.y;this.m_body1.m_position.x-=this.m_body1.m_invMass*PX;this.m_body1.m_position.y-=this.m_body1.m_invMass*PY;this.m_body1.m_rotation-=this.m_body1.m_invI*(r1X*PY-r1Y*PX);this.m_body2.m_position.x+=this.m_body2.m_invMass*PX;this.m_body2.m_position.y+=this.m_body2.m_invMass*PY;this.m_body2.m_rotation+=this.m_body2.m_invI*(r2X*PY-r2Y*PX);this.m_body1.m_R.Set(this.m_body1.m_rotation);this.m_body2.m_R.Set(this.m_body2.m_rotation);return b2Math.b2Abs(C)<b2Settings.b2_linearSlop;},GetAnchor1:function(){return b2Math.AddVV(this.m_body1.m_position,b2Math.b2MulMV(this.m_body1.m_R,this.m_localAnchor1));},GetAnchor2:function(){return b2Math.AddVV(this.m_body2.m_position,b2Math.b2MulMV(this.m_body2.m_R,this.m_localAnchor2));},GetReactionForce:function(invTimeStep)
         {var F=new b2Vec2();F.SetV(this.m_u);F.Multiply(this.m_impulse*invTimeStep);return F;},GetReactionTorque:function(invTimeStep)
         {return 0.0;},m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_u:new b2Vec2(),m_impulse:null,m_mass:null,m_length:null});
         var b2DistanceJointDef=Class.create();Object.extend(b2DistanceJointDef.prototype,b2JointDef.prototype);Object.extend(b2DistanceJointDef.prototype,{initialize:function()
         {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.anchorPoint1=new b2Vec2();this.anchorPoint2=new b2Vec2();this.type=b2Joint.e_distanceJoint;},anchorPoint1:new b2Vec2(),anchorPoint2:new b2Vec2()});
         var b2Jacobian=Class.create();b2Jacobian.prototype={linear1:new b2Vec2(),angular1:null,linear2:new b2Vec2(),angular2:null,SetZero:function(){this.linear1.SetZero();this.angular1=0.0;this.linear2.SetZero();this.angular2=0.0;},Set:function(x1,a1,x2,a2){this.linear1.SetV(x1);this.angular1=a1;this.linear2.SetV(x2);this.angular2=a2;},Compute:function(x1,a1,x2,a2){return(this.linear1.x*x1.x+this.linear1.y*x1.y)+this.angular1*a1+(this.linear2.x*x2.x+this.linear2.y*x2.y)+this.angular2*a2;},initialize:function(){this.linear1=new b2Vec2();this.linear2=new b2Vec2();}};
         var b2GearJoint=Class.create();Object.extend(b2GearJoint.prototype,b2Joint.prototype);Object.extend(b2GearJoint.prototype,{GetAnchor1:function(){var tMat=this.m_body1.m_R;return new b2Vec2(this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y),this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y));},GetAnchor2:function(){var tMat=this.m_body2.m_R;return new b2Vec2(this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y),this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y));},GetReactionForce:function(invTimeStep){return new b2Vec2();},GetReactionTorque:function(invTimeStep){return 0.0;},GetRatio:function(){return this.m_ratio;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_groundAnchor1=new b2Vec2();this.m_groundAnchor2=new b2Vec2();this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_J=new b2Jacobian();this.m_revolute1=null;this.m_prismatic1=null;this.m_revolute2=null;this.m_prismatic2=null;var coordinate1;var coordinate2;this.m_ground1=def.joint1.m_body1;this.m_body1=def.joint1.m_body2;if(def.joint1.m_type==b2Joint.e_revoluteJoint)
         {this.m_revolute1=def.joint1;this.m_groundAnchor1.SetV(this.m_revolute1.m_localAnchor1);this.m_localAnchor1.SetV(this.m_revolute1.m_localAnchor2);coordinate1=this.m_revolute1.GetJointAngle();}
         else
         {this.m_prismatic1=def.joint1;this.m_groundAnchor1.SetV(this.m_prismatic1.m_localAnchor1);this.m_localAnchor1.SetV(this.m_prismatic1.m_localAnchor2);coordinate1=this.m_prismatic1.GetJointTranslation();}
         this.m_ground2=def.joint2.m_body1;this.m_body2=def.joint2.m_body2;if(def.joint2.m_type==b2Joint.e_revoluteJoint)
         {this.m_revolute2=def.joint2;this.m_groundAnchor2.SetV(this.m_revolute2.m_localAnchor1);this.m_localAnchor2.SetV(this.m_revolute2.m_localAnchor2);coordinate2=this.m_revolute2.GetJointAngle();}
         else
         {this.m_prismatic2=def.joint2;this.m_groundAnchor2.SetV(this.m_prismatic2.m_localAnchor1);this.m_localAnchor2.SetV(this.m_prismatic2.m_localAnchor2);coordinate2=this.m_prismatic2.GetJointTranslation();}
         this.m_ratio=def.ratio;this.m_constant=coordinate1+this.m_ratio*coordinate2;this.m_impulse=0.0;},PrepareVelocitySolver:function(){var g1=this.m_ground1;var g2=this.m_ground2;var b1=this.m_body1;var b2=this.m_body2;var ugX;var ugY;var rX;var rY;var tMat;var tVec;var crug;var K=0.0;this.m_J.SetZero();if(this.m_revolute1)
         {this.m_J.angular1=-1.0;K+=b1.m_invI;}
         else
         {tMat=g1.m_R;tVec=this.m_prismatic1.m_localXAxis1;ugX=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;ugY=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tMat=b1.m_R;rX=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;rY=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;crug=rX*ugY-rY*ugX;this.m_J.linear1.Set(-ugX,-ugY);this.m_J.angular1=-crug;K+=b1.m_invMass+b1.m_invI*crug*crug;}
         if(this.m_revolute2)
         {this.m_J.angular2=-this.m_ratio;K+=this.m_ratio*this.m_ratio*b2.m_invI;}
         else
         {tMat=g2.m_R;tVec=this.m_prismatic2.m_localXAxis1;ugX=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;ugY=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tMat=b2.m_R;rX=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;rY=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;crug=rX*ugY-rY*ugX;this.m_J.linear2.Set(-this.m_ratio*ugX,-this.m_ratio*ugY);this.m_J.angular2=-this.m_ratio*crug;K+=this.m_ratio*this.m_ratio*(b2.m_invMass+b2.m_invI*crug*crug);}
         this.m_mass=1.0/K;b1.m_linearVelocity.x+=b1.m_invMass*this.m_impulse*this.m_J.linear1.x;b1.m_linearVelocity.y+=b1.m_invMass*this.m_impulse*this.m_J.linear1.y;b1.m_angularVelocity+=b1.m_invI*this.m_impulse*this.m_J.angular1;b2.m_linearVelocity.x+=b2.m_invMass*this.m_impulse*this.m_J.linear2.x;b2.m_linearVelocity.y+=b2.m_invMass*this.m_impulse*this.m_J.linear2.y;b2.m_angularVelocity+=b2.m_invI*this.m_impulse*this.m_J.angular2;},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var Cdot=this.m_J.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity);var impulse=-this.m_mass*Cdot;this.m_impulse+=impulse;b1.m_linearVelocity.x+=b1.m_invMass*impulse*this.m_J.linear1.x;b1.m_linearVelocity.y+=b1.m_invMass*impulse*this.m_J.linear1.y;b1.m_angularVelocity+=b1.m_invI*impulse*this.m_J.angular1;b2.m_linearVelocity.x+=b2.m_invMass*impulse*this.m_J.linear2.x;b2.m_linearVelocity.y+=b2.m_invMass*impulse*this.m_J.linear2.y;b2.m_angularVelocity+=b2.m_invI*impulse*this.m_J.angular2;},SolvePositionConstraints:function(){var linearError=0.0;var b1=this.m_body1;var b2=this.m_body2;var coordinate1;var coordinate2;if(this.m_revolute1)
         {coordinate1=this.m_revolute1.GetJointAngle();}
         else
         {coordinate1=this.m_prismatic1.GetJointTranslation();}
         if(this.m_revolute2)
         {coordinate2=this.m_revolute2.GetJointAngle();}
         else
         {coordinate2=this.m_prismatic2.GetJointTranslation();}
         var C=this.m_constant-(coordinate1+this.m_ratio*coordinate2);var impulse=-this.m_mass*C;b1.m_position.x+=b1.m_invMass*impulse*this.m_J.linear1.x;b1.m_position.y+=b1.m_invMass*impulse*this.m_J.linear1.y;b1.m_rotation+=b1.m_invI*impulse*this.m_J.angular1;b2.m_position.x+=b2.m_invMass*impulse*this.m_J.linear2.x;b2.m_position.y+=b2.m_invMass*impulse*this.m_J.linear2.y;b2.m_rotation+=b2.m_invI*impulse*this.m_J.angular2;b1.m_R.Set(b1.m_rotation);b2.m_R.Set(b2.m_rotation);return linearError<b2Settings.b2_linearSlop;},m_ground1:null,m_ground2:null,m_revolute1:null,m_prismatic1:null,m_revolute2:null,m_prismatic2:null,m_groundAnchor1:new b2Vec2(),m_groundAnchor2:new b2Vec2(),m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_J:new b2Jacobian(),m_constant:null,m_ratio:null,m_mass:null,m_impulse:null});
         var b2GearJointDef=Class.create();Object.extend(b2GearJointDef.prototype,b2JointDef.prototype);Object.extend(b2GearJointDef.prototype,{initialize:function()
         {this.type=b2Joint.e_gearJoint;this.joint1=null;this.joint2=null;this.ratio=1.0;},joint1:null,joint2:null,ratio:null});
         var b2MouseJoint=Class.create();Object.extend(b2MouseJoint.prototype,b2Joint.prototype);Object.extend(b2MouseJoint.prototype,{GetAnchor1:function(){return this.m_target;},GetAnchor2:function(){var tVec=b2Math.b2MulMV(this.m_body2.m_R,this.m_localAnchor);tVec.Add(this.m_body2.m_position);return tVec;},GetReactionForce:function(invTimeStep)
         {var F=new b2Vec2();F.SetV(this.m_impulse);F.Multiply(invTimeStep);return F;},GetReactionTorque:function(invTimeStep)
         {return 0.0;},SetTarget:function(target){this.m_body2.WakeUp();this.m_target=target;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.K=new b2Mat22();this.K1=new b2Mat22();this.K2=new b2Mat22();this.m_localAnchor=new b2Vec2();this.m_target=new b2Vec2();this.m_impulse=new b2Vec2();this.m_ptpMass=new b2Mat22();this.m_C=new b2Vec2();this.m_target.SetV(def.target);var tX=this.m_target.x-this.m_body2.m_position.x;var tY=this.m_target.y-this.m_body2.m_position.y;this.m_localAnchor.x=(tX*this.m_body2.m_R.col1.x+tY*this.m_body2.m_R.col1.y);this.m_localAnchor.y=(tX*this.m_body2.m_R.col2.x+tY*this.m_body2.m_R.col2.y);this.m_maxForce=def.maxForce;this.m_impulse.SetZero();var mass=this.m_body2.m_mass;var omega=2.0*b2Settings.b2_pi*def.frequencyHz;var d=2.0*mass*def.dampingRatio*omega;var k=mass*omega*omega;this.m_gamma=1.0/(d+def.timeStep*k);this.m_beta=def.timeStep*k/(d+def.timeStep*k);},K:new b2Mat22(),K1:new b2Mat22(),K2:new b2Mat22(),PrepareVelocitySolver:function(){var b=this.m_body2;var tMat;tMat=b.m_R;var rX=tMat.col1.x*this.m_localAnchor.x+tMat.col2.x*this.m_localAnchor.y;var rY=tMat.col1.y*this.m_localAnchor.x+tMat.col2.y*this.m_localAnchor.y;var invMass=b.m_invMass;var invI=b.m_invI;this.K1.col1.x=invMass;this.K1.col2.x=0.0;this.K1.col1.y=0.0;this.K1.col2.y=invMass;this.K2.col1.x=invI*rY*rY;this.K2.col2.x=-invI*rX*rY;this.K2.col1.y=-invI*rX*rY;this.K2.col2.y=invI*rX*rX;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.col1.x+=this.m_gamma;this.K.col2.y+=this.m_gamma;this.K.Invert(this.m_ptpMass);this.m_C.x=b.m_position.x+rX-this.m_target.x;this.m_C.y=b.m_position.y+rY-this.m_target.y;b.m_angularVelocity*=0.98;var PX=this.m_impulse.x;var PY=this.m_impulse.y;b.m_linearVelocity.x+=invMass*PX;b.m_linearVelocity.y+=invMass*PY;b.m_angularVelocity+=invI*(rX*PY-rY*PX);},SolveVelocityConstraints:function(step){var body=this.m_body2;var tMat;tMat=body.m_R;var rX=tMat.col1.x*this.m_localAnchor.x+tMat.col2.x*this.m_localAnchor.y;var rY=tMat.col1.y*this.m_localAnchor.x+tMat.col2.y*this.m_localAnchor.y;var CdotX=body.m_linearVelocity.x+(-body.m_angularVelocity*rY);var CdotY=body.m_linearVelocity.y+(body.m_angularVelocity*rX);tMat=this.m_ptpMass;var tX=CdotX+(this.m_beta*step.inv_dt)*this.m_C.x+this.m_gamma*this.m_impulse.x;var tY=CdotY+(this.m_beta*step.inv_dt)*this.m_C.y+this.m_gamma*this.m_impulse.y;var impulseX=-(tMat.col1.x*tX+tMat.col2.x*tY);var impulseY=-(tMat.col1.y*tX+tMat.col2.y*tY);var oldImpulseX=this.m_impulse.x;var oldImpulseY=this.m_impulse.y;this.m_impulse.x+=impulseX;this.m_impulse.y+=impulseY;var length=this.m_impulse.Length();if(length>step.dt*this.m_maxForce)
         {this.m_impulse.Multiply(step.dt*this.m_maxForce/length);}
         impulseX=this.m_impulse.x-oldImpulseX;impulseY=this.m_impulse.y-oldImpulseY;body.m_linearVelocity.x+=body.m_invMass*impulseX;body.m_linearVelocity.y+=body.m_invMass*impulseY;body.m_angularVelocity+=body.m_invI*(rX*impulseY-rY*impulseX);},SolvePositionConstraints:function(){return true;},m_localAnchor:new b2Vec2(),m_target:new b2Vec2(),m_impulse:new b2Vec2(),m_ptpMass:new b2Mat22(),m_C:new b2Vec2(),m_maxForce:null,m_beta:null,m_gamma:null});
         var b2MouseJointDef=Class.create();Object.extend(b2MouseJointDef.prototype,b2JointDef.prototype);Object.extend(b2MouseJointDef.prototype,{initialize:function()
         {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.target=new b2Vec2();this.type=b2Joint.e_mouseJoint;this.maxForce=0.0;this.frequencyHz=5.0;this.dampingRatio=0.7;this.timeStep=1.0/60.0;},target:new b2Vec2(),maxForce:null,frequencyHz:null,dampingRatio:null,timeStep:null});
         var b2PrismaticJoint=Class.create();Object.extend(b2PrismaticJoint.prototype,b2Joint.prototype);Object.extend(b2PrismaticJoint.prototype,{GetAnchor1:function(){var b1=this.m_body1;var tVec=new b2Vec2();tVec.SetV(this.m_localAnchor1);tVec.MulM(b1.m_R);tVec.Add(b1.m_position);return tVec;},GetAnchor2:function(){var b2=this.m_body2;var tVec=new b2Vec2();tVec.SetV(this.m_localAnchor2);tVec.MulM(b2.m_R);tVec.Add(b2.m_position);return tVec;},GetJointTranslation:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var dX=p2X-p1X;var dY=p2Y-p1Y;tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;var translation=ax1X*dX+ax1Y*dY;return translation;},GetJointSpeed:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var dX=p2X-p1X;var dY=p2Y-p1Y;tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;var v1=b1.m_linearVelocity;var v2=b2.m_linearVelocity;var w1=b1.m_angularVelocity;var w2=b2.m_angularVelocity;var speed=(dX*(-w1*ax1Y)+dY*(w1*ax1X))+(ax1X*(((v2.x+(-w2*r2Y))-v1.x)-(-w1*r1Y))+ax1Y*(((v2.y+(w2*r2X))-v1.y)-(w1*r1X)));return speed;},GetMotorForce:function(invTimeStep){return invTimeStep*this.m_motorImpulse;},SetMotorSpeed:function(speed)
         {this.m_motorSpeed=speed;},SetMotorForce:function(force)
         {this.m_maxMotorForce=force;},GetReactionForce:function(invTimeStep)
         {var tImp=invTimeStep*this.m_limitImpulse;var tMat;tMat=this.m_body1.m_R;var ax1X=tImp*(tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y);var ax1Y=tImp*(tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y);var ay1X=tImp*(tMat.col1.x*this.m_localYAxis1.x+tMat.col2.x*this.m_localYAxis1.y);var ay1Y=tImp*(tMat.col1.y*this.m_localYAxis1.x+tMat.col2.y*this.m_localYAxis1.y);return new b2Vec2(ax1X+ay1X,ax1Y+ay1Y);},GetReactionTorque:function(invTimeStep)
         {return invTimeStep*this.m_angularImpulse;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_localXAxis1=new b2Vec2();this.m_localYAxis1=new b2Vec2();this.m_linearJacobian=new b2Jacobian();this.m_motorJacobian=new b2Jacobian();var tMat;var tX;var tY;tMat=this.m_body1.m_R;tX=(def.anchorPoint.x-this.m_body1.m_position.x)Y=(def.anchorPoint.y-this.m_body1.m_position.y);this.m_localAnchor1.Set((tX*tMat.col1.x+tY*tMat.col1.y),(tX*tMat.col2.x+tY*tMat.col2.y));tMat=this.m_body2.m_R;tX=(def.anchorPoint.x-this.m_body2.m_position.x)Y=(def.anchorPoint.y-this.m_body2.m_position.y);this.m_localAnchor2.Set((tX*tMat.col1.x+tY*tMat.col1.y),(tX*tMat.col2.x+tY*tMat.col2.y));tMat=this.m_body1.m_R;tX=def.axis.xY=def.axis.y;this.m_localXAxis1.Set((tX*tMat.col1.x+tY*tMat.col1.y),(tX*tMat.col2.x+tY*tMat.col2.y));this.m_localYAxis1.x=-this.m_localXAxis1.y;this.m_localYAxis1.y=this.m_localXAxis1.x;this.m_initialAngle=this.m_body2.m_rotation-this.m_body1.m_rotation;this.m_linearJacobian.SetZero();this.m_linearMass=0.0;this.m_linearImpulse=0.0;this.m_angularMass=0.0;this.m_angularImpulse=0.0;this.m_motorJacobian.SetZero();this.m_motorMass=0.0;this.m_motorImpulse=0.0;this.m_limitImpulse=0.0;this.m_limitPositionImpulse=0.0;this.m_lowerTranslation=def.lowerTranslation;this.m_upperTranslation=def.upperTranslation;this.m_maxMotorForce=def.motorForce;this.m_motorSpeed=def.motorSpeed;this.m_enableLimit=def.enableLimit;this.m_enableMotor=def.enableMotor;},PrepareVelocitySolver:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;tMat=b1.m_R;var ay1X=tMat.col1.x*this.m_localYAxis1.x+tMat.col2.x*this.m_localYAxis1.y;var ay1Y=tMat.col1.y*this.m_localYAxis1.x+tMat.col2.y*this.m_localYAxis1.y;var eX=b2.m_position.x+r2X-b1.m_position.x;var eY=b2.m_position.y+r2Y-b1.m_position.y;this.m_linearJacobian.linear1.x=-ay1X;this.m_linearJacobian.linear1.y=-ay1Y;this.m_linearJacobian.linear2.x=ay1X;this.m_linearJacobian.linear2.y=ay1Y;this.m_linearJacobian.angular1=-(eX*ay1Y-eY*ay1X);this.m_linearJacobian.angular2=r2X*ay1Y-r2Y*ay1X;this.m_linearMass=invMass1+invI1*this.m_linearJacobian.angular1*this.m_linearJacobian.angular1+
         invMass2+invI2*this.m_linearJacobian.angular2*this.m_linearJacobian.angular2;this.m_linearMass=1.0/this.m_linearMass;this.m_angularMass=1.0/(invI1+invI2);if(this.m_enableLimit||this.m_enableMotor)
         {tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;this.m_motorJacobian.linear1.x=-ax1X;this.m_motorJacobian.linear1.y=-ax1Y;this.m_motorJacobian.linear2.x=ax1X;this.m_motorJacobian.linear2.y=ax1Y;this.m_motorJacobian.angular1=-(eX*ax1Y-eY*ax1X);this.m_motorJacobian.angular2=r2X*ax1Y-r2Y*ax1X;this.m_motorMass=invMass1+invI1*this.m_motorJacobian.angular1*this.m_motorJacobian.angular1+
         invMass2+invI2*this.m_motorJacobian.angular2*this.m_motorJacobian.angular2;this.m_motorMass=1.0/this.m_motorMass;if(this.m_enableLimit)
         {var dX=eX-r1X;var dY=eY-r1Y;var jointTranslation=ax1X*dX+ax1Y*dY;if(b2Math.b2Abs(this.m_upperTranslation-this.m_lowerTranslation)<2.0*b2Settings.b2_linearSlop)
         {this.m_limitState=b2Joint.e_equalLimits;}
         else if(jointTranslation<=this.m_lowerTranslation)
         {if(this.m_limitState!=b2Joint.e_atLowerLimit)
         {this.m_limitImpulse=0.0;}
         this.m_limitState=b2Joint.e_atLowerLimit;}
         else if(jointTranslation>=this.m_upperTranslation)
         {if(this.m_limitState!=b2Joint.e_atUpperLimit)
         {this.m_limitImpulse=0.0;}
         this.m_limitState=b2Joint.e_atUpperLimit;}
         else
         {this.m_limitState=b2Joint.e_inactiveLimit;this.m_limitImpulse=0.0;}}}
         if(this.m_enableMotor==false)
         {this.m_motorImpulse=0.0;}
         if(this.m_enableLimit==false)
         {this.m_limitImpulse=0.0;}
         if(b2World.s_enableWarmStarting)
         {var P1X=this.m_linearImpulse*this.m_linearJacobian.linear1.x+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear1.x;var P1Y=this.m_linearImpulse*this.m_linearJacobian.linear1.y+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear1.y;var P2X=this.m_linearImpulse*this.m_linearJacobian.linear2.x+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear2.x;var P2Y=this.m_linearImpulse*this.m_linearJacobian.linear2.y+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear2.y;var L1=this.m_linearImpulse*this.m_linearJacobian.angular1-this.m_angularImpulse+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.angular1;var L2=this.m_linearImpulse*this.m_linearJacobian.angular2+this.m_angularImpulse+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.angular2;b1.m_linearVelocity.x+=invMass1*P1X;b1.m_linearVelocity.y+=invMass1*P1Y;b1.m_angularVelocity+=invI1*L1;b2.m_linearVelocity.x+=invMass2*P2X;b2.m_linearVelocity.y+=invMass2*P2Y;b2.m_angularVelocity+=invI2*L2;}
         else
         {this.m_linearImpulse=0.0;this.m_angularImpulse=0.0;this.m_limitImpulse=0.0;this.m_motorImpulse=0.0;}
         this.m_limitPositionImpulse=0.0;},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;var oldLimitImpulse;var linearCdot=this.m_linearJacobian.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity);var linearImpulse=-this.m_linearMass*linearCdot;this.m_linearImpulse+=linearImpulse;b1.m_linearVelocity.x+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.x;b1.m_linearVelocity.y+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.y;b1.m_angularVelocity+=invI1*linearImpulse*this.m_linearJacobian.angular1;b2.m_linearVelocity.x+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.x;b2.m_linearVelocity.y+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.y;b2.m_angularVelocity+=invI2*linearImpulse*this.m_linearJacobian.angular2;var angularCdot=b2.m_angularVelocity-b1.m_angularVelocity;var angularImpulse=-this.m_angularMass*angularCdot;this.m_angularImpulse+=angularImpulse;b1.m_angularVelocity-=invI1*angularImpulse;b2.m_angularVelocity+=invI2*angularImpulse;if(this.m_enableMotor&&this.m_limitState!=b2Joint.e_equalLimits)
         {var motorCdot=this.m_motorJacobian.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity)-this.m_motorSpeed;var motorImpulse=-this.m_motorMass*motorCdot;var oldMotorImpulse=this.m_motorImpulse;this.m_motorImpulse=b2Math.b2Clamp(this.m_motorImpulse+motorImpulse,-step.dt*this.m_maxMotorForce,step.dt*this.m_maxMotorForce);motorImpulse=this.m_motorImpulse-oldMotorImpulse;b1.m_linearVelocity.x+=(invMass1*motorImpulse)*this.m_motorJacobian.linear1.x;b1.m_linearVelocity.y+=(invMass1*motorImpulse)*this.m_motorJacobian.linear1.y;b1.m_angularVelocity+=invI1*motorImpulse*this.m_motorJacobian.angular1;b2.m_linearVelocity.x+=(invMass2*motorImpulse)*this.m_motorJacobian.linear2.x;b2.m_linearVelocity.y+=(invMass2*motorImpulse)*this.m_motorJacobian.linear2.y;b2.m_angularVelocity+=invI2*motorImpulse*this.m_motorJacobian.angular2;}
         if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)
         {var limitCdot=this.m_motorJacobian.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity);var limitImpulse=-this.m_motorMass*limitCdot;if(this.m_limitState==b2Joint.e_equalLimits)
         {this.m_limitImpulse+=limitImpulse;}
         else if(this.m_limitState==b2Joint.e_atLowerLimit)
         {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Max(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}
         else if(this.m_limitState==b2Joint.e_atUpperLimit)
         {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Min(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}
         b1.m_linearVelocity.x+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.x;b1.m_linearVelocity.y+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.y;b1.m_angularVelocity+=invI1*limitImpulse*this.m_motorJacobian.angular1;b2.m_linearVelocity.x+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.x;b2.m_linearVelocity.y+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.y;b2.m_angularVelocity+=invI2*limitImpulse*this.m_motorJacobian.angular2;}},SolvePositionConstraints:function(){var limitC;var oldLimitImpulse;var b1=this.m_body1;var b2=this.m_body2;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var dX=p2X-p1X;var dY=p2Y-p1Y;tMat=b1.m_R;var ay1X=tMat.col1.x*this.m_localYAxis1.x+tMat.col2.x*this.m_localYAxis1.y;var ay1Y=tMat.col1.y*this.m_localYAxis1.x+tMat.col2.y*this.m_localYAxis1.y;var linearC=ay1X*dX+ay1Y*dY;linearC=b2Math.b2Clamp(linearC,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);var linearImpulse=-this.m_linearMass*linearC;b1.m_position.x+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.x;b1.m_position.y+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.y;b1.m_rotation+=invI1*linearImpulse*this.m_linearJacobian.angular1;b2.m_position.x+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.x;b2.m_position.y+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.y;b2.m_rotation+=invI2*linearImpulse*this.m_linearJacobian.angular2;var positionError=b2Math.b2Abs(linearC);var angularC=b2.m_rotation-b1.m_rotation-this.m_initialAngle;angularC=b2Math.b2Clamp(angularC,-b2Settings.b2_maxAngularCorrection,b2Settings.b2_maxAngularCorrection);var angularImpulse=-this.m_angularMass*angularC;b1.m_rotation-=b1.m_invI*angularImpulse;b1.m_R.Set(b1.m_rotation);b2.m_rotation+=b2.m_invI*angularImpulse;b2.m_R.Set(b2.m_rotation);var angularError=b2Math.b2Abs(angularC);if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)
         {tMat=b1.m_R;r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;p1X=b1.m_position.x+r1X;p1Y=b1.m_position.y+r1Y;p2X=b2.m_position.x+r2X;p2Y=b2.m_position.y+r2Y;dX=p2X-p1X;dY=p2Y-p1Y;tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;var translation=(ax1X*dX+ax1Y*dY);var limitImpulse=0.0;if(this.m_limitState==b2Joint.e_equalLimits)
         {limitC=b2Math.b2Clamp(translation,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);limitImpulse=-this.m_motorMass*limitC;positionError=b2Math.b2Max(positionError,b2Math.b2Abs(angularC));}
         else if(this.m_limitState==b2Joint.e_atLowerLimit)
         {limitC=translation-this.m_lowerTranslation;positionError=b2Math.b2Max(positionError,-limitC);limitC=b2Math.b2Clamp(limitC+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Max(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}
         else if(this.m_limitState==b2Joint.e_atUpperLimit)
         {limitC=translation-this.m_upperTranslation;positionError=b2Math.b2Max(positionError,limitC);limitC=b2Math.b2Clamp(limitC-b2Settings.b2_linearSlop,0.0,b2Settings.b2_maxLinearCorrection);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Min(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}
         b1.m_position.x+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.x;b1.m_position.y+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.y;b1.m_rotation+=invI1*limitImpulse*this.m_motorJacobian.angular1;b1.m_R.Set(b1.m_rotation);b2.m_position.x+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.x;b2.m_position.y+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.y;b2.m_rotation+=invI2*limitImpulse*this.m_motorJacobian.angular2;b2.m_R.Set(b2.m_rotation);}
         return positionError<=b2Settings.b2_linearSlop&&angularError<=b2Settings.b2_angularSlop;},m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_localXAxis1:new b2Vec2(),m_localYAxis1:new b2Vec2(),m_initialAngle:null,m_linearJacobian:new b2Jacobian(),m_linearMass:null,m_linearImpulse:null,m_angularMass:null,m_angularImpulse:null,m_motorJacobian:new b2Jacobian(),m_motorMass:null,m_motorImpulse:null,m_limitImpulse:null,m_limitPositionImpulse:null,m_lowerTranslation:null,m_upperTranslation:null,m_maxMotorForce:null,m_motorSpeed:null,m_enableLimit:null,m_enableMotor:null,m_limitState:0});
         var b2PrismaticJointDef=Class.create();Object.extend(b2PrismaticJointDef.prototype,b2JointDef.prototype);Object.extend(b2PrismaticJointDef.prototype,{initialize:function()
         {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.type=b2Joint.e_prismaticJoint;this.anchorPoint=new b2Vec2(0.0,0.0);this.axis=new b2Vec2(0.0,0.0);this.lowerTranslation=0.0;this.upperTranslation=0.0;this.motorForce=0.0;this.motorSpeed=0.0;this.enableLimit=false;this.enableMotor=false;},anchorPoint:null,axis:null,lowerTranslation:null,upperTranslation:null,motorForce:null,motorSpeed:null,enableLimit:null,enableMotor:null});
         var b2PulleyJoint=Class.create();Object.extend(b2PulleyJoint.prototype,b2Joint.prototype);Object.extend(b2PulleyJoint.prototype,{GetAnchor1:function(){var tMat=this.m_body1.m_R;return new b2Vec2(this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y),this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y));},GetAnchor2:function(){var tMat=this.m_body2.m_R;return new b2Vec2(this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y),this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y));},GetGroundPoint1:function(){return new b2Vec2(this.m_ground.m_position.x+this.m_groundAnchor1.x,this.m_ground.m_position.y+this.m_groundAnchor1.y);},GetGroundPoint2:function(){return new b2Vec2(this.m_ground.m_position.x+this.m_groundAnchor2.x,this.m_ground.m_position.y+this.m_groundAnchor2.y);},GetReactionForce:function(invTimeStep){return new b2Vec2();},GetReactionTorque:function(invTimeStep){return 0.0;},GetLength1:function(){var tMat;tMat=this.m_body1.m_R;var pX=this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y);var pY=this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y);var dX=pX-(this.m_ground.m_position.x+this.m_groundAnchor1.x);var dY=pY-(this.m_ground.m_position.y+this.m_groundAnchor1.y);return Math.sqrt(dX*dX+dY*dY);},GetLength2:function(){var tMat;tMat=this.m_body2.m_R;var pX=this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y);var pY=this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y);var dX=pX-(this.m_ground.m_position.x+this.m_groundAnchor2.x);var dY=pY-(this.m_ground.m_position.y+this.m_groundAnchor2.y);return Math.sqrt(dX*dX+dY*dY);},GetRatio:function(){return this.m_ratio;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_groundAnchor1=new b2Vec2();this.m_groundAnchor2=new b2Vec2();this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_u1=new b2Vec2();this.m_u2=new b2Vec2();var tMat;var tX;var tY;this.m_ground=this.m_body1.m_world.m_groundBody;this.m_groundAnchor1.x=def.groundPoint1.x-this.m_ground.m_position.x;this.m_groundAnchor1.y=def.groundPoint1.y-this.m_ground.m_position.y;this.m_groundAnchor2.x=def.groundPoint2.x-this.m_ground.m_position.x;this.m_groundAnchor2.y=def.groundPoint2.y-this.m_ground.m_position.y;tMat=this.m_body1.m_R;tX=def.anchorPoint1.x-this.m_body1.m_position.xY=def.anchorPoint1.y-this.m_body1.m_position.y;this.m_localAnchor1.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor1.y=tX*tMat.col2.x+tY*tMat.col2.y;tMat=this.m_body2.m_R;tX=def.anchorPoint2.x-this.m_body2.m_position.xY=def.anchorPoint2.y-this.m_body2.m_position.y;this.m_localAnchor2.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor2.y=tX*tMat.col2.x+tY*tMat.col2.y;this.m_ratio=def.ratio;tX=def.groundPoint1.x-def.anchorPoint1.xY=def.groundPoint1.y-def.anchorPoint1.y;var d1Len=Math.sqrt(tX*tX+tY*tY)X=def.groundPoint2.x-def.anchorPoint2.xY=def.groundPoint2.y-def.anchorPoint2.y;var d2Len=Math.sqrt(tX*tX+tY*tY);var length1=b2Math.b2Max(0.5*b2PulleyJoint.b2_minPulleyLength,d1Len);var length2=b2Math.b2Max(0.5*b2PulleyJoint.b2_minPulleyLength,d2Len);this.m_constant=length1+this.m_ratio*length2;this.m_maxLength1=b2Math.b2Clamp(def.maxLength1,length1,this.m_constant-this.m_ratio*b2PulleyJoint.b2_minPulleyLength);this.m_maxLength2=b2Math.b2Clamp(def.maxLength2,length2,(this.m_constant-b2PulleyJoint.b2_minPulleyLength)/this.m_ratio);this.m_pulleyImpulse=0.0;this.m_limitImpulse1=0.0;this.m_limitImpulse2=0.0;},PrepareVelocitySolver:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var s1X=this.m_ground.m_position.x+this.m_groundAnchor1.x;var s1Y=this.m_ground.m_position.y+this.m_groundAnchor1.y;var s2X=this.m_ground.m_position.x+this.m_groundAnchor2.x;var s2Y=this.m_ground.m_position.y+this.m_groundAnchor2.y;this.m_u1.Set(p1X-s1X,p1Y-s1Y);this.m_u2.Set(p2X-s2X,p2Y-s2Y);var length1=this.m_u1.Length();var length2=this.m_u2.Length();if(length1>b2Settings.b2_linearSlop)
         {this.m_u1.Multiply(1.0/length1);}
         else
         {this.m_u1.SetZero();}
         if(length2>b2Settings.b2_linearSlop)
         {this.m_u2.Multiply(1.0/length2);}
         else
         {this.m_u2.SetZero();}
         if(length1<this.m_maxLength1)
         {this.m_limitState1=b2Joint.e_inactiveLimit;this.m_limitImpulse1=0.0;}
         else
         {this.m_limitState1=b2Joint.e_atUpperLimit;this.m_limitPositionImpulse1=0.0;}
         if(length2<this.m_maxLength2)
         {this.m_limitState2=b2Joint.e_inactiveLimit;this.m_limitImpulse2=0.0;}
         else
         {this.m_limitState2=b2Joint.e_atUpperLimit;this.m_limitPositionImpulse2=0.0;}
         var cr1u1=r1X*this.m_u1.y-r1Y*this.m_u1.x;var cr2u2=r2X*this.m_u2.y-r2Y*this.m_u2.x;this.m_limitMass1=b1.m_invMass+b1.m_invI*cr1u1*cr1u1;this.m_limitMass2=b2.m_invMass+b2.m_invI*cr2u2*cr2u2;this.m_pulleyMass=this.m_limitMass1+this.m_ratio*this.m_ratio*this.m_limitMass2;this.m_limitMass1=1.0/this.m_limitMass1;this.m_limitMass2=1.0/this.m_limitMass2;this.m_pulleyMass=1.0/this.m_pulleyMass;var P1X=(-this.m_pulleyImpulse-this.m_limitImpulse1)*this.m_u1.x;var P1Y=(-this.m_pulleyImpulse-this.m_limitImpulse1)*this.m_u1.y;var P2X=(-this.m_ratio*this.m_pulleyImpulse-this.m_limitImpulse2)*this.m_u2.x;var P2Y=(-this.m_ratio*this.m_pulleyImpulse-this.m_limitImpulse2)*this.m_u2.y;b1.m_linearVelocity.x+=b1.m_invMass*P1X;b1.m_linearVelocity.y+=b1.m_invMass*P1Y;b1.m_angularVelocity+=b1.m_invI*(r1X*P1Y-r1Y*P1X);b2.m_linearVelocity.x+=b2.m_invMass*P2X;b2.m_linearVelocity.y+=b2.m_invMass*P2Y;b2.m_angularVelocity+=b2.m_invI*(r2X*P2Y-r2Y*P2X);},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var v1X;var v1Y;var v2X;var v2Y;var P1X;var P1Y;var P2X;var P2Y;var Cdot;var impulse;var oldLimitImpulse;v1X=b1.m_linearVelocity.x+(-b1.m_angularVelocity*r1Y);v1Y=b1.m_linearVelocity.y+(b1.m_angularVelocity*r1X);v2X=b2.m_linearVelocity.x+(-b2.m_angularVelocity*r2Y);v2Y=b2.m_linearVelocity.y+(b2.m_angularVelocity*r2X);Cdot=-(this.m_u1.x*v1X+this.m_u1.y*v1Y)-this.m_ratio*(this.m_u2.x*v2X+this.m_u2.y*v2Y);impulse=-this.m_pulleyMass*Cdot;this.m_pulleyImpulse+=impulse;P1X=-impulse*this.m_u1.x;P1Y=-impulse*this.m_u1.y;P2X=-this.m_ratio*impulse*this.m_u2.x;P2Y=-this.m_ratio*impulse*this.m_u2.y;b1.m_linearVelocity.x+=b1.m_invMass*P1X;b1.m_linearVelocity.y+=b1.m_invMass*P1Y;b1.m_angularVelocity+=b1.m_invI*(r1X*P1Y-r1Y*P1X);b2.m_linearVelocity.x+=b2.m_invMass*P2X;b2.m_linearVelocity.y+=b2.m_invMass*P2Y;b2.m_angularVelocity+=b2.m_invI*(r2X*P2Y-r2Y*P2X);if(this.m_limitState1==b2Joint.e_atUpperLimit)
         {v1X=b1.m_linearVelocity.x+(-b1.m_angularVelocity*r1Y);v1Y=b1.m_linearVelocity.y+(b1.m_angularVelocity*r1X);Cdot=-(this.m_u1.x*v1X+this.m_u1.y*v1Y);impulse=-this.m_limitMass1*Cdot;oldLimitImpulse=this.m_limitImpulse1;this.m_limitImpulse1=b2Math.b2Max(0.0,this.m_limitImpulse1+impulse);impulse=this.m_limitImpulse1-oldLimitImpulse;P1X=-impulse*this.m_u1.x;P1Y=-impulse*this.m_u1.y;b1.m_linearVelocity.x+=b1.m_invMass*P1X;b1.m_linearVelocity.y+=b1.m_invMass*P1Y;b1.m_angularVelocity+=b1.m_invI*(r1X*P1Y-r1Y*P1X);}
         if(this.m_limitState2==b2Joint.e_atUpperLimit)
         {v2X=b2.m_linearVelocity.x+(-b2.m_angularVelocity*r2Y);v2Y=b2.m_linearVelocity.y+(b2.m_angularVelocity*r2X);Cdot=-(this.m_u2.x*v2X+this.m_u2.y*v2Y);impulse=-this.m_limitMass2*Cdot;oldLimitImpulse=this.m_limitImpulse2;this.m_limitImpulse2=b2Math.b2Max(0.0,this.m_limitImpulse2+impulse);impulse=this.m_limitImpulse2-oldLimitImpulse;P2X=-impulse*this.m_u2.x;P2Y=-impulse*this.m_u2.y;b2.m_linearVelocity.x+=b2.m_invMass*P2X;b2.m_linearVelocity.y+=b2.m_invMass*P2Y;b2.m_angularVelocity+=b2.m_invI*(r2X*P2Y-r2Y*P2X);}},SolvePositionConstraints:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;var s1X=this.m_ground.m_position.x+this.m_groundAnchor1.x;var s1Y=this.m_ground.m_position.y+this.m_groundAnchor1.y;var s2X=this.m_ground.m_position.x+this.m_groundAnchor2.x;var s2Y=this.m_ground.m_position.y+this.m_groundAnchor2.y;var r1X;var r1Y;var r2X;var r2Y;var p1X;var p1Y;var p2X;var p2Y;var length1;var length2;var C;var impulse;var oldLimitPositionImpulse;var linearError=0.0;{tMat=b1.m_R;r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;p1X=b1.m_position.x+r1X;p1Y=b1.m_position.y+r1Y;p2X=b2.m_position.x+r2X;p2Y=b2.m_position.y+r2Y;this.m_u1.Set(p1X-s1X,p1Y-s1Y);this.m_u2.Set(p2X-s2X,p2Y-s2Y);length1=this.m_u1.Length();length2=this.m_u2.Length();if(length1>b2Settings.b2_linearSlop)
         {this.m_u1.Multiply(1.0/length1);}
         else
         {this.m_u1.SetZero();}
         if(length2>b2Settings.b2_linearSlop)
         {this.m_u2.Multiply(1.0/length2);}
         else
         {this.m_u2.SetZero();}
         C=this.m_constant-length1-this.m_ratio*length2;linearError=b2Math.b2Max(linearError,Math.abs(C));C=b2Math.b2Clamp(C,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);impulse=-this.m_pulleyMass*C;p1X=-impulse*this.m_u1.x;p1Y=-impulse*this.m_u1.y;p2X=-this.m_ratio*impulse*this.m_u2.x;p2Y=-this.m_ratio*impulse*this.m_u2.y;b1.m_position.x+=b1.m_invMass*p1X;b1.m_position.y+=b1.m_invMass*p1Y;b1.m_rotation+=b1.m_invI*(r1X*p1Y-r1Y*p1X);b2.m_position.x+=b2.m_invMass*p2X;b2.m_position.y+=b2.m_invMass*p2Y;b2.m_rotation+=b2.m_invI*(r2X*p2Y-r2Y*p2X);b1.m_R.Set(b1.m_rotation);b2.m_R.Set(b2.m_rotation);}
         if(this.m_limitState1==b2Joint.e_atUpperLimit)
         {tMat=b1.m_R;r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;p1X=b1.m_position.x+r1X;p1Y=b1.m_position.y+r1Y;this.m_u1.Set(p1X-s1X,p1Y-s1Y);length1=this.m_u1.Length();if(length1>b2Settings.b2_linearSlop)
         {this.m_u1.x*=1.0/length1;this.m_u1.y*=1.0/length1;}
         else
         {this.m_u1.SetZero();}
         C=this.m_maxLength1-length1;linearError=b2Math.b2Max(linearError,-C);C=b2Math.b2Clamp(C+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);impulse=-this.m_limitMass1*C;oldLimitPositionImpulse=this.m_limitPositionImpulse1;this.m_limitPositionImpulse1=b2Math.b2Max(0.0,this.m_limitPositionImpulse1+impulse);impulse=this.m_limitPositionImpulse1-oldLimitPositionImpulse;p1X=-impulse*this.m_u1.x;p1Y=-impulse*this.m_u1.y;b1.m_position.x+=b1.m_invMass*p1X;b1.m_position.y+=b1.m_invMass*p1Y;b1.m_rotation+=b1.m_invI*(r1X*p1Y-r1Y*p1X);b1.m_R.Set(b1.m_rotation);}
         if(this.m_limitState2==b2Joint.e_atUpperLimit)
         {tMat=b2.m_R;r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;p2X=b2.m_position.x+r2X;p2Y=b2.m_position.y+r2Y;this.m_u2.Set(p2X-s2X,p2Y-s2Y);length2=this.m_u2.Length();if(length2>b2Settings.b2_linearSlop)
         {this.m_u2.x*=1.0/length2;this.m_u2.y*=1.0/length2;}
         else
         {this.m_u2.SetZero();}
         C=this.m_maxLength2-length2;linearError=b2Math.b2Max(linearError,-C);C=b2Math.b2Clamp(C+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);impulse=-this.m_limitMass2*C;oldLimitPositionImpulse=this.m_limitPositionImpulse2;this.m_limitPositionImpulse2=b2Math.b2Max(0.0,this.m_limitPositionImpulse2+impulse);impulse=this.m_limitPositionImpulse2-oldLimitPositionImpulse;p2X=-impulse*this.m_u2.x;p2Y=-impulse*this.m_u2.y;b2.m_position.x+=b2.m_invMass*p2X;b2.m_position.y+=b2.m_invMass*p2Y;b2.m_rotation+=b2.m_invI*(r2X*p2Y-r2Y*p2X);b2.m_R.Set(b2.m_rotation);}
         return linearError<b2Settings.b2_linearSlop;},m_ground:null,m_groundAnchor1:new b2Vec2(),m_groundAnchor2:new b2Vec2(),m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_u1:new b2Vec2(),m_u2:new b2Vec2(),m_constant:null,m_ratio:null,m_maxLength1:null,m_maxLength2:null,m_pulleyMass:null,m_limitMass1:null,m_limitMass2:null,m_pulleyImpulse:null,m_limitImpulse1:null,m_limitImpulse2:null,m_limitPositionImpulse1:null,m_limitPositionImpulse2:null,m_limitState1:0,m_limitState2:0});b2PulleyJoint.b2_minPulleyLength=b2Settings.b2_lengthUnitsPerMeter;
         var b2PulleyJointDef=Class.create();Object.extend(b2PulleyJointDef.prototype,b2JointDef.prototype);Object.extend(b2PulleyJointDef.prototype,{initialize:function()
         {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.groundPoint1=new b2Vec2();this.groundPoint2=new b2Vec2();this.anchorPoint1=new b2Vec2();this.anchorPoint2=new b2Vec2();this.type=b2Joint.e_pulleyJoint;this.groundPoint1.Set(-1.0,1.0);this.groundPoint2.Set(1.0,1.0);this.anchorPoint1.Set(-1.0,0.0);this.anchorPoint2.Set(1.0,0.0);this.maxLength1=0.5*b2PulleyJoint.b2_minPulleyLength;this.maxLength2=0.5*b2PulleyJoint.b2_minPulleyLength;this.ratio=1.0;this.collideConnected=true;},groundPoint1:new b2Vec2(),groundPoint2:new b2Vec2(),anchorPoint1:new b2Vec2(),anchorPoint2:new b2Vec2(),maxLength1:null,maxLength2:null,ratio:null});
         var b2RevoluteJoint=Class.create();Object.extend(b2RevoluteJoint.prototype,b2Joint.prototype);Object.extend(b2RevoluteJoint.prototype,{GetAnchor1:function(){var tMat=this.m_body1.m_R;return new b2Vec2(this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y),this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y));},GetAnchor2:function(){var tMat=this.m_body2.m_R;return new b2Vec2(this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y),this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y));},GetJointAngle:function(){return this.m_body2.m_rotation-this.m_body1.m_rotation;},GetJointSpeed:function(){return this.m_body2.m_angularVelocity-this.m_body1.m_angularVelocity;},GetMotorTorque:function(invTimeStep){return invTimeStep*this.m_motorImpulse;},SetMotorSpeed:function(speed)
         {this.m_motorSpeed=speed;},SetMotorTorque:function(torque)
         {this.m_maxMotorTorque=torque;},GetReactionForce:function(invTimeStep)
         {var tVec=this.m_ptpImpulse.Copy();tVec.Multiply(invTimeStep);return tVec;},GetReactionTorque:function(invTimeStep)
         {return invTimeStep*this.m_limitImpulse;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.K=new b2Mat22();this.K1=new b2Mat22();this.K2=new b2Mat22();this.K3=new b2Mat22();this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_ptpImpulse=new b2Vec2();this.m_ptpMass=new b2Mat22();var tMat;var tX;var tY;tMat=this.m_body1.m_R;tX=def.anchorPoint.x-this.m_body1.m_position.xY=def.anchorPoint.y-this.m_body1.m_position.y;this.m_localAnchor1.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor1.y=tX*tMat.col2.x+tY*tMat.col2.y;tMat=this.m_body2.m_R;tX=def.anchorPoint.x-this.m_body2.m_position.xY=def.anchorPoint.y-this.m_body2.m_position.y;this.m_localAnchor2.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor2.y=tX*tMat.col2.x+tY*tMat.col2.y;this.m_intialAngle=this.m_body2.m_rotation-this.m_body1.m_rotation;this.m_ptpImpulse.Set(0.0,0.0);this.m_motorImpulse=0.0;this.m_limitImpulse=0.0;this.m_limitPositionImpulse=0.0;this.m_lowerAngle=def.lowerAngle;this.m_upperAngle=def.upperAngle;this.m_maxMotorTorque=def.motorTorque;this.m_motorSpeed=def.motorSpeed;this.m_enableLimit=def.enableLimit;this.m_enableMotor=def.enableMotor;},K:new b2Mat22(),K1:new b2Mat22(),K2:new b2Mat22(),K3:new b2Mat22(),PrepareVelocitySolver:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;this.K1.col1.x=invMass1+invMass2;this.K1.col2.x=0.0;this.K1.col1.y=0.0;this.K1.col2.y=invMass1+invMass2;this.K2.col1.x=invI1*r1Y*r1Y;this.K2.col2.x=-invI1*r1X*r1Y;this.K2.col1.y=-invI1*r1X*r1Y;this.K2.col2.y=invI1*r1X*r1X;this.K3.col1.x=invI2*r2Y*r2Y;this.K3.col2.x=-invI2*r2X*r2Y;this.K3.col1.y=-invI2*r2X*r2Y;this.K3.col2.y=invI2*r2X*r2X;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.AddM(this.K3);this.K.Invert(this.m_ptpMass);this.m_motorMass=1.0/(invI1+invI2);if(this.m_enableMotor==false)
         {this.m_motorImpulse=0.0;}
         if(this.m_enableLimit)
         {var jointAngle=b2.m_rotation-b1.m_rotation-this.m_intialAngle;if(b2Math.b2Abs(this.m_upperAngle-this.m_lowerAngle)<2.0*b2Settings.b2_angularSlop)
         {this.m_limitState=b2Joint.e_equalLimits;}
         else if(jointAngle<=this.m_lowerAngle)
         {if(this.m_limitState!=b2Joint.e_atLowerLimit)
         {this.m_limitImpulse=0.0;}
         this.m_limitState=b2Joint.e_atLowerLimit;}
         else if(jointAngle>=this.m_upperAngle)
         {if(this.m_limitState!=b2Joint.e_atUpperLimit)
         {this.m_limitImpulse=0.0;}
         this.m_limitState=b2Joint.e_atUpperLimit;}
         else
         {this.m_limitState=b2Joint.e_inactiveLimit;this.m_limitImpulse=0.0;}}
         else
         {this.m_limitImpulse=0.0;}
         if(b2World.s_enableWarmStarting)
         {b1.m_linearVelocity.x-=invMass1*this.m_ptpImpulse.x;b1.m_linearVelocity.y-=invMass1*this.m_ptpImpulse.y;b1.m_angularVelocity-=invI1*((r1X*this.m_ptpImpulse.y-r1Y*this.m_ptpImpulse.x)+this.m_motorImpulse+this.m_limitImpulse);b2.m_linearVelocity.x+=invMass2*this.m_ptpImpulse.x;b2.m_linearVelocity.y+=invMass2*this.m_ptpImpulse.y;b2.m_angularVelocity+=invI2*((r2X*this.m_ptpImpulse.y-r2Y*this.m_ptpImpulse.x)+this.m_motorImpulse+this.m_limitImpulse);}
         else{this.m_ptpImpulse.SetZero();this.m_motorImpulse=0.0;this.m_limitImpulse=0.0;}
         this.m_limitPositionImpulse=0.0;},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var oldLimitImpulse;var ptpCdotX=b2.m_linearVelocity.x+(-b2.m_angularVelocity*r2Y)-b1.m_linearVelocity.x-(-b1.m_angularVelocity*r1Y);var ptpCdotY=b2.m_linearVelocity.y+(b2.m_angularVelocity*r2X)-b1.m_linearVelocity.y-(b1.m_angularVelocity*r1X);var ptpImpulseX=-(this.m_ptpMass.col1.x*ptpCdotX+this.m_ptpMass.col2.x*ptpCdotY);var ptpImpulseY=-(this.m_ptpMass.col1.y*ptpCdotX+this.m_ptpMass.col2.y*ptpCdotY);this.m_ptpImpulse.x+=ptpImpulseX;this.m_ptpImpulse.y+=ptpImpulseY;b1.m_linearVelocity.x-=b1.m_invMass*ptpImpulseX;b1.m_linearVelocity.y-=b1.m_invMass*ptpImpulseY;b1.m_angularVelocity-=b1.m_invI*(r1X*ptpImpulseY-r1Y*ptpImpulseX);b2.m_linearVelocity.x+=b2.m_invMass*ptpImpulseX;b2.m_linearVelocity.y+=b2.m_invMass*ptpImpulseY;b2.m_angularVelocity+=b2.m_invI*(r2X*ptpImpulseY-r2Y*ptpImpulseX);if(this.m_enableMotor&&this.m_limitState!=b2Joint.e_equalLimits)
         {var motorCdot=b2.m_angularVelocity-b1.m_angularVelocity-this.m_motorSpeed;var motorImpulse=-this.m_motorMass*motorCdot;var oldMotorImpulse=this.m_motorImpulse;this.m_motorImpulse=b2Math.b2Clamp(this.m_motorImpulse+motorImpulse,-step.dt*this.m_maxMotorTorque,step.dt*this.m_maxMotorTorque);motorImpulse=this.m_motorImpulse-oldMotorImpulse;b1.m_angularVelocity-=b1.m_invI*motorImpulse;b2.m_angularVelocity+=b2.m_invI*motorImpulse;}
         if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)
         {var limitCdot=b2.m_angularVelocity-b1.m_angularVelocity;var limitImpulse=-this.m_motorMass*limitCdot;if(this.m_limitState==b2Joint.e_equalLimits)
         {this.m_limitImpulse+=limitImpulse;}
         else if(this.m_limitState==b2Joint.e_atLowerLimit)
         {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Max(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}
         else if(this.m_limitState==b2Joint.e_atUpperLimit)
         {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Min(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}
         b1.m_angularVelocity-=b1.m_invI*limitImpulse;b2.m_angularVelocity+=b2.m_invI*limitImpulse;}},SolvePositionConstraints:function(){var oldLimitImpulse;var limitC;var b1=this.m_body1;var b2=this.m_body2;var positionError=0.0;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var ptpCX=p2X-p1X;var ptpCY=p2Y-p1Y;positionError=Math.sqrt(ptpCX*ptpCX+ptpCY*ptpCY);var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;this.K1.col1.x=invMass1+invMass2;this.K1.col2.x=0.0;this.K1.col1.y=0.0;this.K1.col2.y=invMass1+invMass2;this.K2.col1.x=invI1*r1Y*r1Y;this.K2.col2.x=-invI1*r1X*r1Y;this.K2.col1.y=-invI1*r1X*r1Y;this.K2.col2.y=invI1*r1X*r1X;this.K3.col1.x=invI2*r2Y*r2Y;this.K3.col2.x=-invI2*r2X*r2Y;this.K3.col1.y=-invI2*r2X*r2Y;this.K3.col2.y=invI2*r2X*r2X;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.AddM(this.K3);this.K.Solve(b2RevoluteJoint.tImpulse,-ptpCX,-ptpCY);var impulseX=b2RevoluteJoint.tImpulse.x;var impulseY=b2RevoluteJoint.tImpulse.y;b1.m_position.x-=b1.m_invMass*impulseX;b1.m_position.y-=b1.m_invMass*impulseY;b1.m_rotation-=b1.m_invI*(r1X*impulseY-r1Y*impulseX);b1.m_R.Set(b1.m_rotation);b2.m_position.x+=b2.m_invMass*impulseX;b2.m_position.y+=b2.m_invMass*impulseY;b2.m_rotation+=b2.m_invI*(r2X*impulseY-r2Y*impulseX);b2.m_R.Set(b2.m_rotation);var angularError=0.0;if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)
         {var angle=b2.m_rotation-b1.m_rotation-this.m_intialAngle;var limitImpulse=0.0;if(this.m_limitState==b2Joint.e_equalLimits)
         {limitC=b2Math.b2Clamp(angle,-b2Settings.b2_maxAngularCorrection,b2Settings.b2_maxAngularCorrection);limitImpulse=-this.m_motorMass*limitC;angularError=b2Math.b2Abs(limitC);}
         else if(this.m_limitState==b2Joint.e_atLowerLimit)
         {limitC=angle-this.m_lowerAngle;angularError=b2Math.b2Max(0.0,-limitC);limitC=b2Math.b2Clamp(limitC+b2Settings.b2_angularSlop,-b2Settings.b2_maxAngularCorrection,0.0);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Max(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}
         else if(this.m_limitState==b2Joint.e_atUpperLimit)
         {limitC=angle-this.m_upperAngle;angularError=b2Math.b2Max(0.0,limitC);limitC=b2Math.b2Clamp(limitC-b2Settings.b2_angularSlop,0.0,b2Settings.b2_maxAngularCorrection);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Min(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}
         b1.m_rotation-=b1.m_invI*limitImpulse;b1.m_R.Set(b1.m_rotation);b2.m_rotation+=b2.m_invI*limitImpulse;b2.m_R.Set(b2.m_rotation);}
         return positionError<=b2Settings.b2_linearSlop&&angularError<=b2Settings.b2_angularSlop;},m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_ptpImpulse:new b2Vec2(),m_motorImpulse:null,m_limitImpulse:null,m_limitPositionImpulse:null,m_ptpMass:new b2Mat22(),m_motorMass:null,m_intialAngle:null,m_lowerAngle:null,m_upperAngle:null,m_maxMotorTorque:null,m_motorSpeed:null,m_enableLimit:null,m_enableMotor:null,m_limitState:0});b2RevoluteJoint.tImpulse=new b2Vec2();
         var b2RevoluteJointDef=Class.create();Object.extend(b2RevoluteJointDef.prototype,b2JointDef.prototype);Object.extend(b2RevoluteJointDef.prototype,{initialize:function()
         {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.type=b2Joint.e_revoluteJoint;this.anchorPoint=new b2Vec2(0.0,0.0);this.lowerAngle=0.0;this.upperAngle=0.0;this.motorTorque=0.0;this.motorSpeed=0.0;this.enableLimit=false;this.enableMotor=false;},anchorPoint:null,lowerAngle:null,upperAngle:null,motorTorque:null,motorSpeed:null,enableLimit:null,enableMotor:null});

      </script>
      <script>

         var delta = [ 0, 0 ];
         var stage = [ window.screenX, window.screenY, window.innerWidth, window.innerHeight ];
         getBrowserDimensions();

         var isRunning = false;
         var isMouseDown = false;

         var worldAABB;
         var world;
         var iterations = 1;

         var walls = [];
         var wall_thickness = 200;
         var wallsSetted = false;

         var mouseJoint;
         var mouse = { x: 0, y: 0 };

         var mouseOnClick = [];

         var elements = [];
         var bodies = [];
         var properties = [];

         var query, page = 0;

         var gWebSearch, gImageSearch;
         var imFeelingLuckyMode = false;
         var resultBodies = [];

         var gravity = { x: 0, y: 1 };

         init();

         if ( location.search != "" ) {

            var params = location.search.substr(1).split("&")

            for (var i = 0; i < params.length; i++) {

               var param = params[i].split("=");

               if (param[0] == "q") {

                  document.getElementById('q').value = param[1];
                  run();
                  break;
               }
            }
         }

         //

         function init() {

            gWebSearch = new google.search.WebSearch();
            gWebSearch.setResultSetSize( google.search.Search.SMALL_RESULTSET );
            gWebSearch.setSearchCompleteCallback( null, onWebSearch );

            gImageSearch = new google.search.ImageSearch();
            gImageSearch.setResultSetSize( google.search.Search.SMALL_RESULTSET );
            gImageSearch.setSearchCompleteCallback( null, onImageSearch );

            document.addEventListener( 'mousedown', onDocumentMouseDown, false );
            document.addEventListener( 'mouseup', onDocumentMouseUp, false );
            document.addEventListener( 'mousemove', onDocumentMouseMove, false );

            document.addEventListener( 'keyup', onDocumentKeyUp, false );


            document.addEventListener( 'touchstart', onDocumentTouchStart, false );
            document.addEventListener( 'touchmove', onDocumentTouchMove, false );
            document.addEventListener( 'touchend', onDocumentTouchEnd, false );

            window.addEventListener( 'deviceorientation', onWindowDeviceOrientation, false );

            // init box2d

            worldAABB = new b2AABB();
            worldAABB.minVertex.Set( - 200, - 200 );
            worldAABB.maxVertex.Set( window.innerWidth + 200, window.innerHeight + 200 );

            world = new b2World( worldAABB, new b2Vec2( 0, 0 ), true );

            // walls
            setWalls();

            // Get box2d elements

            elements = getElementsByClass("box2d");

            for ( var i = 0; i < elements.length; i ++ ) {

               properties[i] = getElementProperties( elements[i] );

            }

            for ( var i = 0; i < elements.length; i ++ ) {

               var element = elements[ i ];
               element.style.position = 'absolute';
               element.style.left = properties[i][0] + 'px';
               element.style.top = properties[i][1] + 'px';
               element.style.width = properties[i][2] + 'px';
               element.addEventListener( 'mousedown', onElementMouseDown, false );
               element.addEventListener( 'mouseup', onElementMouseUp, false );
               element.addEventListener( 'click', onElementClick, false );

               bodies[i] = createBox( world, properties[i][0] + (properties[i][2] >> 1), properties[i][1] + (properties[i][3] >> 1), properties[i][2] / 2, properties[i][3] / 2, false );

               // Clean position dependencies

               while ( element.offsetParent ) {

                  element = element.offsetParent;
                  element.style.position = 'static';

               }

            }

            //

            if ( window.innerWidth > 1024 ) {

               var ad = document.createElement( 'script' );
               ad.id = '_carbonads_js';
               ad.src = '//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=mrdoob';
               document.body.appendChild( ad );

            }

         }

         function run() {

            isRunning = true;
            requestAnimationFrame( loop );

         }

         //

         function onDocumentMouseDown( event ) {

            isMouseDown = true;

         }

         function onDocumentMouseUp( event ) {

            isMouseDown = false;

         }

         function onDocumentMouseMove( event ) {

            if ( !isRunning ) run();

            mouse.x = event.clientX;
            mouse.y = event.clientY;

         }

         function onDocumentKeyUp( event ) {

            if ( event.keyCode == 13 ) search();

         }

         function onDocumentTouchStart( event ) {

            if ( event.touches.length == 1 ) {

               if ( !isRunning ) {

                  run();

               }

               mouse.x = event.touches[0].pageX;
               mouse.y = event.touches[0].pageY;
               isMouseDown = true;
            }
         }

         function onDocumentTouchMove( event ) {

            if ( event.touches.length == 1 ) {

               event.preventDefault();

               mouse.x = event.touches[0].pageX;
               mouse.y = event.touches[0].pageY;

            }

         }

         function onDocumentTouchEnd( event ) {

            if ( event.touches.length == 0 ) {

               isMouseDown = false;
            }

         }

         function onWindowDeviceOrientation( event ) {

            if ( event.beta ) {

               gravity.x = Math.sin( event.gamma * Math.PI / 180 );
               gravity.y = Math.sin( ( Math.PI / 4 ) + event.beta * Math.PI / 180 );

            }

         }

         //

         function onElementMouseDown( event ) {

            event.preventDefault();

            mouseOnClick[0] = event.clientX;
            mouseOnClick[1] = event.clientY;

         }

         function onElementMouseUp( event ) {

            event.preventDefault();

         }

         function onElementClick( event ) {

            var range = 5;

            if ( mouseOnClick[0] > event.clientX + range || mouseOnClick[0] < event.clientX - range &&
                 mouseOnClick[1] > event.clientY + range || mouseOnClick[1] < event.clientY - range ) {

               event.preventDefault();

            }

            if ( event.target == document.getElementById( 'btnG' ) ) search();
            if ( event.target == document.getElementById( 'btnI' ) ) imFeelingLucky();
            if ( event.target == document.getElementById( 'q' ) ) document.getElementById('q').focus();

         }

         // API STUFF

         function search() {

            if ( !isRunning ) {

               run();

            }

            if ( query == document.getElementById('q').value ) {

               page ++;

               gWebSearch.gotoPage( page );
               gImageSearch.gotoPage( page );

            } else {

               page = 0;

               query = document.getElementById('q').value;

               gWebSearch.execute( query );
               gImageSearch.execute( query );

            }

            return false;

         }

         function imFeelingLucky() {

            imFeelingLuckyMode = true;
            gWebSearch.execute( document.getElementById('q').value );

            return false;

         }

         function onWebSearch() {

            if ( imFeelingLuckyMode ) {

               location.href = gWebSearch.results[0].unescapedUrl;
               return;

            }

            for ( var i = 0; i < gWebSearch.results.length; i ++ ) {

               addWeb( gWebSearch.results[i] );

            }

         }

         function onImageSearch() {

            for ( var i = 0; i < gImageSearch.results.length; i ++ ) {

               addImage( gImageSearch.results[i] );

            }

         }

         function addWeb( data ) {

            var element = document.createElement('div');
            element.innerHTML = '<div class="result"><div class="title"><a href="' + data.unescapedUrl + '" target="_blank">' + data.title + '</a></div><div class="url">' + data.visibleUrl + '</div><div class="content">' + data.content + '</div>';

            document.body.appendChild( element );

            properties.push( [ Math.random() * ( window.innerWidth / 2 ), - 200, 546, element.offsetHeight ] );

            var i = properties.length - 1;

            element.style.position = 'absolute';
            element.style.left = 0 + 'px';
            element.style.top = - 100 + 'px';
            element.style.backgroundColor = '#ffffff';
            element.addEventListener( 'mousedown', onElementMouseDown, false );
            element.addEventListener( 'mouseup', onElementMouseUp, false );
            element.addEventListener( 'click', onElementClick, false );

            elements[i] = element;

            resultBodies.push( bodies[i] = createBox( world, properties[i][0] + ( properties[i][2] >> 1 ), properties[i][1] + ( properties[i][3] >> 1 ), properties[i][2] / 2, properties[i][3] / 2, false, element ) );

         }

         function addImage( data ) {

            var element = document.createElement( 'img' );
            element.style.display = 'none';
            element.style.cursor = 'pointer';
            element.addEventListener( 'load', function () {

               properties.push( [ Math.random() * ( window.innerWidth / 2 ), - 200, element.width, element.height ] );

               var i = properties.length - 1;

               element.style.display = 'block';
               element.style.position = 'absolute';
               element.style.left = 0 + 'px';
               element.style.top = - 200 + 'px';
               element.style.backgroundColor = '#ffffff';
               element.addEventListener( 'mousedown', onElementMouseDown, false );
               element.addEventListener( 'mouseup', onElementMouseUp, false );
               element.addEventListener( 'click', onElementClick, false );
               element.addEventListener( 'click', function ( event ) {

                  var range = 5;

                  if ( mouseOnClick[0] < event.clientX + range && mouseOnClick[0] > event.clientX - range &&
                       mouseOnClick[1] < event.clientY + range && mouseOnClick[1] > event.clientY - range ) {

                     window.open( data.unescapedUrl );

                  }

               }, false );

               elements[i] = element;

               resultBodies.push( bodies[i] = createBox( world, properties[i][0] + ( properties[i][2] >> 1 ), properties[i][1] + ( properties[i][3] >> 1 ), properties[i][2] / 2, properties[i][3] / 2, false, element ) );

            }, false );
            element.src = data.tbUrl;
            document.body.appendChild( element );

         }

         //

         var prevTime;

         function loop() {

            requestAnimationFrame( loop );

            if ( prevTime === undefined ) {

               prevTime = Date.now();

            }

            var time = Date.now();
            var timeStep = ( time - prevTime ) / 1000;

            prevTime = time;

            //

            if (getBrowserDimensions())
               setWalls();

            delta[0] += (0 - delta[0]) * .5;
            delta[1] += (0 - delta[1]) * .5;

            world.m_gravity.x = gravity.x * 750 + delta[0];
            world.m_gravity.y = gravity.y * 750 + delta[1];

            mouseDrag();
            world.Step(timeStep, iterations);

            for ( i = 0; i < elements.length; i++ ) {

               var body = bodies[i];
               var element = elements[i];

               element.style.left = (body.m_position0.x - (properties[i][2] >> 1)) + 'px';
               element.style.top = (body.m_position0.y - (properties[i][3] >> 1)) + 'px';

               var style = 'rotate(' + (body.m_rotation0 * 57.2957795) + 'deg)';

               element.style.transform = style;
               element.style.WebkitTransform = style + ' translateZ(0)'; // Force HW Acceleration
               element.style.MozTransform = style;
               element.style.OTransform = style;
               element.style.msTransform = style;
            }

         }


         // .. BOX2D UTILS

         function createBox(world, x, y, width, height, fixed, element) {

            if (typeof(fixed) == 'undefined')
               fixed = true;

            var boxSd = new b2BoxDef();

            if (!fixed)
               boxSd.density = 1.0;

            boxSd.extents.Set(width, height);

            var boxBd = new b2BodyDef();
            boxBd.AddShape(boxSd);
            boxBd.position.Set(x,y);
            boxBd.userData = {element: element};

            return world.CreateBody(boxBd)
         }

         function mouseDrag() {

            // mouse press
            if (isMouseDown && !mouseJoint) {

               var body = getBodyAtMouse();

               if (body) {

                  var md = new b2MouseJointDef();
                  md.body1 = world.m_groundBody;
                  md.body2 = body;
                  md.target.Set(mouse.x, mouse.y);
                  md.maxForce = 30000.0 * body.m_mass;
                  mouseJoint = world.CreateJoint(md);
                  body.WakeUp();
               }
            }

            // mouse release
            if (!isMouseDown) {

               if (mouseJoint) {

                  world.DestroyJoint(mouseJoint);
                  mouseJoint = null;
               }
            }

            // mouse move
            if (mouseJoint) {

               var p2 = new b2Vec2(mouse.x, mouse.y);
               mouseJoint.SetTarget(p2);
            }
         }

         function getBodyAtMouse() {

            // Make a small box.
            var mousePVec = new b2Vec2();
            mousePVec.Set(mouse.x, mouse.y);

            var aabb = new b2AABB();
            aabb.minVertex.Set(mouse.x - 1, mouse.y - 1);
            aabb.maxVertex.Set(mouse.x + 1, mouse.y + 1);

            // Query the world for overlapping shapes.
            var k_maxCount = 10;
            var shapes = [];
            var count = world.Query(aabb, shapes, k_maxCount);
            var body = null;

            for ( var i = 0; i < count; i ++ ) {

               if (shapes[i].m_body.IsStatic() == false) {

                  if ( shapes[i].TestPoint(mousePVec) ) {

                     body = shapes[i].m_body;
                     break;
                  }
               }
            }

            return body;
         }

         function setWalls() {

            if (wallsSetted) {

               world.DestroyBody(walls[0]);
               world.DestroyBody(walls[1]);
               world.DestroyBody(walls[2]);
               world.DestroyBody(walls[3]);

               walls[0] = null;
               walls[1] = null;
               walls[2] = null;
               walls[3] = null;
            }

            walls[0] = createBox(world, stage[2] / 2, - wall_thickness, stage[2], wall_thickness);
            walls[1] = createBox(world, stage[2] / 2, stage[3] + wall_thickness, stage[2], wall_thickness);
            walls[2] = createBox(world, - wall_thickness, stage[3] / 2, wall_thickness, stage[3]);
            walls[3] = createBox(world, stage[2] + wall_thickness, stage[3] / 2, wall_thickness, stage[3]);

            wallsSetted = true;

         }

         // .. UTILS

         function getElementsByClass( searchClass ) {

            var classElements = [];
            var els = document.getElementsByTagName('*');
            var elsLen = els.length

            for (i = 0, j = 0; i < elsLen; i++) {

               var classes = els[i].className.split(' ');
               for (k = 0; k < classes.length; k++)
                  if ( classes[k] == searchClass )
                     classElements[j++] = els[i];
            }

            return classElements;
         }

         function getElementProperties( element ) {

            var x = 0;
            var y = 0;
            var width = element.offsetWidth;
            var height = element.offsetHeight;

            do {

               x += element.offsetLeft;
               y += element.offsetTop;

            } while ( element = element.offsetParent );

            return [ x, y, width, height ];
         }

         function getBrowserDimensions() {

            var changed = false;

            if ( stage[0] != window.screenX ) {

               delta[0] = (window.screenX - stage[0]) * 50;
               stage[0] = window.screenX;
               changed = true;
            }

            if ( stage[1] != window.screenY ) {

               delta[1] = (window.screenY - stage[1]) * 50;
               stage[1] = window.screenY;
               changed = true;
            }

            if ( stage[2] != window.innerWidth ) {

               stage[2] = window.innerWidth;
               changed = true;
            }

            if ( stage[3] != window.innerHeight ) {

               stage[3] = window.innerHeight;
               changed = true;
            }

            return changed;
         }

      </script>

   </body>
</html>





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [Fun] Parodiez un site de votre choix 
TSnake41 a écrit:
Bon, voila Troll Gravity, une parodie de google gravity:
{{{Grande source}}}

Très longue source, mais bien tout de même Laughing (en même temps, un long code fait souvent un bon site Mr. Green)... Mais par contre, c'est normal que rien ne tombe où c'est moi qui ait un problème? Neutral




______________________________________________________
Visiter le site web du posteur Skype
Répondre en citant
Message [Fun] Parodiez un site de votre choix 
T'as oublié le ".com" pour le second site bexandre ! x)



Répondre en citant
Message [Fun] Parodiez un site de votre choix 
timothe_2000 a écrit:
T'as oublié le ".com" pour le second site bexandre ! x)

Chut, mon enfant... Mr. Green




______________________________________________________
Visiter le site web du posteur Skype
Message [Fun] Parodiez un site de votre choix 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch