diff --git a/arduino/cores/board.go b/arduino/cores/board.go index 6125bcd5cb6..c16ee1e6ee4 100644 --- a/arduino/cores/board.go +++ b/arduino/cores/board.go @@ -24,9 +24,10 @@ import ( // Board represents a board loaded from an installed platform type Board struct { - BoardID string - Properties *properties.Map `json:"-"` - PlatformRelease *PlatformRelease `json:"-"` + BoardID string + Properties *properties.Map `json:"-"` + PlatformRelease *PlatformRelease `json:"-"` + identificationProperties []*properties.Map } // HasUsbID returns true if the board match the usb vid and pid parameters @@ -140,14 +141,19 @@ func (b *Board) GeneratePropertiesForConfiguration(config string) (*properties.M return b.GetBuildProperties(fqbn.Configs) } +// GetIdentificationProperties calculates and returns a list of properties sets +// containing the properties required to identify the board. The returned sets +// must not be changed by the caller. +func (b *Board) GetIdentificationProperties() []*properties.Map { + if b.identificationProperties == nil { + b.identificationProperties = b.Properties.ExtractSubIndexSets("upload_port") + } + return b.identificationProperties +} + // IsBoardMatchingIDProperties returns true if the board match the given // identification properties func (b *Board) IsBoardMatchingIDProperties(query *properties.Map) bool { - portIDPropsSet := b.Properties.SubTree("upload_port") - if portIDPropsSet.Size() == 0 { - return false - } - // check checks if the given set of properties p match the "query" check := func(p *properties.Map) bool { for k, v := range p.AsMap() { @@ -159,26 +165,10 @@ func (b *Board) IsBoardMatchingIDProperties(query *properties.Map) bool { } // First check the identification properties with sub index "upload_port.N.xxx" - idx := 0 - haveIndexedProperties := false - for { - idProps := portIDPropsSet.SubTree(fmt.Sprintf("%d", idx)) - idx++ - if idProps.Size() > 0 { - haveIndexedProperties = true - if check(idProps) { - return true - } - } else if idx > 1 { - // Always check sub-id 0 and 1 (https://github.com/arduino/arduino-cli/issues/456) - break + for _, idProps := range b.GetIdentificationProperties() { + if check(idProps) { + return true } } - - // if there are no subindexed then check the whole "upload_port.xxx" - if !haveIndexedProperties { - return check(portIDPropsSet) - } - return false } diff --git a/cli/board/details.go b/cli/board/details.go index cc8f1169b0e..0ff0f4cb392 100644 --- a/cli/board/details.go +++ b/cli/board/details.go @@ -130,13 +130,13 @@ func (dr detailsResult) String() string { table.NewCell("✔", color.New(color.FgGreen))) } - for i, idp := range details.IdentificationPrefs { - if i == 0 { - t.AddRow() // get some space from above - t.AddRow(tr("Identification properties:"), "VID:"+idp.UsbId.Vid+" PID:"+idp.UsbId.Pid) - continue + for _, idp := range details.GetIdentificationProperties() { + t.AddRow() // get some space from above + header := tr("Identification properties:") + for k, v := range idp.GetProperties() { + t.AddRow(header, k+"="+v) + header = "" } - t.AddRow("", "VID:"+idp.UsbId.Vid+" PID:"+idp.UsbId.Pid) } t.AddRow() // get some space from above @@ -159,14 +159,14 @@ func (dr detailsResult) String() string { t.AddRow() // get some space from above for _, tool := range details.ToolsDependencies { - t.AddRow(tr("Required tool:"), tool.Packager+":"+tool.Name, "", tool.Version) + t.AddRow(tr("Required tool:"), tool.Packager+":"+tool.Name, tool.Version) if showFullDetails { for _, sys := range tool.Systems { - t.AddRow("", tr("OS:"), "", sys.Host) - t.AddRow("", tr("File:"), "", sys.ArchiveFilename) - t.AddRow("", tr("Size (bytes):"), "", fmt.Sprint(sys.Size)) - t.AddRow("", tr("Checksum:"), "", sys.Checksum) - t.AddRow("", "URL:", "", sys.Url) + t.AddRow("", tr("OS:"), sys.Host) + t.AddRow("", tr("File:"), sys.ArchiveFilename) + t.AddRow("", tr("Size (bytes):"), fmt.Sprint(sys.Size)) + t.AddRow("", tr("Checksum:"), sys.Checksum) + t.AddRow("", "URL:", sys.Url) t.AddRow() // get some space from above } } diff --git a/commands/board/details.go b/commands/board/details.go index edbbc9b1302..9046aa3d528 100644 --- a/commands/board/details.go +++ b/commands/board/details.go @@ -50,6 +50,12 @@ func Details(ctx context.Context, req *rpc.BoardDetailsRequest) (*rpc.BoardDetai details.PropertiesId = board.BoardID details.Official = fqbn.Package == "arduino" details.Version = board.PlatformRelease.Version.String() + details.IdentificationProperties = []*rpc.BoardIdentificationProperties{} + for _, p := range board.GetIdentificationProperties() { + details.IdentificationProperties = append(details.IdentificationProperties, &rpc.BoardIdentificationProperties{ + Properties: p.AsMap(), + }) + } details.DebuggingSupported = boardProperties.ContainsKey("debug.executable") || boardPlatform.Properties.ContainsKey("debug.executable") || @@ -80,16 +86,6 @@ func Details(ctx context.Context, req *rpc.BoardDetailsRequest) (*rpc.BoardDetai details.Platform.Size = boardPlatform.Resource.Size } - details.IdentificationPrefs = []*rpc.IdentificationPref{} - vids := board.Properties.SubTree("vid") - pids := board.Properties.SubTree("pid") - for id, vid := range vids.AsMap() { - if pid, ok := pids.GetOk(id); ok { - idPref := rpc.IdentificationPref{UsbId: &rpc.USBID{Vid: vid, Pid: pid}} - details.IdentificationPrefs = append(details.IdentificationPrefs, &idPref) - } - } - details.ConfigOptions = []*rpc.ConfigOption{} options := board.GetConfigOptions() for _, option := range options.Keys() { diff --git a/docs/UPGRADING.md b/docs/UPGRADING.md index 01d80cec118..39729a1c592 100644 --- a/docs/UPGRADING.md +++ b/docs/UPGRADING.md @@ -93,6 +93,112 @@ removed, in its place: `Context.Sketch` types has been changed from `Sketch` to `sketch.Sketch`. +### Change in `board details` response (gRPC and JSON output) + +The `board details` output WRT board identification properties has changed, before it was: + +``` +$ arduino-cli board details arduino:samd:mkr1000 +Board name: Arduino MKR1000 +FQBN: arduino:samd:mkr1000 +Board version: 1.8.11 +Debugging supported: ✔ + +Official Arduino board: ✔ + +Identification properties: VID:0x2341 PID:0x824e + VID:0x2341 PID:0x024e + VID:0x2341 PID:0x804e + VID:0x2341 PID:0x004e +[...] + +$ arduino-cli board details arduino:samd:mkr1000 --format json +[...] + "identification_prefs": [ + { + "usb_id": { + "vid": "0x2341", + "pid": "0x804e" + } + }, + { + "usb_id": { + "vid": "0x2341", + "pid": "0x004e" + } + }, + { + "usb_id": { + "vid": "0x2341", + "pid": "0x824e" + } + }, + { + "usb_id": { + "vid": "0x2341", + "pid": "0x024e" + } + } + ], +[...] +``` + +now the properties have been renamed from `identification_prefs` to `identification_properties` and they are no longer +specific to USB but they can theoretically be any set of key/values: + +``` +$ arduino-cli board details arduino:samd:mkr1000 +Board name: Arduino MKR1000 +FQBN: arduino:samd:mkr1000 +Board version: 1.8.11 +Debugging supported: ✔ + +Official Arduino board: ✔ + +Identification properties: vid=0x2341 + pid=0x804e + +Identification properties: vid=0x2341 + pid=0x004e + +Identification properties: vid=0x2341 + pid=0x824e + +Identification properties: vid=0x2341 + pid=0x024e +[...] + +$ arduino-cli board details arduino:samd:mkr1000 --format json +[...] + "identification_properties": [ + { + "properties": { + "pid": "0x804e", + "vid": "0x2341" + } + }, + { + "properties": { + "pid": "0x004e", + "vid": "0x2341" + } + }, + { + "properties": { + "pid": "0x824e", + "vid": "0x2341" + } + }, + { + "properties": { + "pid": "0x024e", + "vid": "0x2341" + } + } + ] +} +``` + ### Change of behaviour of gRPC `Init` function Previously the `Init` function was used to both create a new `CoreInstance` and initialize it, so that the internal diff --git a/go.mod b/go.mod index 78ec3f823c0..4fd01fd5203 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,6 @@ require ( github.com/fluxio/iohelpers v0.0.0-20160419043813-3a4dd67a94d2 // indirect github.com/fluxio/multierror v0.0.0-20160419044231-9c68d39025e5 // indirect github.com/gofrs/uuid v3.2.0+incompatible - github.com/golang/protobuf v1.5.2 github.com/h2non/filetype v1.0.8 // indirect github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 // indirect github.com/kr/text v0.2.0 // indirect @@ -38,7 +37,6 @@ require ( github.com/spf13/jwalterweatherman v1.0.0 github.com/spf13/viper v1.6.2 github.com/stretchr/testify v1.6.1 - github.com/xanzy/ssh-agent v0.2.1 // indirect go.bug.st/cleanup v1.0.0 go.bug.st/downloader/v2 v2.1.1 go.bug.st/relaxed-semver v0.0.0-20190922224835-391e10178d18 @@ -48,7 +46,7 @@ require ( golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6 // indirect golang.org/x/text v0.3.6 - google.golang.org/genproto v0.0.0-20210504143626-3b2ad6ccc450 // indirect + google.golang.org/genproto v0.0.0-20210504143626-3b2ad6ccc450 google.golang.org/grpc v1.37.0 google.golang.org/protobuf v1.26.0 gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce // indirect diff --git a/i18n/data/en.po b/i18n/data/en.po index f72fd2c383a..4fff3d5b394 100644 --- a/i18n/data/en.po +++ b/i18n/data/en.po @@ -54,7 +54,7 @@ msgstr "Global Flags:" msgid "Id" msgstr "Id" -#: cli/board/details.go:136 +#: cli/board/details.go:135 msgid "Identification properties:" msgstr "Identification properties:" diff --git a/i18n/rice-box.go b/i18n/rice-box.go index 6cf4fe3558f..863bd9af41a 100644 --- a/i18n/rice-box.go +++ b/i18n/rice-box.go @@ -12,25 +12,25 @@ func init() { // define files file2 := &embedded.EmbeddedFile{ Filename: ".gitkeep", - FileModTime: time.Unix(1601384356, 0), + FileModTime: time.Unix(1615910215, 0), Content: string(""), } file3 := &embedded.EmbeddedFile{ Filename: "en.po", - FileModTime: time.Unix(1605200097, 0), + FileModTime: time.Unix(1624456434, 0), - Content: string("msgid \"\"\nmsgstr \"\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"Additional help topics:\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"Aliases:\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"Available Commands:\"\n\n#: cli/board/details.go:124\nmsgid \"Board name:\"\nmsgstr \"Board name:\"\n\n#: cli/board/details.go:126\nmsgid \"Board version:\"\nmsgstr \"Board version:\"\n\n#: cli/board/details.go:172\nmsgid \"Checksum:\"\nmsgstr \"Checksum:\"\n\n#: cli/board/details.go:128\nmsgid \"Debugging supported:\"\nmsgstr \"Debugging supported:\"\n\n#: cli/board/details.go:60\n#: cli/board/details.go:75\nmsgid \"Error getting board details: %v\"\nmsgstr \"Error getting board details: %v\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"Examples:\"\n\n#: cli/board/details.go:170\nmsgid \"File:\"\nmsgstr \"File:\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"Flags:\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"Global Flags:\"\n\n#: cli/board/details.go:97\n#: cli/board/details.go:198\nmsgid \"Id\"\nmsgstr \"Id\"\n\n#: cli/board/details.go:140\nmsgid \"Identification properties:\"\nmsgstr \"Identification properties:\"\n\n#: cli/board/details.go:198\nmsgid \"Name\"\nmsgstr \"Name\"\n\n#: cli/board/details.go:169\nmsgid \"OS:\"\nmsgstr \"OS:\"\n\n#: cli/board/details.go:133\nmsgid \"Official Arduino board:\"\nmsgstr \"Official Arduino board:\"\n\n#: cli/board/details.go:181\nmsgid \"Option:\"\nmsgstr \"Option:\"\n\n#: cli/board/details.go:149\nmsgid \"Package URL:\"\nmsgstr \"Package URL:\"\n\n#: cli/board/details.go:148\nmsgid \"Package maintainer:\"\nmsgstr \"Package maintainer:\"\n\n#: cli/board/details.go:147\nmsgid \"Package name:\"\nmsgstr \"Package name:\"\n\n#: cli/board/details.go:151\nmsgid \"Package online help:\"\nmsgstr \"Package online help:\"\n\n#: cli/board/details.go:150\nmsgid \"Package website:\"\nmsgstr \"Package website:\"\n\n#: cli/board/details.go:157\nmsgid \"Platform URL:\"\nmsgstr \"Platform URL:\"\n\n#: cli/board/details.go:156\nmsgid \"Platform architecture:\"\nmsgstr \"Platform architecture:\"\n\n#: cli/board/details.go:155\nmsgid \"Platform category:\"\nmsgstr \"Platform category:\"\n\n#: cli/board/details.go:162\nmsgid \"Platform checksum:\"\nmsgstr \"Platform checksum:\"\n\n#: cli/board/details.go:158\nmsgid \"Platform file name:\"\nmsgstr \"Platform file name:\"\n\n#: cli/board/details.go:154\nmsgid \"Platform name:\"\nmsgstr \"Platform name:\"\n\n#: cli/board/details.go:160\nmsgid \"Platform size (bytes):\"\nmsgstr \"Platform size (bytes):\"\n\n#: cli/board/details.go:42\nmsgid \"Print details about a board.\"\nmsgstr \"Print details about a board.\"\n\n#: cli/board/details.go:97\nmsgid \"Programmer name\"\nmsgstr \"Programmer name\"\n\n#: cli/board/details.go:198\nmsgid \"Programmers:\"\nmsgstr \"Programmers:\"\n\n#: cli/board/details.go:166\nmsgid \"Required tool:\"\nmsgstr \"Required tool:\"\n\n#: cli/board/details.go:49\nmsgid \"Show full board details\"\nmsgstr \"Show full board details\"\n\n#: cli/board/details.go:43\nmsgid \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\nmsgstr \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\n\n#: cli/board/details.go:51\nmsgid \"Show list of available programmers\"\nmsgstr \"Show list of available programmers\"\n\n#: cli/board/details.go:171\nmsgid \"Size (bytes):\"\nmsgstr \"Size (bytes):\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"Usage:\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"Use %s for more information about a command.\"\n\n"), + Content: string("msgid \"\"\nmsgstr \"\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"Additional help topics:\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"Aliases:\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"Available Commands:\"\n\n#: cli/board/details.go:120\nmsgid \"Board name:\"\nmsgstr \"Board name:\"\n\n#: cli/board/details.go:122\nmsgid \"Board version:\"\nmsgstr \"Board version:\"\n\n#: cli/board/details.go:168\nmsgid \"Checksum:\"\nmsgstr \"Checksum:\"\n\n#: cli/board/details.go:124\nmsgid \"Debugging supported:\"\nmsgstr \"Debugging supported:\"\n\n#: cli/board/details.go:71\nmsgid \"Error getting board details: %v\"\nmsgstr \"Error getting board details: %v\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"Examples:\"\n\n#: cli/board/details.go:166\nmsgid \"File:\"\nmsgstr \"File:\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"Flags:\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"Global Flags:\"\n\n#: cli/board/details.go:93\n#: cli/board/details.go:194\nmsgid \"Id\"\nmsgstr \"Id\"\n\n#: cli/board/details.go:135\nmsgid \"Identification properties:\"\nmsgstr \"Identification properties:\"\n\n#: cli/board/details.go:194\nmsgid \"Name\"\nmsgstr \"Name\"\n\n#: cli/board/details.go:165\nmsgid \"OS:\"\nmsgstr \"OS:\"\n\n#: cli/board/details.go:129\nmsgid \"Official Arduino board:\"\nmsgstr \"Official Arduino board:\"\n\n#: cli/board/details.go:177\nmsgid \"Option:\"\nmsgstr \"Option:\"\n\n#: cli/board/details.go:145\nmsgid \"Package URL:\"\nmsgstr \"Package URL:\"\n\n#: cli/board/details.go:144\nmsgid \"Package maintainer:\"\nmsgstr \"Package maintainer:\"\n\n#: cli/board/details.go:143\nmsgid \"Package name:\"\nmsgstr \"Package name:\"\n\n#: cli/board/details.go:147\nmsgid \"Package online help:\"\nmsgstr \"Package online help:\"\n\n#: cli/board/details.go:146\nmsgid \"Package website:\"\nmsgstr \"Package website:\"\n\n#: cli/board/details.go:153\nmsgid \"Platform URL:\"\nmsgstr \"Platform URL:\"\n\n#: cli/board/details.go:152\nmsgid \"Platform architecture:\"\nmsgstr \"Platform architecture:\"\n\n#: cli/board/details.go:151\nmsgid \"Platform category:\"\nmsgstr \"Platform category:\"\n\n#: cli/board/details.go:158\nmsgid \"Platform checksum:\"\nmsgstr \"Platform checksum:\"\n\n#: cli/board/details.go:154\nmsgid \"Platform file name:\"\nmsgstr \"Platform file name:\"\n\n#: cli/board/details.go:150\nmsgid \"Platform name:\"\nmsgstr \"Platform name:\"\n\n#: cli/board/details.go:156\nmsgid \"Platform size (bytes):\"\nmsgstr \"Platform size (bytes):\"\n\n#: cli/board/details.go:42\nmsgid \"Print details about a board.\"\nmsgstr \"Print details about a board.\"\n\n#: cli/board/details.go:93\nmsgid \"Programmer name\"\nmsgstr \"Programmer name\"\n\n#: cli/board/details.go:194\nmsgid \"Programmers:\"\nmsgstr \"Programmers:\"\n\n#: cli/board/details.go:162\nmsgid \"Required tool:\"\nmsgstr \"Required tool:\"\n\n#: cli/board/details.go:49\nmsgid \"Show full board details\"\nmsgstr \"Show full board details\"\n\n#: cli/board/details.go:43\nmsgid \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\nmsgstr \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\n\n#: cli/board/details.go:51\nmsgid \"Show list of available programmers\"\nmsgstr \"Show list of available programmers\"\n\n#: cli/board/details.go:167\nmsgid \"Size (bytes):\"\nmsgstr \"Size (bytes):\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"Usage:\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"Use %s for more information about a command.\"\n\n"), } file4 := &embedded.EmbeddedFile{ Filename: "it_IT.po", - FileModTime: time.Unix(1601384356, 0), + FileModTime: time.Unix(1615910215, 0), Content: string("# \n# Translators:\n# Cristian Maglie , 2020\n# \nmsgid \"\"\nmsgstr \"\"\n\"Last-Translator: Cristian Maglie , 2020\\n\"\n\"Language-Team: Italian (Italy) (https://www.transifex.com/arduino-1/teams/108174/it_IT/)\\n\"\n\"Language: it_IT\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"Informazioni aggiuntive:\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"Alias:\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"Comandi disponibili:\"\n\n#: cli/board/details.go:98\nmsgid \"Board name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:100\nmsgid \"Board version:\"\nmsgstr \"\"\n\n#: cli/board/details.go:141\nmsgid \"Checksum:\"\nmsgstr \"\"\n\n#: cli/board/details.go:55 cli/board/details.go:65\nmsgid \"Error getting board details: %v\"\nmsgstr \"\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"Esempi:\"\n\n#: cli/board/details.go:139\nmsgid \"File:\"\nmsgstr \"\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"\"\n\n#: cli/board/details.go:111\nmsgid \"Identification properties:\"\nmsgstr \"\"\n\n#: cli/board/details.go:138\nmsgid \"OS:\"\nmsgstr \"\"\n\n#: cli/board/details.go:104\nmsgid \"Official Arduino board:\"\nmsgstr \"\"\n\n#: cli/board/details.go:150\nmsgid \"Option:\"\nmsgstr \"\"\n\n#: cli/board/details.go:120\nmsgid \"Package URL:\"\nmsgstr \"\"\n\n#: cli/board/details.go:119\nmsgid \"Package maintainer:\"\nmsgstr \"\"\n\n#: cli/board/details.go:118\nmsgid \"Package name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:122\nmsgid \"Package online help:\"\nmsgstr \"\"\n\n#: cli/board/details.go:121\nmsgid \"Package website:\"\nmsgstr \"\"\n\n#: cli/board/details.go:128\nmsgid \"Platform URL:\"\nmsgstr \"\"\n\n#: cli/board/details.go:127\nmsgid \"Platform architecture:\"\nmsgstr \"\"\n\n#: cli/board/details.go:126\nmsgid \"Platform category:\"\nmsgstr \"\"\n\n#: cli/board/details.go:131\nmsgid \"Platform checksum:\"\nmsgstr \"\"\n\n#: cli/board/details.go:129\nmsgid \"Platform file name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:125\nmsgid \"Platform name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:130\nmsgid \"Platform size (bytes):\"\nmsgstr \"\"\n\n#: cli/board/details.go:40\nmsgid \"Print details about a board.\"\nmsgstr \"\"\n\n#: cli/board/details.go:135\nmsgid \"Required tool:\"\nmsgstr \"\"\n\n#: cli/board/details.go:47\nmsgid \"Show full board details\"\nmsgstr \"\"\n\n#: cli/board/details.go:41\nmsgid \"\"\n\"Show information about a board, in particular if the board has options to be\"\n\" specified in the FQBN.\"\nmsgstr \"\"\n\n#: cli/board/details.go:140\nmsgid \"Size (bytes):\"\nmsgstr \"\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"\"\n"), } file5 := &embedded.EmbeddedFile{ Filename: "pt_BR.po", - FileModTime: time.Unix(1601384356, 0), + FileModTime: time.Unix(1615910215, 0), Content: string("# \n# Translators:\n# Henrique Diniz , 2020\n# \nmsgid \"\"\nmsgstr \"\"\n\"Last-Translator: Henrique Diniz , 2020\\n\"\n\"Language-Team: Portuguese (Brazil) (https://www.transifex.com/arduino-1/teams/108174/pt_BR/)\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"\"\n\n#: cli/board/details.go:98\nmsgid \"Board name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:100\nmsgid \"Board version:\"\nmsgstr \"\"\n\n#: cli/board/details.go:141\nmsgid \"Checksum:\"\nmsgstr \"\"\n\n#: cli/board/details.go:55 cli/board/details.go:65\nmsgid \"Error getting board details: %v\"\nmsgstr \"\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"\"\n\n#: cli/board/details.go:139\nmsgid \"File:\"\nmsgstr \"\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"\"\n\n#: cli/board/details.go:111\nmsgid \"Identification properties:\"\nmsgstr \"\"\n\n#: cli/board/details.go:138\nmsgid \"OS:\"\nmsgstr \"\"\n\n#: cli/board/details.go:104\nmsgid \"Official Arduino board:\"\nmsgstr \"\"\n\n#: cli/board/details.go:150\nmsgid \"Option:\"\nmsgstr \"\"\n\n#: cli/board/details.go:120\nmsgid \"Package URL:\"\nmsgstr \"\"\n\n#: cli/board/details.go:119\nmsgid \"Package maintainer:\"\nmsgstr \"\"\n\n#: cli/board/details.go:118\nmsgid \"Package name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:122\nmsgid \"Package online help:\"\nmsgstr \"\"\n\n#: cli/board/details.go:121\nmsgid \"Package website:\"\nmsgstr \"\"\n\n#: cli/board/details.go:128\nmsgid \"Platform URL:\"\nmsgstr \"\"\n\n#: cli/board/details.go:127\nmsgid \"Platform architecture:\"\nmsgstr \"\"\n\n#: cli/board/details.go:126\nmsgid \"Platform category:\"\nmsgstr \"\"\n\n#: cli/board/details.go:131\nmsgid \"Platform checksum:\"\nmsgstr \"\"\n\n#: cli/board/details.go:129\nmsgid \"Platform file name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:125\nmsgid \"Platform name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:130\nmsgid \"Platform size (bytes):\"\nmsgstr \"\"\n\n#: cli/board/details.go:40\nmsgid \"Print details about a board.\"\nmsgstr \"\"\n\n#: cli/board/details.go:135\nmsgid \"Required tool:\"\nmsgstr \"\"\n\n#: cli/board/details.go:47\nmsgid \"Show full board details\"\nmsgstr \"\"\n\n#: cli/board/details.go:41\nmsgid \"\"\n\"Show information about a board, in particular if the board has options to be\"\n\" specified in the FQBN.\"\nmsgstr \"\"\n\n#: cli/board/details.go:140\nmsgid \"Size (bytes):\"\nmsgstr \"\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"Use %s para mais informações sobre um comando.\"\n"), } @@ -38,7 +38,7 @@ func init() { // define dirs dir1 := &embedded.EmbeddedDir{ Filename: "", - DirModTime: time.Unix(1602772452, 0), + DirModTime: time.Unix(1624438332, 0), ChildFiles: []*embedded.EmbeddedFile{ file2, // ".gitkeep" file3, // "en.po" @@ -54,7 +54,7 @@ func init() { // register embeddedBox embedded.RegisterEmbeddedBox(`./data`, &embedded.EmbeddedBox{ Name: `./data`, - Time: time.Unix(1602772452, 0), + Time: time.Unix(1624438332, 0), Dirs: map[string]*embedded.EmbeddedDir{ "": dir1, }, diff --git a/rpc/cc/arduino/cli/commands/v1/board.pb.go b/rpc/cc/arduino/cli/commands/v1/board.pb.go index d567258d030..b10381ad7d5 100644 --- a/rpc/cc/arduino/cli/commands/v1/board.pb.go +++ b/rpc/cc/arduino/cli/commands/v1/board.pb.go @@ -121,12 +121,12 @@ type BoardDetailsResponse struct { ToolsDependencies []*ToolsDependencies `protobuf:"bytes,10,rep,name=tools_dependencies,json=toolsDependencies,proto3" json:"tools_dependencies,omitempty"` // The board's custom configuration options. ConfigOptions []*ConfigOption `protobuf:"bytes,11,rep,name=config_options,json=configOptions,proto3" json:"config_options,omitempty"` - // Identifying information for the board (e.g., USB VID/PID). - IdentificationPrefs []*IdentificationPref `protobuf:"bytes,12,rep,name=identification_prefs,json=identificationPrefs,proto3" json:"identification_prefs,omitempty"` // List of programmers supported by the board Programmers []*Programmer `protobuf:"bytes,13,rep,name=programmers,proto3" json:"programmers,omitempty"` // Set to true if the board supports debugging DebuggingSupported bool `protobuf:"varint,14,opt,name=debugging_supported,json=debuggingSupported,proto3" json:"debugging_supported,omitempty"` + // Identifying information for the board (e.g., USB VID/PID). + IdentificationProperties []*BoardIdentificationProperties `protobuf:"bytes,15,rep,name=identification_properties,json=identificationProperties,proto3" json:"identification_properties,omitempty"` } func (x *BoardDetailsResponse) Reset() { @@ -238,13 +238,6 @@ func (x *BoardDetailsResponse) GetConfigOptions() []*ConfigOption { return nil } -func (x *BoardDetailsResponse) GetIdentificationPrefs() []*IdentificationPref { - if x != nil { - return x.IdentificationPrefs - } - return nil -} - func (x *BoardDetailsResponse) GetProgrammers() []*Programmer { if x != nil { return x.Programmers @@ -259,82 +252,39 @@ func (x *BoardDetailsResponse) GetDebuggingSupported() bool { return false } -type IdentificationPref struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Identifying information for USB-connected boards. - UsbId *USBID `protobuf:"bytes,1,opt,name=usb_id,json=usbId,proto3" json:"usb_id,omitempty"` -} - -func (x *IdentificationPref) Reset() { - *x = IdentificationPref{} - if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *IdentificationPref) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*IdentificationPref) ProtoMessage() {} - -func (x *IdentificationPref) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use IdentificationPref.ProtoReflect.Descriptor instead. -func (*IdentificationPref) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{2} -} - -func (x *IdentificationPref) GetUsbId() *USBID { +func (x *BoardDetailsResponse) GetIdentificationProperties() []*BoardIdentificationProperties { if x != nil { - return x.UsbId + return x.IdentificationProperties } return nil } -type USBID struct { +type BoardIdentificationProperties struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // USB vendor ID. - Vid string `protobuf:"bytes,1,opt,name=vid,proto3" json:"vid,omitempty"` - // USB product ID. - Pid string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"` + // A set of properties that must all be matched to identify the board + Properties map[string]string `protobuf:"bytes,1,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *USBID) Reset() { - *x = USBID{} +func (x *BoardIdentificationProperties) Reset() { + *x = BoardIdentificationProperties{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[3] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *USBID) String() string { +func (x *BoardIdentificationProperties) String() string { return protoimpl.X.MessageStringOf(x) } -func (*USBID) ProtoMessage() {} +func (*BoardIdentificationProperties) ProtoMessage() {} -func (x *USBID) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[3] +func (x *BoardIdentificationProperties) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -345,23 +295,16 @@ func (x *USBID) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use USBID.ProtoReflect.Descriptor instead. -func (*USBID) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{3} -} - -func (x *USBID) GetVid() string { - if x != nil { - return x.Vid - } - return "" +// Deprecated: Use BoardIdentificationProperties.ProtoReflect.Descriptor instead. +func (*BoardIdentificationProperties) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{2} } -func (x *USBID) GetPid() string { +func (x *BoardIdentificationProperties) GetProperties() map[string]string { if x != nil { - return x.Pid + return x.Properties } - return "" + return nil } type Package struct { @@ -387,7 +330,7 @@ type Package struct { func (x *Package) Reset() { *x = Package{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[4] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -400,7 +343,7 @@ func (x *Package) String() string { func (*Package) ProtoMessage() {} func (x *Package) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[4] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -413,7 +356,7 @@ func (x *Package) ProtoReflect() protoreflect.Message { // Deprecated: Use Package.ProtoReflect.Descriptor instead. func (*Package) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{4} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{3} } func (x *Package) GetMaintainer() string { @@ -470,7 +413,7 @@ type Help struct { func (x *Help) Reset() { *x = Help{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[5] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -483,7 +426,7 @@ func (x *Help) String() string { func (*Help) ProtoMessage() {} func (x *Help) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[5] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -496,7 +439,7 @@ func (x *Help) ProtoReflect() protoreflect.Message { // Deprecated: Use Help.ProtoReflect.Descriptor instead. func (*Help) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{5} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{4} } func (x *Help) GetOnline() string { @@ -530,7 +473,7 @@ type BoardPlatform struct { func (x *BoardPlatform) Reset() { *x = BoardPlatform{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[6] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -543,7 +486,7 @@ func (x *BoardPlatform) String() string { func (*BoardPlatform) ProtoMessage() {} func (x *BoardPlatform) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[6] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -556,7 +499,7 @@ func (x *BoardPlatform) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardPlatform.ProtoReflect.Descriptor instead. func (*BoardPlatform) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{6} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{5} } func (x *BoardPlatform) GetArchitecture() string { @@ -626,7 +569,7 @@ type ToolsDependencies struct { func (x *ToolsDependencies) Reset() { *x = ToolsDependencies{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[7] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -639,7 +582,7 @@ func (x *ToolsDependencies) String() string { func (*ToolsDependencies) ProtoMessage() {} func (x *ToolsDependencies) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[7] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -652,7 +595,7 @@ func (x *ToolsDependencies) ProtoReflect() protoreflect.Message { // Deprecated: Use ToolsDependencies.ProtoReflect.Descriptor instead. func (*ToolsDependencies) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{7} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{6} } func (x *ToolsDependencies) GetPackager() string { @@ -703,7 +646,7 @@ type Systems struct { func (x *Systems) Reset() { *x = Systems{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[8] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -716,7 +659,7 @@ func (x *Systems) String() string { func (*Systems) ProtoMessage() {} func (x *Systems) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[8] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -729,7 +672,7 @@ func (x *Systems) ProtoReflect() protoreflect.Message { // Deprecated: Use Systems.ProtoReflect.Descriptor instead. func (*Systems) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{8} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{7} } func (x *Systems) GetChecksum() string { @@ -783,7 +726,7 @@ type ConfigOption struct { func (x *ConfigOption) Reset() { *x = ConfigOption{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[9] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -796,7 +739,7 @@ func (x *ConfigOption) String() string { func (*ConfigOption) ProtoMessage() {} func (x *ConfigOption) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[9] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -809,7 +752,7 @@ func (x *ConfigOption) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigOption.ProtoReflect.Descriptor instead. func (*ConfigOption) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{9} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{8} } func (x *ConfigOption) GetOption() string { @@ -849,7 +792,7 @@ type ConfigValue struct { func (x *ConfigValue) Reset() { *x = ConfigValue{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[10] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -862,7 +805,7 @@ func (x *ConfigValue) String() string { func (*ConfigValue) ProtoMessage() {} func (x *ConfigValue) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[10] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -875,7 +818,7 @@ func (x *ConfigValue) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigValue.ProtoReflect.Descriptor instead. func (*ConfigValue) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{10} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{9} } func (x *ConfigValue) GetValue() string { @@ -919,7 +862,7 @@ type BoardAttachRequest struct { func (x *BoardAttachRequest) Reset() { *x = BoardAttachRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[11] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -932,7 +875,7 @@ func (x *BoardAttachRequest) String() string { func (*BoardAttachRequest) ProtoMessage() {} func (x *BoardAttachRequest) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[11] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -945,7 +888,7 @@ func (x *BoardAttachRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardAttachRequest.ProtoReflect.Descriptor instead. func (*BoardAttachRequest) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{11} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{10} } func (x *BoardAttachRequest) GetInstance() *Instance { @@ -988,7 +931,7 @@ type BoardAttachResponse struct { func (x *BoardAttachResponse) Reset() { *x = BoardAttachResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[12] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1001,7 +944,7 @@ func (x *BoardAttachResponse) String() string { func (*BoardAttachResponse) ProtoMessage() {} func (x *BoardAttachResponse) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[12] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1014,7 +957,7 @@ func (x *BoardAttachResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardAttachResponse.ProtoReflect.Descriptor instead. func (*BoardAttachResponse) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{12} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{11} } func (x *BoardAttachResponse) GetTaskProgress() *TaskProgress { @@ -1036,7 +979,7 @@ type BoardListRequest struct { func (x *BoardListRequest) Reset() { *x = BoardListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[13] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1049,7 +992,7 @@ func (x *BoardListRequest) String() string { func (*BoardListRequest) ProtoMessage() {} func (x *BoardListRequest) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[13] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1062,7 +1005,7 @@ func (x *BoardListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardListRequest.ProtoReflect.Descriptor instead. func (*BoardListRequest) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{13} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{12} } func (x *BoardListRequest) GetInstance() *Instance { @@ -1084,7 +1027,7 @@ type BoardListResponse struct { func (x *BoardListResponse) Reset() { *x = BoardListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[14] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1097,7 +1040,7 @@ func (x *BoardListResponse) String() string { func (*BoardListResponse) ProtoMessage() {} func (x *BoardListResponse) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[14] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1110,7 +1053,7 @@ func (x *BoardListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardListResponse.ProtoReflect.Descriptor instead. func (*BoardListResponse) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{14} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{13} } func (x *BoardListResponse) GetPorts() []*DetectedPort { @@ -1140,7 +1083,7 @@ type DetectedPort struct { func (x *DetectedPort) Reset() { *x = DetectedPort{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[15] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1153,7 +1096,7 @@ func (x *DetectedPort) String() string { func (*DetectedPort) ProtoMessage() {} func (x *DetectedPort) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[15] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1166,7 +1109,7 @@ func (x *DetectedPort) ProtoReflect() protoreflect.Message { // Deprecated: Use DetectedPort.ProtoReflect.Descriptor instead. func (*DetectedPort) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{15} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{14} } func (x *DetectedPort) GetAddress() string { @@ -1220,7 +1163,7 @@ type BoardListAllRequest struct { func (x *BoardListAllRequest) Reset() { *x = BoardListAllRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[16] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1233,7 +1176,7 @@ func (x *BoardListAllRequest) String() string { func (*BoardListAllRequest) ProtoMessage() {} func (x *BoardListAllRequest) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[16] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1246,7 +1189,7 @@ func (x *BoardListAllRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardListAllRequest.ProtoReflect.Descriptor instead. func (*BoardListAllRequest) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{16} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{15} } func (x *BoardListAllRequest) GetInstance() *Instance { @@ -1282,7 +1225,7 @@ type BoardListAllResponse struct { func (x *BoardListAllResponse) Reset() { *x = BoardListAllResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[17] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1295,7 +1238,7 @@ func (x *BoardListAllResponse) String() string { func (*BoardListAllResponse) ProtoMessage() {} func (x *BoardListAllResponse) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[17] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1308,7 +1251,7 @@ func (x *BoardListAllResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardListAllResponse.ProtoReflect.Descriptor instead. func (*BoardListAllResponse) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{17} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{16} } func (x *BoardListAllResponse) GetBoards() []*BoardListItem { @@ -1332,7 +1275,7 @@ type BoardListWatchRequest struct { func (x *BoardListWatchRequest) Reset() { *x = BoardListWatchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[18] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1345,7 +1288,7 @@ func (x *BoardListWatchRequest) String() string { func (*BoardListWatchRequest) ProtoMessage() {} func (x *BoardListWatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[18] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1358,7 +1301,7 @@ func (x *BoardListWatchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardListWatchRequest.ProtoReflect.Descriptor instead. func (*BoardListWatchRequest) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{18} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{17} } func (x *BoardListWatchRequest) GetInstance() *Instance { @@ -1391,7 +1334,7 @@ type BoardListWatchResponse struct { func (x *BoardListWatchResponse) Reset() { *x = BoardListWatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[19] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1404,7 +1347,7 @@ func (x *BoardListWatchResponse) String() string { func (*BoardListWatchResponse) ProtoMessage() {} func (x *BoardListWatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[19] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1417,7 +1360,7 @@ func (x *BoardListWatchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardListWatchResponse.ProtoReflect.Descriptor instead. func (*BoardListWatchResponse) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{19} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{18} } func (x *BoardListWatchResponse) GetEventType() string { @@ -1463,7 +1406,7 @@ type BoardListItem struct { func (x *BoardListItem) Reset() { *x = BoardListItem{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[20] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1476,7 +1419,7 @@ func (x *BoardListItem) String() string { func (*BoardListItem) ProtoMessage() {} func (x *BoardListItem) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[20] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1489,7 +1432,7 @@ func (x *BoardListItem) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardListItem.ProtoReflect.Descriptor instead. func (*BoardListItem) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{20} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{19} } func (x *BoardListItem) GetName() string { @@ -1551,7 +1494,7 @@ type BoardSearchRequest struct { func (x *BoardSearchRequest) Reset() { *x = BoardSearchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[21] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1564,7 +1507,7 @@ func (x *BoardSearchRequest) String() string { func (*BoardSearchRequest) ProtoMessage() {} func (x *BoardSearchRequest) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[21] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1577,7 +1520,7 @@ func (x *BoardSearchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardSearchRequest.ProtoReflect.Descriptor instead. func (*BoardSearchRequest) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{21} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{20} } func (x *BoardSearchRequest) GetInstance() *Instance { @@ -1613,7 +1556,7 @@ type BoardSearchResponse struct { func (x *BoardSearchResponse) Reset() { *x = BoardSearchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[22] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1626,7 +1569,7 @@ func (x *BoardSearchResponse) String() string { func (*BoardSearchResponse) ProtoMessage() {} func (x *BoardSearchResponse) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[22] + mi := &file_cc_arduino_cli_commands_v1_board_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1639,7 +1582,7 @@ func (x *BoardSearchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BoardSearchResponse.ProtoReflect.Descriptor instead. func (*BoardSearchResponse) Descriptor() ([]byte, []int) { - return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{22} + return file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP(), []int{21} } func (x *BoardSearchResponse) GetBoards() []*BoardListItem { @@ -1665,7 +1608,7 @@ var file_cc_arduino_cli_commands_v1_board_proto_rawDesc = []byte{ 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, 0x62, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x62, 0x6e, 0x22, 0xda, 0x05, 0x0a, 0x14, 0x42, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x62, 0x6e, 0x22, 0xef, 0x05, 0x0a, 0x14, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, 0x62, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x62, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, @@ -1697,198 +1640,205 @@ var file_cc_arduino_cli_commands_v1_board_proto_rawDesc = []byte{ 0x32, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, 0x14, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, - 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, - 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x52, 0x13, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x73, 0x12, 0x48, 0x0a, 0x0b, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x12, 0x38, 0x0a, - 0x06, 0x75, 0x73, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x53, 0x42, 0x49, 0x44, - 0x52, 0x05, 0x75, 0x73, 0x62, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x05, 0x55, 0x53, 0x42, 0x49, 0x44, - 0x12, 0x10, 0x0a, 0x03, 0x76, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, - 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x70, 0x69, 0x64, 0x22, 0xbc, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, - 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, - 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x63, - 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x04, 0x68, - 0x65, 0x6c, 0x70, 0x22, 0x1e, 0x0a, 0x04, 0x48, 0x65, 0x6c, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6f, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x6e, 0x6c, - 0x69, 0x6e, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x0d, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, - 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x54, 0x6f, 0x6f, 0x6c, 0x73, - 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x07, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, - 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x07, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x07, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x12, 0x0a, - 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, - 0x74, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, - 0x7a, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3f, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, + 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x72, 0x6f, + 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, - 0x60, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x12, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x55, 0x72, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x65, 0x74, 0x63, - 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6b, - 0x65, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, - 0x64, 0x0a, 0x13, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50, - 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x54, 0x0a, 0x10, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, + 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x12, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x12, 0x76, 0x0a, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, + 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x18, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xc9, 0x01, 0x0a, + 0x1d, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x69, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbc, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x65, 0x62, + 0x73, 0x69, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x34, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x6c, + 0x70, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x22, 0x1e, 0x0a, 0x04, 0x48, 0x65, 0x6c, 0x70, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x0d, 0x42, 0x6f, 0x61, 0x72, + 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x54, + 0x6f, 0x6f, 0x6c, 0x73, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x07, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x53, 0x0a, 0x11, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3e, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x74, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, - 0x22, 0xd3, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x72, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x41, - 0x0a, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, + 0x52, 0x07, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x07, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x12, 0x3f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x12, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, - 0x64, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xac, 0x01, 0x0a, 0x13, 0x42, 0x6f, 0x61, 0x72, 0x64, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, - 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x72, 0x67, - 0x73, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x68, 0x69, 0x64, - 0x64, 0x65, 0x6e, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x73, 0x22, 0x59, 0x0a, 0x14, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, - 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, - 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, - 0x22, 0x77, 0x0a, 0x15, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, - 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x22, 0x8b, 0x01, 0x0a, 0x16, 0x42, 0x6f, - 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x55, 0x72, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x6b, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x22, 0x64, 0x0a, 0x13, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xba, 0x01, 0x0a, 0x0d, 0x42, 0x6f, 0x61, 0x72, - 0x64, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x66, 0x71, 0x62, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x62, - 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x10, - 0x0a, 0x03, 0x76, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x69, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, - 0x69, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x61, 0x73, + 0x6b, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x54, 0x0a, 0x10, 0x42, 0x6f, 0x61, + 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, + 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, + 0x53, 0x0a, 0x11, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x22, 0xd3, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xac, 0x01, 0x0a, 0x13, 0x42, + 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xab, 0x01, 0x0a, 0x12, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, + 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x41, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, 0x69, 0x64, + 0x64, 0x65, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x22, 0x59, 0x0a, 0x14, 0x42, 0x6f, 0x61, + 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x41, 0x0a, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x73, 0x22, 0x77, 0x0a, 0x15, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, + 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, + 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x22, 0x8b, 0x01, + 0x0a, 0x16, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, + 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x52, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xba, 0x01, 0x0a, 0x0d, + 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, 0x62, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x66, 0x71, 0x62, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x68, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x48, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x76, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xab, 0x01, 0x0a, 0x12, 0x42, 0x6f, 0x61, + 0x72, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x72, 0x67, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x72, + 0x67, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x68, 0x69, + 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, + 0x42, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x22, 0x58, 0x0a, 0x13, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, + 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x72, 0x67, 0x73, 0x12, 0x32, - 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, - 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x42, 0x6f, 0x61, 0x72, - 0x64, 0x73, 0x22, 0x58, 0x0a, 0x13, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x63, 0x2e, 0x61, - 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x42, 0x48, 0x5a, 0x46, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, - 0x6e, 0x6f, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x72, - 0x70, 0x63, 0x2f, 0x63, 0x63, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2f, 0x63, 0x6c, - 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, + 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, + 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2d, 0x63, + 0x6c, 0x69, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x63, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x6f, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x76, + 0x31, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -1905,58 +1855,58 @@ func file_cc_arduino_cli_commands_v1_board_proto_rawDescGZIP() []byte { var file_cc_arduino_cli_commands_v1_board_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_cc_arduino_cli_commands_v1_board_proto_goTypes = []interface{}{ - (*BoardDetailsRequest)(nil), // 0: cc.arduino.cli.commands.v1.BoardDetailsRequest - (*BoardDetailsResponse)(nil), // 1: cc.arduino.cli.commands.v1.BoardDetailsResponse - (*IdentificationPref)(nil), // 2: cc.arduino.cli.commands.v1.IdentificationPref - (*USBID)(nil), // 3: cc.arduino.cli.commands.v1.USBID - (*Package)(nil), // 4: cc.arduino.cli.commands.v1.Package - (*Help)(nil), // 5: cc.arduino.cli.commands.v1.Help - (*BoardPlatform)(nil), // 6: cc.arduino.cli.commands.v1.BoardPlatform - (*ToolsDependencies)(nil), // 7: cc.arduino.cli.commands.v1.ToolsDependencies - (*Systems)(nil), // 8: cc.arduino.cli.commands.v1.Systems - (*ConfigOption)(nil), // 9: cc.arduino.cli.commands.v1.ConfigOption - (*ConfigValue)(nil), // 10: cc.arduino.cli.commands.v1.ConfigValue - (*BoardAttachRequest)(nil), // 11: cc.arduino.cli.commands.v1.BoardAttachRequest - (*BoardAttachResponse)(nil), // 12: cc.arduino.cli.commands.v1.BoardAttachResponse - (*BoardListRequest)(nil), // 13: cc.arduino.cli.commands.v1.BoardListRequest - (*BoardListResponse)(nil), // 14: cc.arduino.cli.commands.v1.BoardListResponse - (*DetectedPort)(nil), // 15: cc.arduino.cli.commands.v1.DetectedPort - (*BoardListAllRequest)(nil), // 16: cc.arduino.cli.commands.v1.BoardListAllRequest - (*BoardListAllResponse)(nil), // 17: cc.arduino.cli.commands.v1.BoardListAllResponse - (*BoardListWatchRequest)(nil), // 18: cc.arduino.cli.commands.v1.BoardListWatchRequest - (*BoardListWatchResponse)(nil), // 19: cc.arduino.cli.commands.v1.BoardListWatchResponse - (*BoardListItem)(nil), // 20: cc.arduino.cli.commands.v1.BoardListItem - (*BoardSearchRequest)(nil), // 21: cc.arduino.cli.commands.v1.BoardSearchRequest - (*BoardSearchResponse)(nil), // 22: cc.arduino.cli.commands.v1.BoardSearchResponse - (*Instance)(nil), // 23: cc.arduino.cli.commands.v1.Instance - (*Programmer)(nil), // 24: cc.arduino.cli.commands.v1.Programmer - (*TaskProgress)(nil), // 25: cc.arduino.cli.commands.v1.TaskProgress - (*Platform)(nil), // 26: cc.arduino.cli.commands.v1.Platform + (*BoardDetailsRequest)(nil), // 0: cc.arduino.cli.commands.v1.BoardDetailsRequest + (*BoardDetailsResponse)(nil), // 1: cc.arduino.cli.commands.v1.BoardDetailsResponse + (*BoardIdentificationProperties)(nil), // 2: cc.arduino.cli.commands.v1.BoardIdentificationProperties + (*Package)(nil), // 3: cc.arduino.cli.commands.v1.Package + (*Help)(nil), // 4: cc.arduino.cli.commands.v1.Help + (*BoardPlatform)(nil), // 5: cc.arduino.cli.commands.v1.BoardPlatform + (*ToolsDependencies)(nil), // 6: cc.arduino.cli.commands.v1.ToolsDependencies + (*Systems)(nil), // 7: cc.arduino.cli.commands.v1.Systems + (*ConfigOption)(nil), // 8: cc.arduino.cli.commands.v1.ConfigOption + (*ConfigValue)(nil), // 9: cc.arduino.cli.commands.v1.ConfigValue + (*BoardAttachRequest)(nil), // 10: cc.arduino.cli.commands.v1.BoardAttachRequest + (*BoardAttachResponse)(nil), // 11: cc.arduino.cli.commands.v1.BoardAttachResponse + (*BoardListRequest)(nil), // 12: cc.arduino.cli.commands.v1.BoardListRequest + (*BoardListResponse)(nil), // 13: cc.arduino.cli.commands.v1.BoardListResponse + (*DetectedPort)(nil), // 14: cc.arduino.cli.commands.v1.DetectedPort + (*BoardListAllRequest)(nil), // 15: cc.arduino.cli.commands.v1.BoardListAllRequest + (*BoardListAllResponse)(nil), // 16: cc.arduino.cli.commands.v1.BoardListAllResponse + (*BoardListWatchRequest)(nil), // 17: cc.arduino.cli.commands.v1.BoardListWatchRequest + (*BoardListWatchResponse)(nil), // 18: cc.arduino.cli.commands.v1.BoardListWatchResponse + (*BoardListItem)(nil), // 19: cc.arduino.cli.commands.v1.BoardListItem + (*BoardSearchRequest)(nil), // 20: cc.arduino.cli.commands.v1.BoardSearchRequest + (*BoardSearchResponse)(nil), // 21: cc.arduino.cli.commands.v1.BoardSearchResponse + nil, // 22: cc.arduino.cli.commands.v1.BoardIdentificationProperties.PropertiesEntry + (*Instance)(nil), // 23: cc.arduino.cli.commands.v1.Instance + (*Programmer)(nil), // 24: cc.arduino.cli.commands.v1.Programmer + (*TaskProgress)(nil), // 25: cc.arduino.cli.commands.v1.TaskProgress + (*Platform)(nil), // 26: cc.arduino.cli.commands.v1.Platform } var file_cc_arduino_cli_commands_v1_board_proto_depIdxs = []int32{ 23, // 0: cc.arduino.cli.commands.v1.BoardDetailsRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 4, // 1: cc.arduino.cli.commands.v1.BoardDetailsResponse.package:type_name -> cc.arduino.cli.commands.v1.Package - 6, // 2: cc.arduino.cli.commands.v1.BoardDetailsResponse.platform:type_name -> cc.arduino.cli.commands.v1.BoardPlatform - 7, // 3: cc.arduino.cli.commands.v1.BoardDetailsResponse.tools_dependencies:type_name -> cc.arduino.cli.commands.v1.ToolsDependencies - 9, // 4: cc.arduino.cli.commands.v1.BoardDetailsResponse.config_options:type_name -> cc.arduino.cli.commands.v1.ConfigOption - 2, // 5: cc.arduino.cli.commands.v1.BoardDetailsResponse.identification_prefs:type_name -> cc.arduino.cli.commands.v1.IdentificationPref - 24, // 6: cc.arduino.cli.commands.v1.BoardDetailsResponse.programmers:type_name -> cc.arduino.cli.commands.v1.Programmer - 3, // 7: cc.arduino.cli.commands.v1.IdentificationPref.usb_id:type_name -> cc.arduino.cli.commands.v1.USBID - 5, // 8: cc.arduino.cli.commands.v1.Package.help:type_name -> cc.arduino.cli.commands.v1.Help - 8, // 9: cc.arduino.cli.commands.v1.ToolsDependencies.systems:type_name -> cc.arduino.cli.commands.v1.Systems - 10, // 10: cc.arduino.cli.commands.v1.ConfigOption.values:type_name -> cc.arduino.cli.commands.v1.ConfigValue + 3, // 1: cc.arduino.cli.commands.v1.BoardDetailsResponse.package:type_name -> cc.arduino.cli.commands.v1.Package + 5, // 2: cc.arduino.cli.commands.v1.BoardDetailsResponse.platform:type_name -> cc.arduino.cli.commands.v1.BoardPlatform + 6, // 3: cc.arduino.cli.commands.v1.BoardDetailsResponse.tools_dependencies:type_name -> cc.arduino.cli.commands.v1.ToolsDependencies + 8, // 4: cc.arduino.cli.commands.v1.BoardDetailsResponse.config_options:type_name -> cc.arduino.cli.commands.v1.ConfigOption + 24, // 5: cc.arduino.cli.commands.v1.BoardDetailsResponse.programmers:type_name -> cc.arduino.cli.commands.v1.Programmer + 2, // 6: cc.arduino.cli.commands.v1.BoardDetailsResponse.identification_properties:type_name -> cc.arduino.cli.commands.v1.BoardIdentificationProperties + 22, // 7: cc.arduino.cli.commands.v1.BoardIdentificationProperties.properties:type_name -> cc.arduino.cli.commands.v1.BoardIdentificationProperties.PropertiesEntry + 4, // 8: cc.arduino.cli.commands.v1.Package.help:type_name -> cc.arduino.cli.commands.v1.Help + 7, // 9: cc.arduino.cli.commands.v1.ToolsDependencies.systems:type_name -> cc.arduino.cli.commands.v1.Systems + 9, // 10: cc.arduino.cli.commands.v1.ConfigOption.values:type_name -> cc.arduino.cli.commands.v1.ConfigValue 23, // 11: cc.arduino.cli.commands.v1.BoardAttachRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance 25, // 12: cc.arduino.cli.commands.v1.BoardAttachResponse.task_progress:type_name -> cc.arduino.cli.commands.v1.TaskProgress 23, // 13: cc.arduino.cli.commands.v1.BoardListRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 15, // 14: cc.arduino.cli.commands.v1.BoardListResponse.ports:type_name -> cc.arduino.cli.commands.v1.DetectedPort - 20, // 15: cc.arduino.cli.commands.v1.DetectedPort.boards:type_name -> cc.arduino.cli.commands.v1.BoardListItem + 14, // 14: cc.arduino.cli.commands.v1.BoardListResponse.ports:type_name -> cc.arduino.cli.commands.v1.DetectedPort + 19, // 15: cc.arduino.cli.commands.v1.DetectedPort.boards:type_name -> cc.arduino.cli.commands.v1.BoardListItem 23, // 16: cc.arduino.cli.commands.v1.BoardListAllRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 20, // 17: cc.arduino.cli.commands.v1.BoardListAllResponse.boards:type_name -> cc.arduino.cli.commands.v1.BoardListItem + 19, // 17: cc.arduino.cli.commands.v1.BoardListAllResponse.boards:type_name -> cc.arduino.cli.commands.v1.BoardListItem 23, // 18: cc.arduino.cli.commands.v1.BoardListWatchRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 15, // 19: cc.arduino.cli.commands.v1.BoardListWatchResponse.port:type_name -> cc.arduino.cli.commands.v1.DetectedPort + 14, // 19: cc.arduino.cli.commands.v1.BoardListWatchResponse.port:type_name -> cc.arduino.cli.commands.v1.DetectedPort 26, // 20: cc.arduino.cli.commands.v1.BoardListItem.platform:type_name -> cc.arduino.cli.commands.v1.Platform 23, // 21: cc.arduino.cli.commands.v1.BoardSearchRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 20, // 22: cc.arduino.cli.commands.v1.BoardSearchResponse.boards:type_name -> cc.arduino.cli.commands.v1.BoardListItem + 19, // 22: cc.arduino.cli.commands.v1.BoardSearchResponse.boards:type_name -> cc.arduino.cli.commands.v1.BoardListItem 23, // [23:23] is the sub-list for method output_type 23, // [23:23] is the sub-list for method input_type 23, // [23:23] is the sub-list for extension type_name @@ -1996,7 +1946,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { } } file_cc_arduino_cli_commands_v1_board_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IdentificationPref); i { + switch v := v.(*BoardIdentificationProperties); i { case 0: return &v.state case 1: @@ -2008,18 +1958,6 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { } } file_cc_arduino_cli_commands_v1_board_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*USBID); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Package); i { case 0: return &v.state @@ -2031,7 +1969,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Help); i { case 0: return &v.state @@ -2043,7 +1981,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardPlatform); i { case 0: return &v.state @@ -2055,7 +1993,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ToolsDependencies); i { case 0: return &v.state @@ -2067,7 +2005,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Systems); i { case 0: return &v.state @@ -2079,7 +2017,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigOption); i { case 0: return &v.state @@ -2091,7 +2029,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigValue); i { case 0: return &v.state @@ -2103,7 +2041,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardAttachRequest); i { case 0: return &v.state @@ -2115,7 +2053,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardAttachResponse); i { case 0: return &v.state @@ -2127,7 +2065,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardListRequest); i { case 0: return &v.state @@ -2139,7 +2077,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardListResponse); i { case 0: return &v.state @@ -2151,7 +2089,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DetectedPort); i { case 0: return &v.state @@ -2163,7 +2101,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardListAllRequest); i { case 0: return &v.state @@ -2175,7 +2113,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardListAllResponse); i { case 0: return &v.state @@ -2187,7 +2125,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardListWatchRequest); i { case 0: return &v.state @@ -2199,7 +2137,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardListWatchResponse); i { case 0: return &v.state @@ -2211,7 +2149,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardListItem); i { case 0: return &v.state @@ -2223,7 +2161,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardSearchRequest); i { case 0: return &v.state @@ -2235,7 +2173,7 @@ func file_cc_arduino_cli_commands_v1_board_proto_init() { return nil } } - file_cc_arduino_cli_commands_v1_board_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_cc_arduino_cli_commands_v1_board_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoardSearchResponse); i { case 0: return &v.state diff --git a/rpc/cc/arduino/cli/commands/v1/board.proto b/rpc/cc/arduino/cli/commands/v1/board.proto index 21684a95a99..ba6b05b16d8 100644 --- a/rpc/cc/arduino/cli/commands/v1/board.proto +++ b/rpc/cc/arduino/cli/commands/v1/board.proto @@ -53,24 +53,17 @@ message BoardDetailsResponse { repeated ToolsDependencies tools_dependencies = 10; // The board's custom configuration options. repeated ConfigOption config_options = 11; - // Identifying information for the board (e.g., USB VID/PID). - repeated IdentificationPref identification_prefs = 12; // List of programmers supported by the board repeated Programmer programmers = 13; // Set to true if the board supports debugging bool debugging_supported = 14; + // Identifying information for the board (e.g., USB VID/PID). + repeated BoardIdentificationProperties identification_properties = 15; } -message IdentificationPref { - // Identifying information for USB-connected boards. - USBID usb_id = 1; -} - -message USBID { - // USB vendor ID. - string vid = 1; - // USB product ID. - string pid = 2; +message BoardIdentificationProperties { + // A set of properties that must all be matched to identify the board + map properties = 1; } message Package { diff --git a/test/test_board.py b/test/test_board.py index 41d3361b751..7a058435abf 100644 --- a/test/test_board.py +++ b/test/test_board.py @@ -353,15 +353,15 @@ ] } ], - "identification_prefs": [ + "identification_properties": [ { - "usb_id": { + "properties": { "vid": "0x2341", "pid": "0x8057" } }, { - "usb_id": { + "properties": { "vid": "0x2341", "pid": "0x0057" } @@ -483,8 +483,8 @@ def test_board_details(run_command): assert result["official"] == gold_board_details["official"] assert result["package"] == gold_board_details["package"] assert result["platform"] == gold_board_details["platform"] - for usb_id in gold_board_details["identification_prefs"]: - assert usb_id in result["identification_prefs"] + for usb_id in gold_board_details["identification_properties"]: + assert usb_id in result["identification_properties"] for programmer in gold_board_details["programmers"]: assert programmer in result["programmers"] @@ -515,8 +515,8 @@ def test_board_details_old(run_command): assert result["official"] == gold_board_details["official"] assert result["package"] == gold_board_details["package"] assert result["platform"] == gold_board_details["platform"] - for usb_id in gold_board_details["identification_prefs"]: - assert usb_id in result["identification_prefs"] + for usb_id in gold_board_details["identification_properties"]: + assert usb_id in result["identification_properties"] for programmer in gold_board_details["programmers"]: assert programmer in result["programmers"] @@ -537,14 +537,11 @@ def test_board_details_list_programmers_without_flag(run_command): run_command("core install arduino:samd@1.8.6") result = run_command("board details -b arduino:samd:nano_33_iot") assert result.ok - lines = [l.strip() for l in result.stdout.splitlines()] - assert ( - "Programmers: Id Name" - in lines - ) - assert "edbg Atmel EDBG" in lines - assert "atmel_ice Atmel-ICE" in lines - assert "sam_ice Atmel SAM-ICE" in lines + lines = [l.strip().split() for l in result.stdout.splitlines()] + assert ["Programmers:", "Id", "Name"] in lines + assert ["edbg", "Atmel", "EDBG"] in lines + assert ["atmel_ice", "Atmel-ICE"] in lines + assert ["sam_ice", "Atmel", "SAM-ICE"] in lines def test_board_details_list_programmers_flag(run_command):