code: def build_geometry(node):
      
      geoms = []
      times = []
      if get1(node, 'MultiGeometry'):
          return build_geometry(get1(node, 'MultiGeometry'))
      if get1(node, 'MultiTrack'):
          return build_geometry(get1(node, 'MultiTrack'))
      if get1(node, 'gx:MultiTrack'):
          return build_geometry(get1(node, 'gx:MultiTrack'))
      for geotype in GEOTYPES:
          geonodes = get(node, geotype)
          if not geonodes:
              continue
          for geonode in geonodes:
              if geotype == 'Point':
                  geoms.append({
                    'type': 'Point',
                    'coordinates': coords1(val(get1(
                      geonode, 'coordinates')))
                  })
              elif geotype == 'LineString':
                  geoms.append({
                    'type': 'LineString',
                    'coordinates': coords(val(get1(
                      geonode, 'coordinates')))
                  })
              elif geotype == 'Polygon':
                  rings = get(geonode, 'LinearRing')
                  coordinates = [coords(val(get1(ring, 'coordinates')))
                    for ring in rings]
                  geoms.append({
                    'type': 'Polygon',
                    'coordinates': coordinates,
                  })
              elif geotype in ['Track', 'gx:Track']:
                  track = gx_coords(geonode)
                  geoms.append({
                    'type': 'LineString',
                    'coordinates': track['coordinates'],
                  })
                  if track['times']:
                      times.append(track['times'])
  
      return {'geoms': geoms, 'times': times}
docs: Return a (decoded) GeoJSON geometry dictionary corresponding to the given KML node.