You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: admin.go
    path of file: ./repos/Stowaway/admin
    
    the code of the file until where you have to start completion: // +build !windows

package main

import (
	"net"
	"os"
	"runtime"

	"Stowaway/admin/cli"
	"Stowaway/admin/initial"
	"Stowaway/admin/printer"
	"Stowaway/admin/process"
	"Stowaway/admin/topology"
	"Stowaway/global"
	"Stowaway/protocol"
	"Stowaway/share"

	"github.com/nsf/termbox-go"
)

func init() {
	runtime.GOMAXPROCS(runtime.NumCPU())
}

func main() {
	printer.InitPrinter()

	termbox.Init()

	options := initial.ParseOptions()

	protocol.DecideType("raw", options.Downstream)

	cli.Banner()

	topo := topology.NewTopology()
	go topo.Run()

	printer.Warning("[*] Waiting for new connection...\r\n")
	var 
    
func main() {
	printer.InitPrinter()

	termbox.Init()

	options := initial.ParseOptions()

	protocol.DecideType("raw", options.Downstream)

	cli.Banner()

	topo := topology.NewTopology()
	go topo.Run()

	printer.Warning("[*] Waiting for new connection...\r\n")
	var conn net.Conn
	switch options.Mode {
	case initial.NORMAL_ACTIVE:
		conn = initial.NormalActive(options, topo, nil)
	case initial.NORMAL_PASSIVE:
		conn = initial.NormalPassive(options, topo)
	case initial.SOCKS5_PROXY_ACTIVE:
		proxy := share.NewSocks5Proxy(options.Connect, options.Socks5Proxy, options.Socks5ProxyU, options.Socks5ProxyP)
		conn = initial.NormalActive(options, topo, proxy)
	case initial.HTTP_PROXY_ACTIVE:
		proxy := share.NewHTTPProxy(options.Connect, options.HttpProxy)
		conn = initial.NormalActive(options, topo, proxy)
	default:
		printer.Fail("[*] Unknown Mode")
		os.Exit(0)
	}

	admin := process.NewAdmin()

	admin.Topology = topo

	topoTask := &topology.TopoTask{
		Mode: topology.CALCULATE,
	}
	topo.TaskChan <- topoTask
	<-topo.ResultChan

	global.InitialGComponent(conn, options.Secret, protocol.ADMIN_UUID)

	admin.Run()
}