)]}'
{"cloud/agent/install.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cdb1c8cd80dff5de4e7c50133658f6591ef92855","unresolved":true,"context_lines":[{"line_number":120,"context_line":"\tif err !\u003d nil {"},{"line_number":121,"context_line":"\t\treturn err"},{"line_number":122,"context_line":"\t}"},{"line_number":123,"context_line":"\tbootEntryIdx, err :\u003d efivarfs.AddBootEntry(be)"},{"line_number":124,"context_line":"\tif err !\u003d nil {"},{"line_number":125,"context_line":"\t\treturn fmt.Errorf(\"error creating EFI boot entry: %w\", err)"},{"line_number":126,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":7,"id":"203cd77d_e832f314","line":123,"range":{"start_line":123,"start_character":22,"end_line":123,"end_character":47},"updated":"2023-06-28 14:09:56.000000000","message":"This will keep adding a boot entry on every installation, right?","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"192be729d41f50a9a18b6c6c2cfca6e767063d1e","unresolved":true,"context_lines":[{"line_number":120,"context_line":"\tif err !\u003d nil {"},{"line_number":121,"context_line":"\t\treturn err"},{"line_number":122,"context_line":"\t}"},{"line_number":123,"context_line":"\tbootEntryIdx, err :\u003d efivarfs.AddBootEntry(be)"},{"line_number":124,"context_line":"\tif err !\u003d nil {"},{"line_number":125,"context_line":"\t\treturn fmt.Errorf(\"error creating EFI boot entry: %w\", err)"},{"line_number":126,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":7,"id":"968a910b_2394b9f9","line":123,"range":{"start_line":123,"start_character":22,"end_line":123,"end_character":47},"in_reply_to":"203cd77d_e832f314","updated":"2023-06-28 18:59:08.000000000","message":"This is not new code, it was just adapted to the interface changes. The previous code did the exact same, it\u0027s just spelled out more clearly now. We can fix this in a subsequent CL if we want to.","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"b59a6e0c0418badb17e476ff57c5fea6087c3b3c","unresolved":false,"context_lines":[{"line_number":120,"context_line":"\tif err !\u003d nil {"},{"line_number":121,"context_line":"\t\treturn err"},{"line_number":122,"context_line":"\t}"},{"line_number":123,"context_line":"\tbootEntryIdx, err :\u003d efivarfs.AddBootEntry(be)"},{"line_number":124,"context_line":"\tif err !\u003d nil {"},{"line_number":125,"context_line":"\t\treturn fmt.Errorf(\"error creating EFI boot entry: %w\", err)"},{"line_number":126,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":7,"id":"873c7e03_40539371","line":123,"range":{"start_line":123,"start_character":22,"end_line":123,"end_character":47},"in_reply_to":"968a910b_2394b9f9","updated":"2023-06-29 09:06:16.000000000","message":"Ack","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"}],"metropolis/pkg/efivarfs/boot_test.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cdb1c8cd80dff5de4e7c50133658f6591ef92855","unresolved":true,"context_lines":[{"line_number":1,"context_line":"package efivarfs"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import ("},{"line_number":4,"context_line":"\t\"bytes\""}],"source_content_type":"text/x-go","patch_set":7,"id":"8f299358_cc2d075e","line":1,"range":{"start_line":1,"start_character":8,"end_line":1,"end_character":16},"updated":"2023-06-28 14:09:56.000000000","message":"Maybe we could also get a smoke ktest that makes sure we can do an end-to-end read/modify/read change on EFI boot variables via Linux?","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"b59a6e0c0418badb17e476ff57c5fea6087c3b3c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"package efivarfs"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import ("},{"line_number":4,"context_line":"\t\"bytes\""}],"source_content_type":"text/x-go","patch_set":7,"id":"35626242_8bc8620b","line":1,"range":{"start_line":1,"start_character":8,"end_line":1,"end_character":16},"in_reply_to":"87e8b694_4221d861","updated":"2023-06-29 09:06:16.000000000","message":"Ack","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"192be729d41f50a9a18b6c6c2cfca6e767063d1e","unresolved":true,"context_lines":[{"line_number":1,"context_line":"package efivarfs"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import ("},{"line_number":4,"context_line":"\t\"bytes\""}],"source_content_type":"text/x-go","patch_set":7,"id":"87e8b694_4221d861","line":1,"range":{"start_line":1,"start_character":8,"end_line":1,"end_character":16},"in_reply_to":"8f299358_cc2d075e","updated":"2023-06-28 18:59:08.000000000","message":"Sadly ktest do not run with firmware (so no EFI), otherwise I\u0027d have done that.","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"}],"metropolis/pkg/efivarfs/devicepath.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cdb1c8cd80dff5de4e7c50133658f6591ef92855","unresolved":true,"context_lines":[{"line_number":190,"context_line":"\tif strings.IndexByte(string(f), 0x00) !\u003d -1 {"},{"line_number":191,"context_line":"\t\treturn nil, fmt.Errorf(\"contains invalid null bytes\")"},{"line_number":192,"context_line":"\t}"},{"line_number":193,"context_line":"\twithBackslashes :\u003d strings.Replace(string(f), \"/\", \"\\\\\", -1)"},{"line_number":194,"context_line":"\tout, err :\u003d Encoding.NewEncoder().Bytes([]byte(withBackslashes))"},{"line_number":195,"context_line":"\tif err !\u003d nil {"},{"line_number":196,"context_line":"\t\treturn nil, fmt.Errorf(\"failed to encode FilePath to UTF-16: %w\", err)"},{"line_number":197,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":7,"id":"9054a2f1_e018869f","line":194,"range":{"start_line":193,"start_character":1,"end_line":194,"end_character":65},"updated":"2023-06-28 14:09:56.000000000","message":"```suggestion\n\twithBackslashes :\u003d bytes.ReplaceAll(f, []byte(`/`), []byte(`\\`))\n\tout, err :\u003d Encoding.NewEncoder().Bytes(withBackslashes)\n```","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"192be729d41f50a9a18b6c6c2cfca6e767063d1e","unresolved":false,"context_lines":[{"line_number":190,"context_line":"\tif strings.IndexByte(string(f), 0x00) !\u003d -1 {"},{"line_number":191,"context_line":"\t\treturn nil, fmt.Errorf(\"contains invalid null bytes\")"},{"line_number":192,"context_line":"\t}"},{"line_number":193,"context_line":"\twithBackslashes :\u003d strings.Replace(string(f), \"/\", \"\\\\\", -1)"},{"line_number":194,"context_line":"\tout, err :\u003d Encoding.NewEncoder().Bytes([]byte(withBackslashes))"},{"line_number":195,"context_line":"\tif err !\u003d nil {"},{"line_number":196,"context_line":"\t\treturn nil, fmt.Errorf(\"failed to encode FilePath to UTF-16: %w\", err)"},{"line_number":197,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":7,"id":"d75cd577_4c8b2c79","line":194,"range":{"start_line":193,"start_character":1,"end_line":194,"end_character":65},"in_reply_to":"9054a2f1_e018869f","updated":"2023-06-28 18:59:08.000000000","message":"Done","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cdb1c8cd80dff5de4e7c50133658f6591ef92855","unresolved":true,"context_lines":[{"line_number":199,"context_line":"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"func unmarshalFilePath(data []byte) (DevicePathElem, error) {"},{"line_number":202,"context_line":"\tif len(data) \u003c 2 {"},{"line_number":203,"context_line":"\t\treturn nil, fmt.Errorf(\"FilePath must be at least 2 bytes because of UTF-16 null terminator\")"},{"line_number":204,"context_line":"\t}"},{"line_number":205,"context_line":"\tout, err :\u003d Encoding.NewDecoder().Bytes(data[:len(data)-2])"}],"source_content_type":"text/x-go","patch_set":7,"id":"e1f27adb_bb5cf90b","line":202,"range":{"start_line":202,"start_character":8,"end_line":202,"end_character":12},"updated":"2023-06-28 14:09:56.000000000","message":"Check that the last two bytes are zeroes? Maybe also check that no other 16-bit integer in the UCS-16 representation is a zero?","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"192be729d41f50a9a18b6c6c2cfca6e767063d1e","unresolved":false,"context_lines":[{"line_number":199,"context_line":"}"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"func unmarshalFilePath(data []byte) (DevicePathElem, error) {"},{"line_number":202,"context_line":"\tif len(data) \u003c 2 {"},{"line_number":203,"context_line":"\t\treturn nil, fmt.Errorf(\"FilePath must be at least 2 bytes because of UTF-16 null terminator\")"},{"line_number":204,"context_line":"\t}"},{"line_number":205,"context_line":"\tout, err :\u003d Encoding.NewDecoder().Bytes(data[:len(data)-2])"}],"source_content_type":"text/x-go","patch_set":7,"id":"307520fb_57c1ec39","line":202,"range":{"start_line":202,"start_character":8,"end_line":202,"end_character":12},"in_reply_to":"e1f27adb_bb5cf90b","updated":"2023-06-28 18:59:08.000000000","message":"Done","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cdb1c8cd80dff5de4e7c50133658f6591ef92855","unresolved":true,"context_lines":[{"line_number":206,"context_line":"\tif err !\u003d nil {"},{"line_number":207,"context_line":"\t\treturn nil, fmt.Errorf(\"error decoding FilePath UTF-16 string: %w\", err)"},{"line_number":208,"context_line":"\t}"},{"line_number":209,"context_line":"\twithoutBackslashes :\u003d strings.Replace(string(out), \"\\\\\", \"/\", -1)"},{"line_number":210,"context_line":"\treturn FilePath(string(withoutBackslashes)), nil"},{"line_number":211,"context_line":"}"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-go","patch_set":7,"id":"33d90bae_ec5f47c9","line":209,"range":{"start_line":209,"start_character":52,"end_line":209,"end_character":56},"updated":"2023-06-28 14:09:56.000000000","message":"```suggestion\n\twithoutBackslashes :\u003d strings.Replace(string(out), `\\`, `/`, -1)\n```","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"192be729d41f50a9a18b6c6c2cfca6e767063d1e","unresolved":false,"context_lines":[{"line_number":206,"context_line":"\tif err !\u003d nil {"},{"line_number":207,"context_line":"\t\treturn nil, fmt.Errorf(\"error decoding FilePath UTF-16 string: %w\", err)"},{"line_number":208,"context_line":"\t}"},{"line_number":209,"context_line":"\twithoutBackslashes :\u003d strings.Replace(string(out), \"\\\\\", \"/\", -1)"},{"line_number":210,"context_line":"\treturn FilePath(string(withoutBackslashes)), nil"},{"line_number":211,"context_line":"}"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-go","patch_set":7,"id":"786e87de_dbca69b4","line":209,"range":{"start_line":209,"start_character":52,"end_line":209,"end_character":56},"in_reply_to":"33d90bae_ec5f47c9","updated":"2023-06-28 18:59:08.000000000","message":"Done","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cdb1c8cd80dff5de4e7c50133658f6591ef92855","unresolved":true,"context_lines":[{"line_number":207,"context_line":"\t\treturn nil, fmt.Errorf(\"error decoding FilePath UTF-16 string: %w\", err)"},{"line_number":208,"context_line":"\t}"},{"line_number":209,"context_line":"\twithoutBackslashes :\u003d strings.Replace(string(out), \"\\\\\", \"/\", -1)"},{"line_number":210,"context_line":"\treturn FilePath(string(withoutBackslashes)), nil"},{"line_number":211,"context_line":"}"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"// Map key contains type and subtype"}],"source_content_type":"text/x-go","patch_set":7,"id":"f719d137_0d3ccefd","line":210,"range":{"start_line":210,"start_character":8,"end_line":210,"end_character":44},"updated":"2023-06-28 14:09:56.000000000","message":"```suggestion\n\treturn FilePath(withoutBackslashes), nil\n```","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"192be729d41f50a9a18b6c6c2cfca6e767063d1e","unresolved":false,"context_lines":[{"line_number":207,"context_line":"\t\treturn nil, fmt.Errorf(\"error decoding FilePath UTF-16 string: %w\", err)"},{"line_number":208,"context_line":"\t}"},{"line_number":209,"context_line":"\twithoutBackslashes :\u003d strings.Replace(string(out), \"\\\\\", \"/\", -1)"},{"line_number":210,"context_line":"\treturn FilePath(string(withoutBackslashes)), nil"},{"line_number":211,"context_line":"}"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"// Map key contains type and subtype"}],"source_content_type":"text/x-go","patch_set":7,"id":"a1acfb7a_b0280045","line":210,"range":{"start_line":210,"start_character":8,"end_line":210,"end_character":44},"in_reply_to":"f719d137_0d3ccefd","updated":"2023-06-28 18:59:08.000000000","message":"Done","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"cdb1c8cd80dff5de4e7c50133658f6591ef92855","unresolved":true,"context_lines":[{"line_number":282,"context_line":"\t\telemData :\u003d rest[4:dataLen]"},{"line_number":283,"context_line":"\t\trest \u003d rest[dataLen:]"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"\t\t// End of Device Path"},{"line_number":286,"context_line":"\t\tif t \u003d\u003d 0x7F \u0026\u0026 subT \u003d\u003d 0xFF {"},{"line_number":287,"context_line":"\t\t\tbreak"},{"line_number":288,"context_line":"\t\t}"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"\t\tunmarshal, ok :\u003d pathElementUnmarshalMap[[2]byte{t, subT}]"},{"line_number":291,"context_line":"\t\tif !ok {"},{"line_number":292,"context_line":"\t\t\tp \u003d append(p, \u0026UnknownPath{"}],"source_content_type":"text/x-go","patch_set":7,"id":"87f947d1_e31070be","line":289,"range":{"start_line":285,"start_character":0,"end_line":289,"end_character":0},"updated":"2023-06-28 14:09:56.000000000","message":"Instead of breaking whenever we see an End of Device Path, we should make sure it\u0027s the last thing in the parsed data.\n\nYou could, for example, make a EndOfDevicePath type which implements DevicePathElem and check, at a higher level, that the returned DevicePath contains exactly one DevicePathElem as the last element.","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"192be729d41f50a9a18b6c6c2cfca6e767063d1e","unresolved":false,"context_lines":[{"line_number":282,"context_line":"\t\telemData :\u003d rest[4:dataLen]"},{"line_number":283,"context_line":"\t\trest \u003d rest[dataLen:]"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"\t\t// End of Device Path"},{"line_number":286,"context_line":"\t\tif t \u003d\u003d 0x7F \u0026\u0026 subT \u003d\u003d 0xFF {"},{"line_number":287,"context_line":"\t\t\tbreak"},{"line_number":288,"context_line":"\t\t}"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"\t\tunmarshal, ok :\u003d pathElementUnmarshalMap[[2]byte{t, subT}]"},{"line_number":291,"context_line":"\t\tif !ok {"},{"line_number":292,"context_line":"\t\t\tp \u003d append(p, \u0026UnknownPath{"}],"source_content_type":"text/x-go","patch_set":7,"id":"e26776a3_927ec11a","line":289,"range":{"start_line":285,"start_character":0,"end_line":289,"end_character":0},"in_reply_to":"87f947d1_e31070be","updated":"2023-06-28 18:59:08.000000000","message":"Done","commit_id":"84603ce6974a5994da7eeea8cfe5af58db46c6b3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"b59a6e0c0418badb17e476ff57c5fea6087c3b3c","unresolved":true,"context_lines":[{"line_number":315,"context_line":"\tcase endOfPathIdx \u003d\u003d -1:"},{"line_number":316,"context_line":"\t\treturn nil, fmt.Errorf(\"got DevicePath with %d elements, but without End Of Path element\", len(p))"},{"line_number":317,"context_line":"\tcase endOfPathIdx !\u003d len(p)-1:"},{"line_number":318,"context_line":"\t\treturn nil, fmt.Errorf(\"got DevicePath with %d elements with End Of Path element at %d\", len(p), endOfPathIdx)"},{"line_number":319,"context_line":"\t}"},{"line_number":320,"context_line":"\tp \u003d p[:len(p)-1]"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-go","patch_set":10,"id":"9ece3753_eee8f307","line":318,"range":{"start_line":318,"start_character":26,"end_line":318,"end_character":88},"updated":"2023-06-29 09:06:16.000000000","message":"```suggestion\n\t\treturn nil, fmt.Errorf(\"got DevicePath with %d elements with End Of Path element at %d (wanted as last element)\", len(p), endOfPathIdx)\n```","commit_id":"e79fd223430da3b5ee7af56938b9b747e9239d2f"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1fc131e1d1a91d914464dc26bd8c8c146c7a648","unresolved":false,"context_lines":[{"line_number":315,"context_line":"\tcase endOfPathIdx \u003d\u003d -1:"},{"line_number":316,"context_line":"\t\treturn nil, fmt.Errorf(\"got DevicePath with %d elements, but without End Of Path element\", len(p))"},{"line_number":317,"context_line":"\tcase endOfPathIdx !\u003d len(p)-1:"},{"line_number":318,"context_line":"\t\treturn nil, fmt.Errorf(\"got DevicePath with %d elements with End Of Path element at %d\", len(p), endOfPathIdx)"},{"line_number":319,"context_line":"\t}"},{"line_number":320,"context_line":"\tp \u003d p[:len(p)-1]"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-go","patch_set":10,"id":"d44435ff_265704ad","line":318,"range":{"start_line":318,"start_character":26,"end_line":318,"end_character":88},"in_reply_to":"9ece3753_eee8f307","updated":"2023-06-29 10:25:47.000000000","message":"Done","commit_id":"e79fd223430da3b5ee7af56938b9b747e9239d2f"}]}
