func RunFd(fd int) (err error) {
	return engine().RunFd(fd)
}
RunFd attaches the router to a http.Server and starts listening and serving HTTP requests
through the specified file descriptor.
Note: the method will block the calling goroutine indefinitely unless on error happens.
package ginS
import (
	"html/template"
	"net/http"
	"sync"
	"github.com/abulo/ratel/v2/gin"
)
var once sync.Once
var internalEngine *gin.Engine
func engine() *gin.Engine {
	once.Do(func() {
		internalEngine = gin.Default()
	})
	return internalEngine
}
func LoadHTMLGlob(pattern string) {
	engine().LoadHTMLGlob(pattern)
}
func LoadHTMLFiles(files ...string) {
	engine().LoadHTMLFiles(files...)
}
func SetHTMLTemplate(templ *template.Template) {
	engine().SetHTMLTemplate(templ)
}
func NoRoute(handlers ...gin.HandlerFunc) {
	engine().NoRoute(handlers...)
}
func NoMethod(handlers ...gin.HandlerFunc) {
	engine().NoMethod(handlers...)
}
func Group(relativePath string, handlers ...gin.HandlerFunc) *gin.RouterGroup {
	return engine().Group(relativePath, handlers...)
}
func Handle(httpMethod, relativePath, routeName string, handlers ...gin.HandlerFunc) gin.IRoutes {
	return engine().Handle(httpMethod, relativePath, routeName, handlers...)
}
func POST(relativePath, routeName string, handlers ...gin.HandlerFunc) gin.IRoutes {
	return engine().POST(relativePath, routeName, handlers...)
}
func GET(relativePath, routeName string, handlers ...gin.HandlerFunc) gin.IRoutes {
	return engine().GET(relativePath, routeName, handlers...)
}
func DELETE(relativePath, routeName string, handlers ...gin.HandlerFunc) gin.IRoutes {
	return engine().DELETE(relativePath, routeName, handlers...)
}
func PATCH(relativePath, routeName string, handlers ...gin.HandlerFunc) gin.IRoutes {
	return engine().PATCH(relativePath, routeName, handlers...)
}
func PUT(relativePath, routeName string, handlers ...gin.HandlerFunc) gin.IRoutes {
	return engine().PUT(relativePath, routeName, handlers...)
}
func OPTIONS(relativePath, routeName string, handlers ...gin.HandlerFunc) gin.IRoutes {
	return engine().OPTIONS(relativePath, routeName, handlers...)
}
func HEAD(relativePath, routeName string, handlers ...gin.HandlerFunc) gin.IRoutes {
	return engine().HEAD(relativePath, routeName, handlers...)
}
func Any(relativePath, routeName string, handlers ...gin.HandlerFunc) gin.IRoutes {
	return engine().Any(relativePath, routeName, handlers...)
}
func StaticFile(relativePath, filepath string) gin.IRoutes {
	return engine().StaticFile(relativePath, filepath)
}
func Static(relativePath, root string) gin.IRoutes {
	return engine().Static(relativePath, root)
}
func StaticFS(relativePath string, fs http.FileSystem) gin.IRoutes {
	return engine().StaticFS(relativePath, fs)
}
func Use(middlewares ...gin.HandlerFunc) gin.IRoutes {
	return engine().Use(middlewares...)
}
func Routes() gin.RoutesInfo {
	return engine().Routes()
}
func Run(addr ...string) (err error) {
	return engine().Run(addr...)
}
func RunTLS(addr, certFile, keyFile string) (err error) {
	return engine().RunTLS(addr, certFile, keyFile)
}
func RunUnix(file string) (err error) {
	return engine().RunUnix(file)
}