code: func (c *ClientConn) ListAllVpnConnInfo() (list []VpnConnInfo, err error) {
  	sasList, err := c.ListSas("", "")
  	if err != nil {
  		return
  	}
  	list = make([]VpnConnInfo, len(sasList))
  	for i, sa := range sasList {
  		info := VpnConnInfo{}
  		if len(sa) != 1 {
  			fmt.Printf("[vici.ListAllVpnConnInfo] warning: len(sa)[%d]!=1\n", len(sa))
  		}
  		for ikeSaName, ikeSa := range sa {
  			info.IkeSaName = ikeSaName
  			info.IkeSa = ikeSa
  			//if len(ikeSa.Child_sas) != 1 {
  			//	fmt.Println("[vici.ListAllVpnConnInfo] warning: len(ikeSa.Child_sas)[%d]!=1", len(ikeSa.Child_sas))
  			//}
  			for childSaName, childSa := range ikeSa.Child_sas {
  				info.ChildSaName = childSaName
  				info.Child_sas = childSa
  				break
  			}
  			break
  		}
  		if len(info.IkeSa.Child_sas) == 1 {
  			info.IkeSa.Child_sas = nil
  		}
  		list[i] = info
  	}
  	return
  }
docs: // a helper method to avoid complex data struct in ListSas
  // if it only have one child_sas ,it will put it into info.Child_sas