func (c *SystemInfo) GetInfo(ctx context.Context) (*SystemInfoGPUInfo, string, string, string, error) {
	resp, err := c.target.SendCustomReturn(ctx, &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "SystemInfo.getInfo"})
	if err != nil {
		return nil, "", "", "", err
	}
	var chromeData struct {
		Result struct {
			Gpu          *SystemInfoGPUInfo
			ModelName    string
			ModelVersion string
			CommandLine  string
		}
	}
	if resp == nil {
		return nil, "", "", "", &gcdmessage.ChromeEmptyResponseErr{}
	}
	cerr := &gcdmessage.ChromeErrorResponse{}
	json.Unmarshal(resp.Data, cerr)
	if cerr != nil && cerr.Error != nil {
		return nil, "", "", "", &gcdmessage.ChromeRequestErr{Resp: cerr}
	}
	if err := json.Unmarshal(resp.Data, &chromeData); err != nil {
		return nil, "", "", "", err
	}
	return chromeData.Result.Gpu, chromeData.Result.ModelName, chromeData.Result.ModelVersion, chromeData.Result.CommandLine, nil
}
GetInfo - Returns information about the system.
Returns -  gpu - Information about the GPUs on the system. modelName - A platform-dependent description of the model of the machine. On Mac OS, this is, for example, 'MacBookPro'. Will be the empty string if not supported. modelVersion - A platform-dependent description of the version of the machine. On Mac OS, this is, for example, '10.1'. Will be the empty string if not supported. commandLine - The command line string used to launch the browser. Will be the empty string if not supported.
package gcdapi
import (
	"context"
	"github.com/wirepair/gcd/v2/gcdmessage"
)
type SystemInfoGPUDevice struct {
	VendorId      float64 `json:"vendorId"`            
	DeviceId      float64 `json:"deviceId"`            
	SubSysId      float64 `json:"subSysId,omitempty"`  
	Revision      float64 `json:"revision,omitempty"`  
	VendorString  string  `json:"vendorString"`        
	DeviceString  string  `json:"deviceString"`        
	DriverVendor  string  `json:"driverVendor"`        
	DriverVersion string  `json:"driverVersion"`       
}
type SystemInfoSize struct {
	Width  int `json:"width"`   
	Height int `json:"height"`  
}
type SystemInfoVideoDecodeAcceleratorCapability struct {
	Profile       string          `json:"profile"`        
	MaxResolution *SystemInfoSize `json:"maxResolution"`  
	MinResolution *SystemInfoSize `json:"minResolution"`  
}
type SystemInfoVideoEncodeAcceleratorCapability struct {
	Profile                 string          `json:"profile"`                  
	MaxResolution           *SystemInfoSize `json:"maxResolution"`            
	MaxFramerateNumerator   int             `json:"maxFramerateNumerator"`    
	MaxFramerateDenominator int             `json:"maxFramerateDenominator"`  
}
type SystemInfoImageDecodeAcceleratorCapability struct {
	ImageType     string          `json:"imageType"`      
	MaxDimensions *SystemInfoSize `json:"maxDimensions"`  
	MinDimensions *SystemInfoSize `json:"minDimensions"`  
	Subsamplings  []string        `json:"subsamplings"`   
}
type SystemInfoGPUInfo struct {
	Devices              []*SystemInfoGPUDevice                        `json:"devices"`                  
	AuxAttributes        map[string]interface{}                        `json:"auxAttributes,omitempty"`  
	FeatureStatus        map[string]interface{}                        `json:"featureStatus,omitempty"`  
	DriverBugWorkarounds []string                                      `json:"driverBugWorkarounds"`     
	VideoDecoding        []*SystemInfoVideoDecodeAcceleratorCapability `json:"videoDecoding"`            
	VideoEncoding        []*SystemInfoVideoEncodeAcceleratorCapability `json:"videoEncoding"`            
	ImageDecoding        []*SystemInfoImageDecodeAcceleratorCapability `json:"imageDecoding"`            
}
type SystemInfoProcessInfo struct {
	Type    string  `json:"type"`     
	Id      int     `json:"id"`       
	CpuTime float64 `json:"cpuTime"`  
}
type SystemInfo struct {
	target gcdmessage.ChromeTargeter
}
func NewSystemInfo(target gcdmessage.ChromeTargeter) *SystemInfo {
	c := &SystemInfo{target: target}
	return c
}