function duplicate(f,t) {
  var e = getE(f), g, a, p = e && e.parentNode, m;
  if(e) {
    while(p.parentNode && p.nodeName != '{$string:namespace}svg' &&
      (p.nodeName != '{$string:namespace}g' || !p.getAttributeNS(null,'clip-path'))) {
      p.nodeName == '{$string:namespace}a' && (a = p);
      p = p.parentNode;
    }
    g = e.cloneNode(true);
    setattr(g,'opacity',0);
    e.id = t;

    if(a) {
      a = a.cloneNode(false);
      a.appendChild(g);
      g = a;
    }
    a = p.getScreenCTM();
    if(a.a == 1 && a.b == 0 && a.c == 0 &&
      a.d == 1 && a.e == 0 && a.f == 0) {
      a = e.getCTM();
    } else {
      a = e.getScreenCTM().inverse().multiply(a);
    }
    setattr(g,'transform', 'matrix(' + a.a + ' ' + a.b + ' ' + a.c + ' ' + a.d + ' ' + a.e + ' ' + a.f + ')');
    p.appendChild(g);
  }
}
function initDups() {
  for(var d in dups)
    duplicate(d,dups[d]);
}
