<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<text x="0" y="10">Test for WK106530: This test passes if it does not crash.</text>
<animateMotion dur="2s" begin="animateMotion1.begin" id="animateMotion2" ><animateMotion id="animateMotion1" />
  <mpath xlink:href="#curve"/>
  <path id="curve"/>
</animateMotion>
<script type="text/javascript"><![CDATA[
  if (window.testRunner)
    testRunner.waitUntilDone();

  var animateMotion2El = document.getElementById("animateMotion2");
  var curveEl = document.getElementById("curve");

  setTimeout(function(){
    curveEl.appendChild(animateMotion2El.cloneNode(true));
    animateMotion2El.appendChild(curveEl.cloneNode(true));
    curveEl.parentNode.removeChild(curveEl);
    if (window.testRunner) {
      testRunner.dumpAsText();
      testRunner.notifyDone();
    }
  }, 1);
]]></script>
</svg>

