andedItems)) {
      console.log('---- 3D ---- Toggling items')
      Object.keys(nextProps.expandedItems).forEach(key => {
        const val = nextProps.expandedItems[key]
        if (this.props.expandedItems[key]!== val) {
          this.toggleItem(
            nextProps.items.find(d => d.data.name === key),
            val)
        }
      })
    }
  }

  clear () {
    // / Clear current scene
    Object.values(this.allSpeheres).forEach(s => {
      this.scene.remove(s)
    })
  }

  glRender () {
    this.renderer.render(this.scene, this.camera)
  }

  animate () {
    requestAnimationFrame(() => this.animate())
    TWEEN.update()
    this.glRender()
  }

  toggleItem (item, isToOpen) {
    if (!this.descendants) {
      return
    }

    TWEEN.getAll().forEach(t => t.stop())
    const rootSphere = this.allSpeheres[item.data.name]

    item && item.children && item.children.forEach(circle => {
      const sphere = this.allSpeheres[circle.data.name]
      const scale = item.r / circle.r
      const openedPos = {
        x: circle.x,
        y: circle.y,
        z: circle.depth * -this.height
      }
      const closedPos = {
        x: rootSphere.position.x,
        y: rootSphere.position.y,
        z: 0
      }

      const fromPos = isToOpen? closedPos : openedPos
      const toPos = isToOpen? openedPos : closedPos
      const fromScale = isToOpen? scale : 1
      const toScale = isToOpen? 1 : scale

      sphere.scale.set(fromScale, fromScale, fromScale)
      sphere.position.set(fromPos.x, fromPos.y, fromPos.z)

      new TWEEN.Tween(sphere.scale)
       .to({ x: toScale, y: toScale, z: toScale }, 400)
       .onStop(() => {
          sphere.scale.set(toScale, toScale, toScale)
        })
       .start()

      new TWEEN.Tween(sphere.position)
       .to(toPos, 400)
       .onStop(() => sphere.position.set(toPos.x, toPos.y, toPos.z))
       .start()
    })

    const rootVisFun = () => { rootSphere.visible =!isToOpen }
    if (isToOpen) {
      rootVisFun()
    } else {
      new TWEEN.Tween(rootSphere)
       .to({}, 400)
       .onComplete(rootVisFun)
       .onStop(rootVisFun)
       .start()
    }
  }

  load (descendants) {
    console.log('---- 3D ---- Adding props to scene')
    this.clear()

    // / Store current data
    this.descendants = descendants

    // / Render current data
    descendants.forEach(circle => {
      const sphereSegs = Math.pow(2, 7 - circle.depth)
      const geometry = new THREE.SphereBufferGeometry(circle.r, sphereSegs, sphereSegs)

      const material = new THREE.MeshPhongMaterial({
        color:0x1f77b4,
        side: THREE.DoubleSide,
        reflectivity: 0.6,
        shading: THREE.SmoothShading
      })

      const sphere = new THREE.Mesh(geometry, material)

      // / Store this sphere for accessing later
      this.allSpeheres[circle.data.name] = sphere

      sphere.position.set(circle.x, circle.y, 0 * -circle.depth * this.height)

      this.scene.add(sphere)
    })

    this.glRender()
    this.animate()
  }

}

Graph3D.propTypes = {
  items: React.PropTypes.array.isRequired,
  expandedItems: React.PropTypes.object.isRequired,
  status: React.PropTypes.string.isRequired,
  size: React.PropTypes.number.isRequired
}
I don’t know when they will be here but two dealers are saying the price is 169.15. If that’s so it’s a great price for that size coil.
I have the AF 35 and it is a great all around coil.
My LG35 coil for The Legend is shipping today. Thanks to Don @ North Georgia Relics.
Don's a friend. Need a tall man rod or longer middle shaft for all my detectors.
I hunted with the new LG35 coil about 3 hours last evening. It performs as expected. Very stable for knocks & EMI. Very good separation & sensitivity to small targets. Pinpoints well. The depth is there. Swings thru tall grass/weeds well. It is not noticeably heavier if the shaft is shortened about 2 inches. This one will see a lot of use on open ground, especially if there is tall grass.
I'm looking forward to trying it on the beach. That's where I need the extra coverage AND am happy to dig as deep as required.
There is a video comparing the LG 35 to the 6" and 11" coils.
Definitely seems to go deeper.
This 1/4 scale Iron Man Mark 1 statue captures Tony Stark’s first generation of Iron Man armour from Marvel Studios Iron Man (2008). Crafted from polystone, this movie-accurate collectible recreates the iconic armour with incredible detail. The Queen Studios team have paid close attention to the mechanical structure of the armour painstakingly sculpting each piece, before painting it to near perfection.
This limited-edition statue features some unique elements that make the Iron Man Mark 1 stand out from other armours. In the centre of the armour, the team have included a scaled-down arc reactor, that can be displayed fully lit. While the rest of the statue includes the iconic weaponry and a movie inspired base to tie the piece together.In this edition, we highlight the release of AtomicDEX v0.3, a recent dPoW integration, a new oracle provider partnership, and much more.
Want to know about the top new features? Check out the blog post to learn more, and don’t forget to download the latest version of AtomicDEX!
Komodo developers have been working throughout 2020 to bring the ultimate user experience to AtomicDEX. The focus has been to enhance the GUI and to build a stable protocol that is capable of scaling up to increased user demand.
We will be running a public stress test campaign in November. Become a part of atomic swap history as we test the limits of the network!
More details about the stress test will be outlined in the coming weeks.
Komodo and Band Protocol developers have worked together to establish a close, collaborative relationship. The initial result is the integration of 12 Band Protocol data pairs for AtomicDEX. Why did we choose Band as the first oracle provider for AtomicDEX? Read the full post to find out.
The Gleec Coin network added defense against 51% attacks by integrating Komodo’s dPoW security solution. Additionally, GLEEC is now available for non-custodial atomic swap trading and wallet storage on AtomicDEX v0.3.
As part of Audo’s new path clearing initiative, we are returning to our community roots. In October, we started a Thursday Townhall series — an hour-long Q&A session and open community discussion.
Have a question about Komodo? Drop them in the townhall-questions channel on Discord. Join the Townhall voice channel on Thursdays from 3PM to 4PM UTC to participate in real-time.
Don’t have time to join the live event? We’ve got you covered. Thursday Townhall recaps are available on the Komodo blog.
We hosted the first annual Komodo Halloween Event from 4PM to 10PM UTC on October 31. Thank you to all the participants who joined us. We reached 100+ active users on our custom Rick and Morty Halloween portal created specifically for this event.
1,000+ atomic swaps were made on October 31, thanks in large part to the community swapping Rick and Morty themed test coins during the event. Komodo Twitter also received a lot of engagement, with 800+ retweets on one tweet. We look forward to hosting more community events like this in the future.
From August 1 to October 31, Audo ran a community-building internship program. 7 interns learned about the project and contributed to Komodo in many ways, from leading discussions on Discord to managing social media campaigns to creating the foundation for our new community structure.
We are looking forward to more Komodo internship programs in 2021, including plans for a junior developer program. These initiatives are paving the way