diff --git a/api/genpb/cerbos/engine/v1/engine.pb.go b/api/genpb/cerbos/engine/v1/engine.pb.go index f94e42b3d..14eedb915 100644 --- a/api/genpb/cerbos/engine/v1/engine.pb.go +++ b/api/genpb/cerbos/engine/v1/engine.pb.go @@ -1820,7 +1820,7 @@ var file_cerbos_engine_v1_engine_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xf4, 0x09, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0xed, 0x08, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, @@ -1838,314 +1838,239 @@ var file_cerbos_engine_v1_engine_proto_rawDesc = []byte{ 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x1a, 0xc7, 0x07, 0x0a, - 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xc7, 0x01, 0x0a, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb2, 0x01, 0x92, 0x41, 0x62, 0x32, 0x0e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x2e, 0x4a, 0x0e, - 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8a, 0x01, - 0x3f, 0x5e, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, - 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, - 0x3a, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, - 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x24, - 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x47, 0x72, 0x45, 0x10, 0x01, 0x32, 0x41, 0x5e, 0x5b, 0x5b, 0x3a, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, - 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x2f, 0x5d, 0x2a, 0x28, 0x5c, 0x3a, 0x5b, 0x5b, 0x3a, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, - 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x2f, 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x12, 0xb8, 0x01, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x6b, 0x92, 0x41, 0x60, - 0x32, 0x5e, 0x4b, 0x65, 0x79, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, - 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, - 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, 0x74, 0x20, 0x61, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0xfa, 0x42, 0x05, 0x9a, 0x01, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0xdc, - 0x01, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb4, 0x01, 0x92, 0x41, 0x99, 0x01, 0x32, 0x7c, - 0x54, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x76, 0x61, - 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x22, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x8a, 0x01, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, - 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x11, 0x72, 0x0f, 0x32, - 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0x52, 0x0d, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x85, 0x02, - 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0xee, 0x01, - 0x92, 0x41, 0xb1, 0x01, 0x32, 0x7d, 0x41, 0x20, 0x64, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x70, 0x61, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, - 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, - 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x2e, 0x8a, 0x01, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, - 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, - 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, - 0x29, 0x2a, 0x29, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x33, 0x72, 0x31, 0x32, 0x2f, 0x5e, + 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x1a, 0xc0, 0x06, 0x0a, + 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x6b, 0x69, 0x6e, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0x92, 0x41, 0x20, 0x32, 0x0e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x2e, 0x4a, 0x0e, 0x22, 0x61, + 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0xb8, 0x01, 0x0a, + 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x6b, 0x92, 0x41, 0x60, 0x32, 0x5e, 0x4b, 0x65, 0x79, 0x2d, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, + 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, + 0x61, 0x74, 0x20, 0x61, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0xfa, 0x42, 0x05, 0x9a, 0x01, 0x02, 0x18, + 0x01, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0xdc, 0x01, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0xb4, 0x01, 0x92, 0x41, 0x99, 0x01, 0x32, 0x7c, 0x54, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x49, 0x66, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x65, 0x64, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, + 0x8a, 0x01, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, + 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x11, 0x72, 0x0f, 0x32, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, + 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x85, 0x02, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0xee, 0x01, 0x92, 0x41, 0xb1, 0x01, 0x32, 0x7d, 0x41, + 0x20, 0x64, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, + 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, + 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, + 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, + 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x8a, 0x01, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, - 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, - 0x73, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0x4f, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa1, 0x04, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x6e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x41, 0x73, 0x74, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x41, 0x73, 0x74, 0x1a, 0xbb, 0x01, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x62, 0x0a, 0x11, - 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x73, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, - 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, - 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x47, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x65, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x1a, 0x86, 0x02, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0xe0, 0x41, + 0x01, 0xfa, 0x42, 0x33, 0x72, 0x31, 0x32, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, + 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, + 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, + 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0x4f, + 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xa1, 0x04, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x41, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x61, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x73, 0x74, 0x2e, 0x4c, 0x6f, 0x67, - 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x3d, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x41, 0x73, 0x74, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, - 0x59, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x4f, - 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, - 0x52, 0x5f, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x45, 0x52, 0x41, - 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x45, 0x52, - 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x10, 0x03, 0x22, 0xa4, 0x06, 0x0a, 0x13, 0x50, - 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0xad, 0x01, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x73, 0x74, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x73, 0x74, 0x1a, 0xbb, 0x01, 0x0a, + 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x62, 0x0a, 0x11, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, + 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x41, 0x73, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0a, 0x65, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x78, 0x70, 0x72, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, + 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x1a, 0x86, 0x02, 0x0a, 0x10, 0x4c, + 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x58, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x3c, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x6d, 0x92, - 0x41, 0x6a, 0x32, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x2e, - 0x20, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x2c, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x64, 0x65, 0x6e, 0x69, - 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x2e, 0x52, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x12, 0x9a, 0x01, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, - 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, - 0x42, 0x42, 0x92, 0x41, 0x3f, 0x32, 0x3d, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x4f, 0x6e, 0x6c, 0x79, 0x20, 0x70, 0x6f, - 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, - 0x69, 0x73, 0x20, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, - 0x4e, 0x41, 0x4c, 0x2e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, - 0xda, 0x02, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, - 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0d, 0x92, 0x41, 0x0a, 0x32, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, - 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x08, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x6e, 0x64, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x1a, - 0xb3, 0x01, 0x0a, 0x07, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x65, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, + 0x65, 0x73, 0x41, 0x73, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, + 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x05, 0x6e, 0x6f, 0x64, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x73, 0x74, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x59, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, + 0x0a, 0x0c, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x4e, 0x44, 0x10, 0x01, + 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x52, 0x10, + 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, + 0x54, 0x10, 0x03, 0x22, 0xa4, 0x06, 0x0a, 0x13, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0xad, 0x01, 0x0a, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, + 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, + 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x6d, 0x92, 0x41, 0x6a, 0x32, 0x68, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x73, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, + 0x76, 0x65, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6c, + 0x77, 0x61, 0x79, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x2c, 0x20, 0x61, 0x6c, + 0x77, 0x61, 0x79, 0x73, 0x20, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x6c, 0x79, 0x2e, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x9a, 0x01, 0x0a, 0x09, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x38, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x1c, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x06, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x3a, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x32, 0x0e, 0x43, 0x45, - 0x4c, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x04, - 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x4c, 0x57, 0x41, - 0x59, 0x53, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, - 0x03, 0x22, 0xcf, 0x02, 0x0a, 0x13, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, - 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x65, - 0x62, 0x75, 0x67, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x22, 0x9b, 0x02, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x70, + 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x42, 0x42, 0x92, 0x41, 0x3f, 0x32, 0x3d, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x20, 0x4f, 0x6e, 0x6c, 0x79, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x69, 0x66, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x69, 0x73, 0x20, 0x4b, 0x49, 0x4e, 0x44, + 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x2e, 0x52, 0x09, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xda, 0x02, 0x0a, 0x0a, 0x45, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0x92, 0x41, 0x0a, 0x32, 0x08, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x52, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x1a, 0xb3, 0x01, 0x0a, 0x07, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x6e, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x3a, 0x15, + 0x92, 0x41, 0x12, 0x0a, 0x10, 0x32, 0x0e, 0x43, 0x45, 0x4c, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, + 0x10, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x4c, 0x57, 0x41, + 0x59, 0x53, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, + 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x44, 0x45, 0x4e, 0x49, + 0x45, 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, + 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x03, 0x22, 0xcf, 0x02, 0x0a, 0x13, 0x50, + 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, - 0x64, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, - 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, - 0x70, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, - 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x2b, - 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, - 0x11, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x08, 0x61, - 0x75, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, 0x75, 0x78, 0x44, 0x61, 0x74, - 0x61, 0x22, 0xac, 0x04, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, - 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x44, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x25, 0x0a, + 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, + 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, + 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x4e, 0x0a, 0x11, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x9b, 0x02, 0x0a, + 0x0a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, + 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x46, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, + 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, + 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x11, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x0b, + 0x92, 0x01, 0x08, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x08, 0x61, 0x75, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, + 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x07, 0x61, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x22, 0xac, 0x04, 0x0a, 0x0b, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x07, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x36, 0x0a, 0x17, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x15, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, + 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x1a, 0x6e, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x06, 0x65, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, + 0x65, 0x1a, 0x66, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x40, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, - 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, - 0x37, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x6e, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, - 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0x66, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 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, 0x40, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xeb, 0x01, 0x0a, 0x0b, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x65, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x53, 0x92, - 0x41, 0x50, 0x32, 0x29, 0x52, 0x75, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4a, 0x23, 0x22, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x6d, 0x65, 0x23, 0x72, 0x75, 0x6c, 0x65, 0x2d, 0x30, 0x30, - 0x31, 0x22, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x75, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4b, 0x92, 0x41, - 0x48, 0x32, 0x37, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x2c, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x62, 0x79, - 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x72, 0x75, - 0x6c, 0x65, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4a, 0x0d, 0x22, 0x73, 0x6f, 0x6d, - 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0xc0, - 0x08, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xe1, 0x01, 0x0a, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xcc, 0x01, 0x92, 0x41, 0x7c, - 0x32, 0x29, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x62, 0x65, 0x69, 0x6e, - 0x67, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x2e, 0x4a, 0x0d, 0x22, 0x61, 0x6c, - 0x62, 0x75, 0x6d, 0x3a, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x22, 0x8a, 0x01, 0x3f, 0x5e, 0x5b, 0x5b, - 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, - 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x3a, 0x5b, 0x5b, 0x3a, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, - 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0xe0, 0x41, 0x02, 0xfa, - 0x42, 0x47, 0x72, 0x45, 0x10, 0x01, 0x32, 0x41, 0x5e, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, - 0x2e, 0x5c, 0x2d, 0x2f, 0x5d, 0x2a, 0x28, 0x5c, 0x3a, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, - 0x2e, 0x5c, 0x2d, 0x2f, 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, - 0xdc, 0x01, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb4, 0x01, 0x92, 0x41, 0x99, 0x01, 0x32, - 0x7c, 0x54, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x22, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x8a, 0x01, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, - 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x11, 0x72, 0x0f, - 0x32, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0x52, - 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x43, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0x92, 0x41, 0x26, 0x32, - 0x1b, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x07, 0x22, 0x58, - 0x58, 0x31, 0x32, 0x35, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x02, 0x69, 0x64, 0x12, 0xc5, 0x01, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x41, - 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x8a, 0x01, 0x92, 0x41, 0x7f, 0x32, 0x64, - 0x4b, 0x61, 0x79, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, - 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, - 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6e, - 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x17, 0x7b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x3a, 0x20, - 0x22, 0x62, 0x75, 0x67, 0x73, 0x5f, 0x62, 0x75, 0x6e, 0x6e, 0x79, 0x22, 0x7d, 0xfa, 0x42, 0x05, - 0x9a, 0x01, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x92, 0x02, 0x0a, 0x05, - 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0xfb, 0x01, 0x92, 0x41, - 0xbe, 0x01, 0x32, 0x7d, 0x41, 0x20, 0x64, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x69, 0x65, - 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, - 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x20, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x2e, 0x4a, 0x0b, 0x22, 0x61, 0x63, 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, 0x70, 0x22, 0x8a, 0x01, - 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, - 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, - 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, - 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x33, 0x72, 0x31, 0x32, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, - 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, - 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, - 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x1a, 0x4f, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0xe3, 0x08, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, - 0x40, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0x92, 0x41, 0x23, - 0x32, 0x13, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6e, - 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4a, 0x0c, 0x22, 0x62, 0x75, 0x67, 0x73, 0x5f, 0x62, 0x75, 0x6e, - 0x6e, 0x79, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, + 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xeb, 0x01, 0x0a, 0x0b, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x65, 0x0a, 0x03, 0x73, 0x72, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x53, 0x92, 0x41, 0x50, 0x32, 0x29, 0x52, 0x75, 0x6c, + 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, + 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4a, 0x23, 0x22, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x6d, + 0x65, 0x23, 0x72, 0x75, 0x6c, 0x65, 0x2d, 0x30, 0x30, 0x31, 0x22, 0x52, 0x03, 0x73, 0x72, 0x63, + 0x12, 0x75, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4b, 0x92, 0x41, 0x48, 0x32, 0x37, 0x44, 0x79, 0x6e, 0x61, + 0x6d, 0x69, 0x63, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2c, 0x20, 0x64, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x20, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x2e, 0x4a, 0x0d, 0x22, 0x73, 0x6f, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x22, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0xb9, 0x07, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x47, 0x92, 0x41, 0x3a, 0x32, 0x29, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6b, 0x69, + 0x6e, 0x64, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x2e, 0x4a, 0x0d, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x70, 0x68, 0x6f, 0x74, 0x6f, + 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0xdc, 0x01, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb4, 0x01, 0x92, 0x41, 0x99, 0x01, 0x32, 0x7c, 0x54, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x76, 0x65, @@ -2160,150 +2085,206 @@ var file_cerbos_engine_v1_engine_proto_rawDesc = []byte{ 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x11, 0x72, 0x0f, 0x32, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0xaa, 0x01, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x93, 0x01, 0x92, 0x41, 0x6c, 0x32, 0x46, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, - 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x79, 0x6f, - 0x75, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x4a, 0x08, - 0x5b, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x5d, 0x8a, 0x01, 0x11, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, - 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5c, 0x2e, 0x5d, 0x2b, 0x24, 0xa8, 0x01, 0x01, 0xb0, - 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x1e, 0x92, 0x01, 0x1b, 0x08, 0x01, 0x18, 0x01, 0x22, - 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, - 0x2d, 0x5c, 0x2e, 0x5d, 0x2b, 0x24, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xc5, 0x01, - 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, - 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x89, 0x01, 0x92, 0x41, 0x7e, 0x32, 0x65, 0x4b, 0x65, 0x79, 0x2d, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, - 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, - 0x61, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, - 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x4a, 0x15, 0x7b, 0x22, 0x62, 0x65, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x22, - 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x7d, 0xfa, 0x42, 0x05, 0x9a, 0x01, 0x02, 0x18, 0x01, 0x52, - 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x93, 0x02, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0xfc, 0x01, 0x92, 0x41, 0xbf, 0x01, 0x32, 0x7e, 0x41, 0x20, - 0x64, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x20, - 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, - 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, - 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x4a, 0x0b, 0x22, 0x61, - 0x63, 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, 0x70, 0x22, 0x8a, 0x01, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, + 0x12, 0x43, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0x92, 0x41, + 0x26, 0x32, 0x1b, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x07, + 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0xc5, 0x01, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x2e, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x8a, 0x01, 0x92, 0x41, 0x7f, + 0x32, 0x64, 0x4b, 0x61, 0x79, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, + 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, + 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, + 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x17, 0x7b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, + 0x3a, 0x20, 0x22, 0x62, 0x75, 0x67, 0x73, 0x5f, 0x62, 0x75, 0x6e, 0x6e, 0x79, 0x22, 0x7d, 0xfa, + 0x42, 0x05, 0x9a, 0x01, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x92, 0x02, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0xfb, 0x01, + 0x92, 0x41, 0xbe, 0x01, 0x32, 0x7d, 0x41, 0x20, 0x64, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x70, 0x61, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, + 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, + 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x4a, 0x0b, 0x22, 0x61, 0x63, 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, 0x70, 0x22, + 0x8a, 0x01, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, + 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, + 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, + 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x33, 0x72, 0x31, 0x32, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, - 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, - 0x33, 0x72, 0x31, 0x32, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, - 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, - 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, - 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0x4f, 0x0a, 0x09, 0x41, - 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x59, 0x92, 0x41, - 0x56, 0x0a, 0x54, 0x32, 0x52, 0x41, 0x20, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x41, 0x75, 0x78, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x1a, 0x4e, 0x0a, 0x08, 0x4a, 0x77, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, - 0x32, 0x19, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x20, 0x61, 0x75, 0x78, - 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x22, 0x93, 0x09, 0x0a, 0x05, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0xeb, 0x05, - 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x4b, 0x69, 0x6e, - 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x72, 0x69, 0x76, - 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1c, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x04, - 0x72, 0x75, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x72, 0x75, - 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x76, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, + 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x1a, 0x4f, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xbd, 0x08, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, + 0x6c, 0x12, 0x40, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0x92, + 0x41, 0x23, 0x32, 0x13, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, + 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4a, 0x0c, 0x22, 0x62, 0x75, 0x67, 0x73, 0x5f, 0x62, + 0x75, 0x6e, 0x6e, 0x79, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x02, 0x69, 0x64, 0x12, 0xdc, 0x01, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb4, 0x01, 0x92, + 0x41, 0x99, 0x01, 0x32, 0x7c, 0x54, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, + 0x6f, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, + 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x4a, 0x09, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x8a, 0x01, 0x0d, 0x5e, + 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, + 0x42, 0x11, 0x72, 0x0f, 0x32, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, + 0x5d, 0x2a, 0x24, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x84, 0x01, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x6e, 0x92, 0x41, 0x58, 0x32, 0x46, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x61, + 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x79, + 0x6f, 0x75, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x4a, + 0x08, 0x5b, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x5d, 0xa8, 0x01, 0x01, 0xb0, 0x01, 0x01, 0xe0, + 0x41, 0x02, 0xfa, 0x42, 0x0d, 0x92, 0x01, 0x0a, 0x08, 0x01, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xc5, 0x01, 0x0a, 0x04, 0x61, 0x74, + 0x74, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, + 0x89, 0x01, 0x92, 0x41, 0x7e, 0x32, 0x65, 0x4b, 0x65, 0x79, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, + 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x20, 0x74, + 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x15, 0x7b, 0x22, + 0x62, 0x65, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x74, 0x72, + 0x75, 0x65, 0x7d, 0xfa, 0x42, 0x05, 0x9a, 0x01, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x12, 0x93, 0x02, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x42, 0xfc, 0x01, 0x92, 0x41, 0xbf, 0x01, 0x32, 0x7e, 0x41, 0x20, 0x64, 0x6f, 0x74, 0x2d, + 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x73, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x20, 0x62, 0x65, 0x6c, 0x6f, + 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, + 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x69, 0x6e, 0x68, 0x65, + 0x72, 0x69, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x4a, 0x0b, 0x22, 0x61, 0x63, 0x6d, 0x65, 0x2e, + 0x63, 0x6f, 0x72, 0x70, 0x22, 0x8a, 0x01, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, + 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, + 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, + 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x33, 0x72, 0x31, 0x32, + 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, + 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, + 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, + 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0x4f, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x59, 0x92, 0x41, 0x56, 0x0a, 0x54, 0x32, + 0x52, 0x41, 0x20, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x34, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x1a, 0x32, - 0x0a, 0x08, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x78, - 0x70, 0x72, 0x22, 0xab, 0x02, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x10, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x59, - 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, - 0x15, 0x0a, 0x11, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x52, 0x49, 0x56, 0x45, 0x44, 0x5f, - 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x45, - 0x58, 0x50, 0x52, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, - 0x4c, 0x49, 0x43, 0x59, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x4b, 0x49, 0x4e, - 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x4b, 0x49, 0x4e, 0x44, - 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x49, 0x4e, 0x44, - 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x0d, 0x12, - 0x0f, 0x0a, 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x10, 0x0e, - 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0xa3, 0x02, 0x0a, 0x05, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x06, 0x65, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4a, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, - 0x0e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, - 0x02, 0x42, 0x6f, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5a, 0x3c, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x70, - 0x62, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, - 0x76, 0x31, 0x3b, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x76, 0x31, 0xaa, 0x02, 0x14, 0x43, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0x2e, 0x45, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4a, 0x77, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x03, 0x6a, 0x77, 0x74, 0x1a, 0x4e, 0x0a, 0x08, 0x4a, 0x77, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, 0x32, 0x19, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x20, 0x61, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, + 0x72, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x22, 0x93, 0x09, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0xeb, 0x05, 0x0a, 0x09, 0x43, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, + 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, + 0x0c, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, + 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x18, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1c, 0x0a, 0x08, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x16, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x18, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x1a, 0x32, 0x0a, 0x08, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, + 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0xab, + 0x02, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x49, 0x4e, 0x44, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, + 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x16, + 0x0a, 0x12, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, + 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x03, 0x12, 0x17, + 0x0a, 0x13, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x49, 0x4e, 0x44, 0x5f, + 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x52, 0x49, 0x56, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, + 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x45, 0x58, 0x50, 0x52, 0x10, + 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, + 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x52, 0x55, + 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x43, 0x4f, + 0x50, 0x45, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x41, 0x52, + 0x49, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x49, 0x4e, 0x44, 0x5f, + 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x10, 0x0e, 0x42, 0x09, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0xa3, 0x02, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x24, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x30, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x4a, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x56, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x02, 0x42, 0x6f, 0x0a, + 0x18, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x63, 0x65, 0x72, + 0x62, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x62, 0x2f, 0x63, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x76, 0x31, 0xaa, 0x02, 0x14, 0x43, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/genpb/cerbos/engine/v1/engine.pb.validate.go b/api/genpb/cerbos/engine/v1/engine.pb.validate.go index 4ce2bec5f..a98aa82fd 100644 --- a/api/genpb/cerbos/engine/v1/engine.pb.validate.go +++ b/api/genpb/cerbos/engine/v1/engine.pb.validate.go @@ -1294,17 +1294,6 @@ func (m *Resource) validate(all bool) error { errors = append(errors, err) } - if !_Resource_Kind_Pattern.MatchString(m.GetKind()) { - err := ResourceValidationError{ - field: "Kind", - reason: "value does not match regex pattern \"^[[:alpha:]][[:word:]\\\\@\\\\.\\\\-/]*(\\\\:[[:alpha:]][[:word:]\\\\@\\\\.\\\\-/]*)*$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - if !_Resource_PolicyVersion_Pattern.MatchString(m.GetPolicyVersion()) { err := ResourceValidationError{ field: "PolicyVersion", @@ -1472,8 +1461,6 @@ var _ interface { ErrorName() string } = ResourceValidationError{} -var _Resource_Kind_Pattern = regexp.MustCompile("^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$") - var _Resource_PolicyVersion_Pattern = regexp.MustCompile("^[[:word:]]*$") var _Resource_Scope_Pattern = regexp.MustCompile("^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$") @@ -1551,10 +1538,10 @@ func (m *Principal) validate(all bool) error { _Principal_Roles_Unique[item] = struct{}{} } - if !_Principal_Roles_Pattern.MatchString(item) { + if utf8.RuneCountInString(item) < 1 { err := PrincipalValidationError{ field: fmt.Sprintf("Roles[%v]", idx), - reason: "value does not match regex pattern \"^[[:word:]\\\\-\\\\.]+$\"", + reason: "value length must be at least 1 runes", } if !all { return err @@ -1711,8 +1698,6 @@ var _ interface { var _Principal_PolicyVersion_Pattern = regexp.MustCompile("^[[:word:]]*$") -var _Principal_Roles_Pattern = regexp.MustCompile("^[[:word:]\\-\\.]+$") - var _Principal_Scope_Pattern = regexp.MustCompile("^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$") // Validate checks the field values on AuxData with the rules defined in the @@ -2053,17 +2038,6 @@ func (m *PlanResourcesInput_Resource) validate(all bool) error { errors = append(errors, err) } - if !_PlanResourcesInput_Resource_Kind_Pattern.MatchString(m.GetKind()) { - err := PlanResourcesInput_ResourceValidationError{ - field: "Kind", - reason: "value does not match regex pattern \"^[[:alpha:]][[:word:]\\\\@\\\\.\\\\-/]*(\\\\:[[:alpha:]][[:word:]\\\\@\\\\.\\\\-/]*)*$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - { sorted_keys := make([]string, len(m.GetAttr())) i := 0 @@ -2224,8 +2198,6 @@ var _ interface { ErrorName() string } = PlanResourcesInput_ResourceValidationError{} -var _PlanResourcesInput_Resource_Kind_Pattern = regexp.MustCompile("^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$") - var _PlanResourcesInput_Resource_PolicyVersion_Pattern = regexp.MustCompile("^[[:word:]]*$") var _PlanResourcesInput_Resource_Scope_Pattern = regexp.MustCompile("^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$") diff --git a/api/genpb/cerbos/policy/v1/policy.pb.go b/api/genpb/cerbos/policy/v1/policy.pb.go index dc6bd6831..e1afca7a7 100644 --- a/api/genpb/cerbos/policy/v1/policy.pb.go +++ b/api/genpb/cerbos/policy/v1/policy.pb.go @@ -3199,133 +3199,122 @@ var file_cerbos_policy_v1_policy_proto_rawDesc = []byte{ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0xef, 0x03, 0x0a, 0x0e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x66, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4a, - 0xfa, 0x42, 0x47, 0x72, 0x45, 0x10, 0x01, 0x32, 0x41, 0x5e, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, - 0x5c, 0x2e, 0x5c, 0x2d, 0x2f, 0x5d, 0x2a, 0x28, 0x5c, 0x3a, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, - 0x5c, 0x2e, 0x5c, 0x2d, 0x2f, 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x14, 0xfa, 0x42, 0x11, 0x72, 0x0f, 0x32, 0x0d, 0x5e, 0x5b, - 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2b, 0x24, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x14, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, - 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x42, 0x1f, 0xfa, 0x42, 0x1c, 0x92, 0x01, 0x19, 0x18, 0x01, 0x22, 0x15, 0x72, 0x13, - 0x32, 0x11, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5c, 0x2e, - 0x5d, 0x2b, 0x24, 0x52, 0x12, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x72, 0x69, 0x76, - 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x4c, 0x0a, - 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xfa, 0x42, - 0x33, 0x72, 0x31, 0x32, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, - 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, - 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, - 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, - 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, - 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x03, 0x0a, 0x0c, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x07, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x10, 0xfa, - 0x42, 0x0d, 0x92, 0x01, 0x0a, 0x08, 0x01, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x64, 0x65, 0x72, 0x69, - 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xac, 0x03, 0x0a, 0x0e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x14, 0xfa, 0x42, 0x11, 0x72, 0x0f, 0x32, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, + 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2b, 0x24, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x51, 0x0a, 0x14, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x1f, 0xfa, 0x42, 0x1c, 0x92, 0x01, 0x19, 0x18, 0x01, 0x22, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5c, 0x2e, 0x5d, 0x2b, 0x24, - 0x52, 0x0c, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x3a, - 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x24, 0xfa, - 0x42, 0x21, 0x92, 0x01, 0x1e, 0x18, 0x01, 0x22, 0x1a, 0x72, 0x18, 0x32, 0x16, 0x5e, 0x28, 0x5b, - 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5c, 0x2e, 0x5d, 0x2b, 0x7c, 0x5c, - 0x2a, 0x29, 0x24, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x52, 0x12, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, + 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xfa, 0x42, 0x33, 0x72, 0x31, + 0x32, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, + 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, + 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, + 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x73, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x39, 0x0a, + 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x8f, 0x03, 0x0a, 0x0c, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x92, + 0x01, 0x0a, 0x08, 0x01, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, + 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x1f, 0xfa, 0x42, + 0x1c, 0x92, 0x01, 0x19, 0x18, 0x01, 0x22, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5b, 0x3a, + 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5c, 0x2e, 0x5d, 0x2b, 0x24, 0x52, 0x0c, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, + 0x01, 0x08, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x12, 0x39, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x06, + 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, + 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x18, 0x01, + 0x18, 0x02, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, + 0x21, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, + 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, + 0x2a, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xa8, 0x02, 0x0a, 0x0f, 0x50, + 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, + 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x14, 0xfa, 0x42, 0x11, 0x72, 0x0f, 0x32, 0x0d, 0x5e, + 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2b, 0x24, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, + 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x05, + 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xfa, 0x42, 0x33, + 0x72, 0x31, 0x32, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, + 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, + 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, + 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x42, - 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x18, 0x01, 0x18, 0x02, 0x52, 0x06, 0x65, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x28, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, - 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x30, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x22, 0xe9, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, - 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x66, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, - 0x69, 0x70, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xfa, 0x42, 0x45, 0x72, - 0x43, 0x10, 0x01, 0x32, 0x3f, 0x5e, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, - 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, - 0x5d, 0x2a, 0x28, 0x5c, 0x3a, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, - 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, - 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, - 0x2e, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x14, 0xfa, 0x42, 0x11, 0x72, 0x0f, 0x32, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, - 0x64, 0x3a, 0x5d, 0x5d, 0x2b, 0x24, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x35, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xfa, 0x42, 0x33, 0x72, 0x31, 0x32, 0x2f, 0x5e, 0x28, - 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, - 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, - 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, - 0x95, 0x03, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x52, 0x75, 0x6c, - 0x65, 0x12, 0x23, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, - 0x69, 0x70, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x92, 0x02, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, - 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, - 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x06, 0x65, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x18, 0x01, 0x18, 0x02, 0x52, - 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x28, - 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, - 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, - 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xc0, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x72, 0x69, - 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x10, 0x01, 0x32, - 0x11, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5c, 0x2e, 0x5d, - 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x95, 0x03, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, + 0x70, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x07, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, - 0x08, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, - 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x07, 0x52, - 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5b, - 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5c, 0x2e, 0x5d, 0x2b, 0x24, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, - 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x42, 0x23, 0x92, - 0x01, 0x20, 0x08, 0x01, 0x18, 0x01, 0x22, 0x1a, 0x72, 0x18, 0x32, 0x16, 0x5e, 0x28, 0x5b, 0x5b, - 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5c, 0x2e, 0x5d, 0x2b, 0x7c, 0x5c, 0x2a, - 0x29, 0x24, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, + 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x92, 0x02, 0x0a, 0x06, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3c, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, + 0x04, 0x18, 0x01, 0x18, 0x02, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x3c, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xfa, 0x42, 0x25, + 0x72, 0x23, 0x32, 0x21, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, + 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, + 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0xc0, 0x01, + 0x0a, 0x0c, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2e, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, + 0x17, 0x72, 0x15, 0x10, 0x01, 0x32, 0x11, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, + 0x5d, 0x5c, 0x2d, 0x5c, 0x2e, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x45, + 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x22, 0xa7, 0x01, 0x0a, 0x07, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x12, 0x2c, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, + 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5c, + 0x2e, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x0c, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x92, 0x01, 0x0a, 0x08, 0x01, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, diff --git a/api/genpb/cerbos/policy/v1/policy.pb.validate.go b/api/genpb/cerbos/policy/v1/policy.pb.validate.go index 589836235..f86a3e0c0 100644 --- a/api/genpb/cerbos/policy/v1/policy.pb.validate.go +++ b/api/genpb/cerbos/policy/v1/policy.pb.validate.go @@ -538,17 +538,6 @@ func (m *ResourcePolicy) validate(all bool) error { errors = append(errors, err) } - if !_ResourcePolicy_Resource_Pattern.MatchString(m.GetResource()) { - err := ResourcePolicyValidationError{ - field: "Resource", - reason: "value does not match regex pattern \"^[[:alpha:]][[:word:]\\\\@\\\\.\\\\-/]*(\\\\:[[:alpha:]][[:word:]\\\\@\\\\.\\\\-/]*)*$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - if !_ResourcePolicy_Version_Pattern.MatchString(m.GetVersion()) { err := ResourcePolicyValidationError{ field: "Version", @@ -772,8 +761,6 @@ var _ interface { ErrorName() string } = ResourcePolicyValidationError{} -var _ResourcePolicy_Resource_Pattern = regexp.MustCompile("^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$") - var _ResourcePolicy_Version_Pattern = regexp.MustCompile("^[[:word:]]+$") var _ResourcePolicy_ImportDerivedRoles_Pattern = regexp.MustCompile("^[[:word:]\\-\\.]+$") @@ -893,10 +880,10 @@ func (m *ResourceRule) validate(all bool) error { _ResourceRule_Roles_Unique[item] = struct{}{} } - if !_ResourceRule_Roles_Pattern.MatchString(item) { + if utf8.RuneCountInString(item) < 1 { err := ResourceRuleValidationError{ field: fmt.Sprintf("Roles[%v]", idx), - reason: "value does not match regex pattern \"^([[:word:]\\\\-\\\\.]+|\\\\*)$\"", + reason: "value length must be at least 1 runes", } if !all { return err @@ -1065,8 +1052,6 @@ var _ interface { var _ResourceRule_DerivedRoles_Pattern = regexp.MustCompile("^[[:word:]\\-\\.]+$") -var _ResourceRule_Roles_Pattern = regexp.MustCompile("^([[:word:]\\-\\.]+|\\*)$") - var _ResourceRule_Effect_InLookup = map[effectv1.Effect]struct{}{ 1: {}, 2: {}, @@ -1107,17 +1092,6 @@ func (m *PrincipalPolicy) validate(all bool) error { errors = append(errors, err) } - if !_PrincipalPolicy_Principal_Pattern.MatchString(m.GetPrincipal()) { - err := PrincipalPolicyValidationError{ - field: "Principal", - reason: "value does not match regex pattern \"^[[:alpha:]][[:word:]\\\\@\\\\.\\\\-]*(\\\\:[[:alpha:]][[:word:]\\\\@\\\\.\\\\-]*)*$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - if !_PrincipalPolicy_Version_Pattern.MatchString(m.GetVersion()) { err := PrincipalPolicyValidationError{ field: "Version", @@ -1281,8 +1255,6 @@ var _ interface { ErrorName() string } = PrincipalPolicyValidationError{} -var _PrincipalPolicy_Principal_Pattern = regexp.MustCompile("^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$") - var _PrincipalPolicy_Version_Pattern = regexp.MustCompile("^[[:word:]]+$") var _PrincipalPolicy_Scope_Pattern = regexp.MustCompile("^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$") @@ -1701,10 +1673,10 @@ func (m *RoleDef) validate(all bool) error { _RoleDef_ParentRoles_Unique[item] = struct{}{} } - if !_RoleDef_ParentRoles_Pattern.MatchString(item) { + if utf8.RuneCountInString(item) < 1 { err := RoleDefValidationError{ field: fmt.Sprintf("ParentRoles[%v]", idx), - reason: "value does not match regex pattern \"^([[:word:]\\\\-\\\\.]+|\\\\*)$\"", + reason: "value length must be at least 1 runes", } if !all { return err @@ -1822,8 +1794,6 @@ var _ interface { var _RoleDef_Name_Pattern = regexp.MustCompile("^[[:word:]\\-\\.]+$") -var _RoleDef_ParentRoles_Pattern = regexp.MustCompile("^([[:word:]\\-\\.]+|\\*)$") - // Validate checks the field values on ExportVariables with the rules defined // in the proto definition for this message. If any rules are violated, the // first error encountered is returned, or nil if there are no violations. diff --git a/api/genpb/cerbos/request/v1/request.pb.go b/api/genpb/cerbos/request/v1/request.pb.go index d49840655..4ddde3e05 100644 --- a/api/genpb/cerbos/request/v1/request.pb.go +++ b/api/genpb/cerbos/request/v1/request.pb.go @@ -1915,183 +1915,115 @@ var file_cerbos_request_v1_request_proto_rawDesc = []byte{ 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x61, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x3a, 0x12, 0x92, 0x41, 0x0f, 0x0a, 0x0d, 0x32, 0x0b, 0x50, - 0x44, 0x50, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xaf, 0x09, 0x0a, 0x0b, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x12, 0xc7, 0x01, 0x0a, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb2, 0x01, 0x92, 0x41, 0x62, 0x32, - 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x2e, 0x4a, - 0x0e, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8a, - 0x01, 0x3f, 0x5e, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, - 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, - 0x5c, 0x3a, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, - 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, - 0x24, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x47, 0x72, 0x45, 0x10, 0x01, 0x32, 0x41, 0x5e, 0x5b, 0x5b, - 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, - 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x2f, 0x5d, 0x2a, 0x28, 0x5c, 0x3a, 0x5b, 0x5b, - 0x3a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, - 0x3a, 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x2f, 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0xdc, 0x01, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb4, 0x01, - 0x92, 0x41, 0x99, 0x01, 0x32, 0x7c, 0x54, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, - 0x74, 0x6f, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, - 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, - 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, - 0x64, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x4a, 0x09, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x8a, 0x01, 0x0d, - 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0xe0, 0x41, 0x01, - 0xfa, 0x42, 0x11, 0x72, 0x0f, 0x32, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, - 0x5d, 0x5d, 0x2a, 0x24, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0xeb, 0x02, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x9d, 0x02, 0x92, 0x41, 0x8c, 0x02, 0x32, 0x6d, 0x53, - 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x65, 0x64, 0x20, 0x62, - 0x79, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x4a, 0x97, 0x01, 0x7b, - 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x3a, 0x7b, 0x22, 0x61, 0x74, 0x74, 0x72, 0x22, 0x3a, - 0x7b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x3a, 0x22, 0x62, 0x75, 0x67, 0x73, 0x5f, 0x62, - 0x75, 0x6e, 0x6e, 0x79, 0x22, 0x2c, 0x20, 0x22, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x3a, - 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x22, 0x66, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, - 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x7d, 0x7d, 0x2c, 0x20, 0x22, 0x58, 0x58, 0x32, - 0x32, 0x35, 0x22, 0x3a, 0x7b, 0x22, 0x61, 0x74, 0x74, 0x72, 0x22, 0x3a, 0x7b, 0x22, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x22, 0x3a, 0x22, 0x64, 0x61, 0x66, 0x66, 0x79, 0x5f, 0x64, 0x75, 0x63, 0x6b, - 0x22, 0x2c, 0x20, 0x22, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, - 0x65, 0x2c, 0x20, 0x22, 0x66, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, 0x22, 0x3a, 0x20, 0x66, 0x61, - 0x6c, 0x73, 0x65, 0x7d, 0x7d, 0x7d, 0xc8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x9a, - 0x01, 0x04, 0x08, 0x01, 0x18, 0x01, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x12, 0x86, 0x02, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0xef, 0x01, 0x92, 0x41, 0xb2, 0x01, 0x32, 0x7e, 0x41, 0x20, 0x64, 0x6f, 0x74, 0x2d, - 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, - 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x73, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x20, 0x74, 0x68, 0x65, - 0x73, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x62, 0x65, 0x6c, - 0x6f, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, - 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x69, 0x6e, 0x68, 0x65, - 0x72, 0x69, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x8a, 0x01, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, - 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, - 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, - 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x33, - 0x72, 0x31, 0x32, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, + 0x44, 0x50, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa8, 0x08, 0x0a, 0x0b, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x6b, 0x69, + 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0x92, 0x41, 0x20, 0x32, 0x0e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x2e, 0x4a, 0x0e, 0x22, + 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xe0, 0x41, 0x02, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0xdc, 0x01, + 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb4, 0x01, 0x92, 0x41, 0x99, 0x01, 0x32, 0x7c, 0x54, + 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x76, 0x61, 0x6c, + 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x22, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x8a, 0x01, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, + 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x11, 0x72, 0x0f, 0x32, 0x0d, + 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0x52, 0x0d, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xeb, 0x02, 0x0a, + 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, + 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, + 0x9d, 0x02, 0x92, 0x41, 0x8c, 0x02, 0x32, 0x6d, 0x53, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, + 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, + 0x65, 0x20, 0x6b, 0x65, 0x79, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x63, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x2e, 0x4a, 0x97, 0x01, 0x7b, 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, + 0x3a, 0x7b, 0x22, 0x61, 0x74, 0x74, 0x72, 0x22, 0x3a, 0x7b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x22, 0x3a, 0x22, 0x62, 0x75, 0x67, 0x73, 0x5f, 0x62, 0x75, 0x6e, 0x6e, 0x79, 0x22, 0x2c, 0x20, + 0x22, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, + 0x20, 0x22, 0x66, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, + 0x65, 0x7d, 0x7d, 0x2c, 0x20, 0x22, 0x58, 0x58, 0x32, 0x32, 0x35, 0x22, 0x3a, 0x7b, 0x22, 0x61, + 0x74, 0x74, 0x72, 0x22, 0x3a, 0x7b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x3a, 0x22, 0x64, + 0x61, 0x66, 0x66, 0x79, 0x5f, 0x64, 0x75, 0x63, 0x6b, 0x22, 0x2c, 0x20, 0x22, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x22, 0x66, 0x6c, 0x61, + 0x67, 0x67, 0x65, 0x64, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x7d, 0x7d, 0x7d, 0xc8, + 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x9a, 0x01, 0x04, 0x08, 0x01, 0x18, 0x01, 0x52, + 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x86, 0x02, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0xef, 0x01, 0x92, 0x41, 0xb2, + 0x01, 0x32, 0x7e, 0x41, 0x20, 0x64, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x69, 0x65, 0x72, + 0x61, 0x72, 0x63, 0x68, 0x79, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x2e, + 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x20, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x8a, 0x01, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, - 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0x5e, 0x0a, 0x0e, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 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, 0x36, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x4d, 0x61, 0x70, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, - 0x1b, 0x32, 0x19, 0x53, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x22, 0xc9, 0x02, 0x0a, - 0x0d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x4d, 0x61, 0x70, 0x12, 0xb1, - 0x01, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x4d, 0x61, 0x70, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x71, 0x92, 0x41, 0x66, 0x32, 0x64, - 0x4b, 0x65, 0x79, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, - 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, - 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6e, - 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0xfa, 0x42, 0x05, 0x9a, 0x01, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x74, - 0x74, 0x72, 0x1a, 0x4f, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x3a, 0x33, 0x92, 0x41, 0x30, 0x0a, 0x2e, 0x32, 0x2c, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x22, 0xe1, 0x06, 0x0a, 0x19, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x96, 0x01, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x77, 0x92, 0x41, 0x74, - 0x32, 0x4a, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, - 0x49, 0x44, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x6f, - 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x4a, 0x26, 0x22, 0x63, - 0x32, 0x64, 0x62, 0x31, 0x37, 0x62, 0x38, 0x2d, 0x34, 0x66, 0x39, 0x66, 0x2d, 0x34, 0x66, 0x62, - 0x31, 0x2d, 0x61, 0x63, 0x66, 0x64, 0x2d, 0x39, 0x31, 0x36, 0x32, 0x61, 0x30, 0x32, 0x62, 0x65, - 0x34, 0x32, 0x62, 0x22, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, - 0x46, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, - 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, - 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0xbc, 0x02, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0xe4, 0x01, 0x92, 0x41, 0xd5, 0x01, 0x32, 0x1e, 0x4c, 0x69, 0x73, - 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0xac, 0x01, 0x5b, 0x7b, - 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x5b, 0x22, 0x76, 0x69, 0x65, 0x77, - 0x22, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0x2c, 0x20, 0x22, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x3a, 0x7b, 0x22, 0x6b, 0x69, 0x6e, 0x64, 0x22, - 0x3a, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x2c, - 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, - 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x2c, 0x22, 0x69, 0x64, 0x22, 0x3a, 0x22, - 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x2c, 0x22, 0x61, 0x74, 0x74, 0x72, 0x22, 0x3a, 0x7b, 0x22, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x3a, 0x22, 0x62, 0x75, 0x67, 0x73, 0x5f, 0x62, 0x75, 0x6e, - 0x6e, 0x79, 0x22, 0x2c, 0x20, 0x22, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x3a, 0x20, 0x66, - 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x22, 0x66, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, 0x22, 0x3a, - 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x7d, 0x7d, 0x7d, 0x5d, 0xa8, 0x01, 0x01, 0xb0, 0x01, 0x01, - 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x75, 0x78, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, - 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x78, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xd8, 0x01, - 0x0a, 0x0a, 0x42, 0x61, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x84, 0x01, 0x0a, - 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x6a, - 0x92, 0x41, 0x54, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, - 0x72, 0x6d, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4a, 0x1a, 0x5b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x22, 0x2c, 0x20, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, - 0x5d, 0xa8, 0x01, 0x01, 0xb0, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x0d, 0x92, 0x01, 0x0a, - 0x08, 0x01, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x12, 0x92, 0x41, 0x0f, 0x0a, 0x0d, 0x32, - 0x0b, 0x50, 0x44, 0x50, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc5, 0x07, 0x0a, - 0x15, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x96, 0x01, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x77, 0x92, 0x41, 0x74, - 0x32, 0x4a, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, - 0x49, 0x44, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x6f, - 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x4a, 0x26, 0x22, 0x63, - 0x32, 0x64, 0x62, 0x31, 0x37, 0x62, 0x38, 0x2d, 0x34, 0x66, 0x39, 0x66, 0x2d, 0x34, 0x66, 0x62, - 0x31, 0x2d, 0x61, 0x63, 0x66, 0x64, 0x2d, 0x39, 0x31, 0x36, 0x32, 0x61, 0x30, 0x32, 0x62, 0x65, - 0x34, 0x32, 0x62, 0x22, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, - 0x58, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x35, 0x92, 0x41, 0x32, 0x32, 0x30, 0x41, 0x64, 0x64, 0x20, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, - 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6f, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x0b, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x09, 0x70, 0x72, 0x69, - 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, - 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, - 0x6c, 0x12, 0xbb, 0x02, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0xe4, 0x01, + 0x29, 0x2a, 0x24, 0xe0, 0x41, 0x01, 0xfa, 0x42, 0x33, 0x72, 0x31, 0x32, 0x2f, 0x5e, 0x28, 0x5b, + 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, + 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, + 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x1a, 0x5e, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 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, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, 0x32, 0x19, 0x53, 0x65, 0x74, 0x20, + 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x22, 0xc9, 0x02, 0x0a, 0x0d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x4d, 0x61, 0x70, 0x12, 0xb1, 0x01, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x71, 0x92, 0x41, 0x66, 0x32, 0x64, 0x4b, 0x65, 0x79, 0x2d, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, + 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x75, + 0x73, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0xfa, 0x42, 0x05, + 0x9a, 0x01, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x1a, 0x4f, 0x0a, 0x09, 0x41, + 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x33, 0x92, 0x41, + 0x30, 0x0a, 0x2e, 0x32, 0x2c, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x22, 0xe1, 0x06, 0x0a, 0x19, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x96, 0x01, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x77, 0x92, 0x41, 0x74, 0x32, 0x4a, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x49, 0x44, 0x20, 0x75, 0x73, 0x65, 0x66, + 0x75, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x2e, 0x4a, 0x26, 0x22, 0x63, 0x32, 0x64, 0x62, 0x31, 0x37, 0x62, 0x38, + 0x2d, 0x34, 0x66, 0x39, 0x66, 0x2d, 0x34, 0x66, 0x62, 0x31, 0x2d, 0x61, 0x63, 0x66, 0x64, 0x2d, + 0x39, 0x31, 0x36, 0x32, 0x61, 0x30, 0x32, 0x62, 0x65, 0x34, 0x32, 0x62, 0x22, 0x52, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, + 0x12, 0xbc, 0x02, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0xe4, 0x01, 0x92, 0x41, 0xd5, 0x01, 0x32, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0xac, 0x01, 0x5b, 0x7b, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, @@ -2107,359 +2039,419 @@ var file_cerbos_request_v1_request_proto_rawDesc = []byte{ 0x66, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x7d, 0x7d, 0x7d, 0x5d, 0xa8, 0x01, 0x01, 0xb0, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, - 0x35, 0x0a, 0x08, 0x61, 0x75, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x35, 0x0a, 0x08, 0x61, 0x75, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, - 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xdb, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x84, 0x01, 0x0a, 0x07, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x6a, 0x92, 0x41, 0x54, 0x32, - 0x30, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, - 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x2e, 0x4a, 0x1a, 0x5b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x22, 0x2c, 0x20, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0xa8, 0x01, 0x01, - 0xb0, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x0d, 0x92, 0x01, 0x0a, 0x08, 0x01, 0x18, 0x01, - 0x22, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x43, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0b, 0xe0, - 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x3a, 0x1e, 0x92, 0x41, 0x1b, 0x0a, 0x19, 0x32, 0x17, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0xaf, 0x07, 0x0a, 0x07, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x30, 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4a, 0x57, 0x54, 0x52, 0x03, 0x6a, - 0x77, 0x74, 0x1a, 0xad, 0x06, 0x0a, 0x03, 0x4a, 0x57, 0x54, 0x12, 0xc4, 0x04, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xad, 0x04, 0x92, 0x41, 0x9f, - 0x04, 0x32, 0x1d, 0x4a, 0x57, 0x54, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4a, 0xc9, 0x03, 0x22, 0x65, 0x79, 0x4a, 0x68, 0x62, 0x47, 0x63, 0x69, 0x4f, 0x69, 0x4a, 0x46, - 0x55, 0x7a, 0x4d, 0x34, 0x4e, 0x43, 0x49, 0x73, 0x49, 0x6d, 0x74, 0x70, 0x5a, 0x43, 0x49, 0x36, - 0x49, 0x6a, 0x45, 0x35, 0x54, 0x47, 0x5a, 0x61, 0x59, 0x58, 0x52, 0x46, 0x5a, 0x47, 0x63, 0x34, - 0x4d, 0x31, 0x6c, 0x4f, 0x59, 0x7a, 0x56, 0x79, 0x4d, 0x6a, 0x4e, 0x6e, 0x64, 0x55, 0x31, 0x4b, - 0x63, 0x58, 0x4a, 0x75, 0x4e, 0x44, 0x30, 0x69, 0x4c, 0x43, 0x4a, 0x30, 0x65, 0x58, 0x41, 0x69, - 0x4f, 0x69, 0x4a, 0x4b, 0x56, 0x31, 0x51, 0x69, 0x66, 0x51, 0x2e, 0x65, 0x79, 0x4a, 0x68, 0x64, - 0x57, 0x51, 0x69, 0x4f, 0x6c, 0x73, 0x69, 0x59, 0x32, 0x56, 0x79, 0x59, 0x6d, 0x39, 0x7a, 0x4c, - 0x57, 0x70, 0x33, 0x64, 0x43, 0x31, 0x30, 0x5a, 0x58, 0x4e, 0x30, 0x63, 0x79, 0x4a, 0x64, 0x4c, - 0x43, 0x4a, 0x6a, 0x64, 0x58, 0x4e, 0x30, 0x62, 0x32, 0x31, 0x42, 0x63, 0x6e, 0x4a, 0x68, 0x65, - 0x53, 0x49, 0x36, 0x57, 0x79, 0x4a, 0x42, 0x49, 0x69, 0x77, 0x69, 0x51, 0x69, 0x49, 0x73, 0x49, - 0x6b, 0x4d, 0x69, 0x58, 0x53, 0x77, 0x69, 0x59, 0x33, 0x56, 0x7a, 0x64, 0x47, 0x39, 0x74, 0x53, - 0x57, 0x35, 0x30, 0x49, 0x6a, 0x6f, 0x30, 0x4d, 0x69, 0x77, 0x69, 0x59, 0x33, 0x56, 0x7a, 0x64, - 0x47, 0x39, 0x74, 0x54, 0x57, 0x46, 0x77, 0x49, 0x6a, 0x70, 0x37, 0x49, 0x6b, 0x45, 0x69, 0x4f, - 0x69, 0x4a, 0x42, 0x51, 0x53, 0x49, 0x73, 0x49, 0x6b, 0x49, 0x69, 0x4f, 0x69, 0x4a, 0x43, 0x51, - 0x69, 0x49, 0x73, 0x49, 0x6b, 0x4d, 0x69, 0x4f, 0x69, 0x4a, 0x44, 0x51, 0x79, 0x4a, 0x39, 0x4c, - 0x43, 0x4a, 0x6a, 0x64, 0x58, 0x4e, 0x30, 0x62, 0x32, 0x31, 0x54, 0x64, 0x48, 0x4a, 0x70, 0x62, - 0x6d, 0x63, 0x69, 0x4f, 0x69, 0x4a, 0x6d, 0x62, 0x32, 0x39, 0x69, 0x59, 0x58, 0x49, 0x69, 0x4c, - 0x43, 0x4a, 0x6c, 0x65, 0x48, 0x41, 0x69, 0x4f, 0x6a, 0x45, 0x35, 0x4e, 0x44, 0x6b, 0x35, 0x4d, - 0x7a, 0x51, 0x77, 0x4d, 0x7a, 0x6b, 0x73, 0x49, 0x6d, 0x6c, 0x7a, 0x63, 0x79, 0x49, 0x36, 0x49, - 0x6d, 0x4e, 0x6c, 0x63, 0x6d, 0x4a, 0x76, 0x63, 0x79, 0x31, 0x30, 0x5a, 0x58, 0x4e, 0x30, 0x4c, - 0x58, 0x4e, 0x31, 0x61, 0x58, 0x52, 0x6c, 0x49, 0x6e, 0x30, 0x2e, 0x57, 0x4e, 0x5f, 0x74, 0x4f, - 0x53, 0x63, 0x53, 0x70, 0x64, 0x5f, 0x45, 0x49, 0x2d, 0x50, 0x35, 0x45, 0x49, 0x31, 0x59, 0x6c, - 0x61, 0x67, 0x78, 0x45, 0x67, 0x45, 0x78, 0x53, 0x66, 0x42, 0x6a, 0x41, 0x74, 0x63, 0x72, 0x67, - 0x63, 0x46, 0x36, 0x6c, 0x79, 0x57, 0x6a, 0x31, 0x6c, 0x47, 0x70, 0x52, 0x5f, 0x47, 0x4b, 0x78, - 0x39, 0x67, 0x6f, 0x5a, 0x45, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x35, 0x41, 0x56, 0x57, 0x58, 0x4e, - 0x5f, 0x62, 0x6a, 0x7a, 0x5f, 0x73, 0x4d, 0x55, 0x6d, 0x4a, 0x64, 0x4a, 0x61, 0x34, 0x63, 0x56, - 0x64, 0x35, 0x35, 0x51, 0x6d, 0x31, 0x6d, 0x69, 0x52, 0x2d, 0x46, 0x4b, 0x75, 0x36, 0x6f, 0x4e, - 0x52, 0x48, 0x6e, 0x53, 0x45, 0x57, 0x64, 0x4d, 0x46, 0x6d, 0x6e, 0x41, 0x72, 0x77, 0x50, 0x77, - 0x2d, 0x59, 0x44, 0x4a, 0x57, 0x66, 0x79, 0x6c, 0x4c, 0x46, 0x58, 0x22, 0x82, 0x03, 0x1a, 0x0a, - 0x14, 0x78, 0x2d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2d, 0x73, 0x68, 0x6f, 0x77, 0x2d, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x02, 0x20, 0x00, 0x82, 0x03, 0x14, 0x0a, 0x0e, 0x78, 0x2d, - 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x02, 0x20, 0x00, - 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0xb8, 0x01, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x99, 0x01, 0x92, 0x41, 0x95, 0x01, 0x32, 0x52, 0x4b, - 0x65, 0x79, 0x20, 0x49, 0x44, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x77, 0x68, 0x65, - 0x6e, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x28, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x6e, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x20, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x29, 0x4a, 0x0b, 0x22, 0x6d, 0x79, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x65, 0x74, 0x22, 0x82, 0x03, - 0x1a, 0x0a, 0x14, 0x78, 0x2d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2d, 0x73, 0x68, 0x6f, - 0x77, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x02, 0x20, 0x00, 0x82, 0x03, 0x14, 0x0a, 0x0e, - 0x78, 0x2d, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x02, - 0x20, 0x00, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x49, 0x64, 0x3a, 0x24, 0x92, 0x41, - 0x21, 0x0a, 0x1f, 0x32, 0x1d, 0x4a, 0x57, 0x54, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x3a, 0x42, 0x92, 0x41, 0x3f, 0x0a, 0x3d, 0x32, 0x3b, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x75, 0x72, 0x65, 0x64, 0x20, 0x61, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5b, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x27, - 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x66, - 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xfa, 0x42, - 0x08, 0x7a, 0x06, 0x10, 0x01, 0x18, 0x80, 0x80, 0x40, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x19, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, - 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, - 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x26, - 0x92, 0x41, 0x16, 0x32, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x6c, - 0x65, 0x73, 0x2e, 0xa0, 0x01, 0x1e, 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x92, - 0x01, 0x04, 0x08, 0x01, 0x10, 0x1e, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x3a, 0x22, 0x92, + 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xd8, 0x01, 0x0a, 0x0a, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x84, 0x01, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x6a, 0x92, 0x41, 0x54, 0x32, 0x30, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x62, 0x65, + 0x69, 0x6e, 0x67, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x20, 0x6f, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4a, 0x1a, + 0x5b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x2c, 0x20, + 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0xa8, 0x01, 0x01, 0xb0, 0x01, 0x01, + 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x0d, 0x92, 0x01, 0x0a, 0x08, 0x01, 0x18, 0x01, 0x22, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x3a, 0x12, 0x92, 0x41, 0x0f, 0x0a, 0x0d, 0x32, 0x0b, 0x50, 0x44, 0x50, 0x20, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc5, 0x07, 0x0a, 0x15, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x96, 0x01, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x77, 0x92, 0x41, 0x74, 0x32, 0x4a, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x49, 0x44, 0x20, 0x75, 0x73, 0x65, 0x66, + 0x75, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x2e, 0x4a, 0x26, 0x22, 0x63, 0x32, 0x64, 0x62, 0x31, 0x37, 0x62, 0x38, + 0x2d, 0x34, 0x66, 0x39, 0x66, 0x2d, 0x34, 0x66, 0x62, 0x31, 0x2d, 0x61, 0x63, 0x66, 0x64, 0x2d, + 0x39, 0x31, 0x36, 0x32, 0x61, 0x30, 0x32, 0x62, 0x65, 0x34, 0x32, 0x62, 0x22, 0x52, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x35, + 0x92, 0x41, 0x32, 0x32, 0x30, 0x41, 0x64, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x65, + 0x74, 0x61, 0x12, 0x46, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, + 0x61, 0x6c, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0xbb, 0x02, 0x0a, 0x09, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, + 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0xe4, 0x01, 0x92, 0x41, 0xd5, 0x01, 0x32, 0x1e, 0x4c, + 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0xac, 0x01, + 0x5b, 0x7b, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x5b, 0x22, 0x76, 0x69, + 0x65, 0x77, 0x22, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0x2c, 0x20, + 0x22, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x3a, 0x7b, 0x22, 0x6b, 0x69, 0x6e, + 0x64, 0x22, 0x3a, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x22, 0x2c, 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x3a, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x2c, 0x22, 0x69, 0x64, 0x22, + 0x3a, 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x2c, 0x22, 0x61, 0x74, 0x74, 0x72, 0x22, 0x3a, + 0x7b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x3a, 0x22, 0x62, 0x75, 0x67, 0x73, 0x5f, 0x62, + 0x75, 0x6e, 0x6e, 0x79, 0x22, 0x2c, 0x20, 0x22, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x3a, + 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x22, 0x66, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, + 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x7d, 0x7d, 0x7d, 0x5d, 0xa8, 0x01, 0x01, 0xb0, + 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x75, 0x78, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x72, + 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x1a, + 0xdb, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x84, 0x01, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x6a, 0x92, 0x41, 0x54, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, + 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, + 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4a, 0x1a, 0x5b, 0x22, 0x76, 0x69, + 0x65, 0x77, 0x3a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x2c, 0x20, 0x22, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0xa8, 0x01, 0x01, 0xb0, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, + 0x42, 0x0d, 0x92, 0x01, 0x0a, 0x08, 0x01, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x72, + 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x1e, 0x92, + 0x41, 0x1b, 0x0a, 0x19, 0x32, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xaf, 0x07, + 0x0a, 0x07, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x03, 0x6a, 0x77, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x78, 0x44, 0x61, + 0x74, 0x61, 0x2e, 0x4a, 0x57, 0x54, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x1a, 0xad, 0x06, 0x0a, 0x03, + 0x4a, 0x57, 0x54, 0x12, 0xc4, 0x04, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0xad, 0x04, 0x92, 0x41, 0x9f, 0x04, 0x32, 0x1d, 0x4a, 0x57, 0x54, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, + 0x6c, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4a, 0xc9, 0x03, 0x22, 0x65, 0x79, 0x4a, + 0x68, 0x62, 0x47, 0x63, 0x69, 0x4f, 0x69, 0x4a, 0x46, 0x55, 0x7a, 0x4d, 0x34, 0x4e, 0x43, 0x49, + 0x73, 0x49, 0x6d, 0x74, 0x70, 0x5a, 0x43, 0x49, 0x36, 0x49, 0x6a, 0x45, 0x35, 0x54, 0x47, 0x5a, + 0x61, 0x59, 0x58, 0x52, 0x46, 0x5a, 0x47, 0x63, 0x34, 0x4d, 0x31, 0x6c, 0x4f, 0x59, 0x7a, 0x56, + 0x79, 0x4d, 0x6a, 0x4e, 0x6e, 0x64, 0x55, 0x31, 0x4b, 0x63, 0x58, 0x4a, 0x75, 0x4e, 0x44, 0x30, + 0x69, 0x4c, 0x43, 0x4a, 0x30, 0x65, 0x58, 0x41, 0x69, 0x4f, 0x69, 0x4a, 0x4b, 0x56, 0x31, 0x51, + 0x69, 0x66, 0x51, 0x2e, 0x65, 0x79, 0x4a, 0x68, 0x64, 0x57, 0x51, 0x69, 0x4f, 0x6c, 0x73, 0x69, + 0x59, 0x32, 0x56, 0x79, 0x59, 0x6d, 0x39, 0x7a, 0x4c, 0x57, 0x70, 0x33, 0x64, 0x43, 0x31, 0x30, + 0x5a, 0x58, 0x4e, 0x30, 0x63, 0x79, 0x4a, 0x64, 0x4c, 0x43, 0x4a, 0x6a, 0x64, 0x58, 0x4e, 0x30, + 0x62, 0x32, 0x31, 0x42, 0x63, 0x6e, 0x4a, 0x68, 0x65, 0x53, 0x49, 0x36, 0x57, 0x79, 0x4a, 0x42, + 0x49, 0x69, 0x77, 0x69, 0x51, 0x69, 0x49, 0x73, 0x49, 0x6b, 0x4d, 0x69, 0x58, 0x53, 0x77, 0x69, + 0x59, 0x33, 0x56, 0x7a, 0x64, 0x47, 0x39, 0x74, 0x53, 0x57, 0x35, 0x30, 0x49, 0x6a, 0x6f, 0x30, + 0x4d, 0x69, 0x77, 0x69, 0x59, 0x33, 0x56, 0x7a, 0x64, 0x47, 0x39, 0x74, 0x54, 0x57, 0x46, 0x77, + 0x49, 0x6a, 0x70, 0x37, 0x49, 0x6b, 0x45, 0x69, 0x4f, 0x69, 0x4a, 0x42, 0x51, 0x53, 0x49, 0x73, + 0x49, 0x6b, 0x49, 0x69, 0x4f, 0x69, 0x4a, 0x43, 0x51, 0x69, 0x49, 0x73, 0x49, 0x6b, 0x4d, 0x69, + 0x4f, 0x69, 0x4a, 0x44, 0x51, 0x79, 0x4a, 0x39, 0x4c, 0x43, 0x4a, 0x6a, 0x64, 0x58, 0x4e, 0x30, + 0x62, 0x32, 0x31, 0x54, 0x64, 0x48, 0x4a, 0x70, 0x62, 0x6d, 0x63, 0x69, 0x4f, 0x69, 0x4a, 0x6d, + 0x62, 0x32, 0x39, 0x69, 0x59, 0x58, 0x49, 0x69, 0x4c, 0x43, 0x4a, 0x6c, 0x65, 0x48, 0x41, 0x69, + 0x4f, 0x6a, 0x45, 0x35, 0x4e, 0x44, 0x6b, 0x35, 0x4d, 0x7a, 0x51, 0x77, 0x4d, 0x7a, 0x6b, 0x73, + 0x49, 0x6d, 0x6c, 0x7a, 0x63, 0x79, 0x49, 0x36, 0x49, 0x6d, 0x4e, 0x6c, 0x63, 0x6d, 0x4a, 0x76, + 0x63, 0x79, 0x31, 0x30, 0x5a, 0x58, 0x4e, 0x30, 0x4c, 0x58, 0x4e, 0x31, 0x61, 0x58, 0x52, 0x6c, + 0x49, 0x6e, 0x30, 0x2e, 0x57, 0x4e, 0x5f, 0x74, 0x4f, 0x53, 0x63, 0x53, 0x70, 0x64, 0x5f, 0x45, + 0x49, 0x2d, 0x50, 0x35, 0x45, 0x49, 0x31, 0x59, 0x6c, 0x61, 0x67, 0x78, 0x45, 0x67, 0x45, 0x78, + 0x53, 0x66, 0x42, 0x6a, 0x41, 0x74, 0x63, 0x72, 0x67, 0x63, 0x46, 0x36, 0x6c, 0x79, 0x57, 0x6a, + 0x31, 0x6c, 0x47, 0x70, 0x52, 0x5f, 0x47, 0x4b, 0x78, 0x39, 0x67, 0x6f, 0x5a, 0x45, 0x70, 0x32, + 0x70, 0x5f, 0x74, 0x35, 0x41, 0x56, 0x57, 0x58, 0x4e, 0x5f, 0x62, 0x6a, 0x7a, 0x5f, 0x73, 0x4d, + 0x55, 0x6d, 0x4a, 0x64, 0x4a, 0x61, 0x34, 0x63, 0x56, 0x64, 0x35, 0x35, 0x51, 0x6d, 0x31, 0x6d, + 0x69, 0x52, 0x2d, 0x46, 0x4b, 0x75, 0x36, 0x6f, 0x4e, 0x52, 0x48, 0x6e, 0x53, 0x45, 0x57, 0x64, + 0x4d, 0x46, 0x6d, 0x6e, 0x41, 0x72, 0x77, 0x50, 0x77, 0x2d, 0x59, 0x44, 0x4a, 0x57, 0x66, 0x79, + 0x6c, 0x4c, 0x46, 0x58, 0x22, 0x82, 0x03, 0x1a, 0x0a, 0x14, 0x78, 0x2d, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x2d, 0x73, 0x68, 0x6f, 0x77, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x02, + 0x20, 0x00, 0x82, 0x03, 0x14, 0x0a, 0x0e, 0x78, 0x2d, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x02, 0x20, 0x00, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0xb8, 0x01, 0x0a, 0x0a, 0x6b, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x99, 0x01, 0x92, 0x41, 0x95, 0x01, 0x32, 0x52, 0x4b, 0x65, 0x79, 0x20, 0x49, 0x44, 0x20, 0x74, + 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x28, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x4a, 0x0b, 0x22, 0x6d, 0x79, 0x2d, + 0x6b, 0x65, 0x79, 0x73, 0x65, 0x74, 0x22, 0x82, 0x03, 0x1a, 0x0a, 0x14, 0x78, 0x2d, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2d, 0x73, 0x68, 0x6f, 0x77, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x02, 0x20, 0x00, 0x82, 0x03, 0x14, 0x0a, 0x0e, 0x78, 0x2d, 0x66, 0x69, 0x6c, 0x6c, 0x2d, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x02, 0x20, 0x00, 0x52, 0x08, 0x6b, 0x65, 0x79, + 0x53, 0x65, 0x74, 0x49, 0x64, 0x3a, 0x24, 0x92, 0x41, 0x21, 0x0a, 0x1f, 0x32, 0x1d, 0x4a, 0x57, + 0x54, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x42, 0x92, 0x41, 0x3f, + 0x0a, 0x3d, 0x32, 0x3b, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x20, 0x61, + 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x75, 0x73, + 0x65, 0x66, 0x75, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x5b, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x08, 0x7a, 0x06, 0x10, 0x01, 0x18, 0x80, + 0x80, 0x40, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbb, 0x01, 0x0a, + 0x19, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, + 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, + 0x55, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x26, 0x92, 0x41, 0x16, 0x32, 0x0e, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0xa0, 0x01, 0x1e, 0xa8, + 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x1e, 0x52, + 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x3a, 0x22, 0x92, 0x41, 0x1f, 0x0a, 0x1d, 0x32, 0x1b, 0x50, + 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x15, 0x50, + 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, + 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x05, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, + 0x65, 0x42, 0x26, 0x92, 0x41, 0x16, 0x32, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0xa0, 0x01, 0x1e, 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, + 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x1e, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x3a, 0x1e, 0x92, 0x41, 0x1b, 0x0a, 0x19, 0x32, 0x17, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0xee, 0x03, 0x0a, 0x19, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x45, + 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x26, 0x92, 0x41, 0x16, + 0x32, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, + 0xa0, 0x01, 0x1e, 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, + 0x01, 0x10, 0x1e, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x70, 0x72, + 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, + 0x61, 0x6c, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x6d, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x53, 0x92, 0x41, 0x3b, 0x32, 0x30, 0x4c, + 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x62, + 0x65, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x20, 0x6f, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0xa0, + 0x01, 0x32, 0xa8, 0x01, 0x01, 0xb0, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x0f, 0x92, 0x01, + 0x0c, 0x08, 0x01, 0x10, 0x32, 0x18, 0x01, 0x22, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x75, 0x78, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x78, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x3a, 0x22, 0x92, 0x41, 0x1f, 0x0a, 0x1d, 0x32, 0x1b, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, - 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, - 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, - 0x12, 0x55, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x26, 0x92, 0x41, 0x16, 0x32, 0x0e, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0xa0, 0x01, 0x1e, - 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x1e, - 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x3a, 0x1e, 0x92, 0x41, 0x1b, 0x0a, 0x19, 0x32, 0x17, - 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xee, 0x03, 0x0a, 0x19, 0x50, 0x6c, 0x61, 0x79, - 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, - 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, - 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x05, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, - 0x6c, 0x65, 0x42, 0x26, 0x92, 0x41, 0x16, 0x32, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0xa0, 0x01, 0x1e, 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, - 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x1e, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x12, 0x46, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, - 0x6c, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, - 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x6d, - 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, - 0x53, 0x92, 0x41, 0x3b, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x65, 0x72, 0x66, - 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0xa0, 0x01, 0x32, 0xa8, 0x01, 0x01, 0xb0, 0x01, 0x01, 0xe0, - 0x41, 0x02, 0xfa, 0x42, 0x0f, 0x92, 0x01, 0x0c, 0x08, 0x01, 0x10, 0x32, 0x18, 0x01, 0x22, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, - 0x08, 0x61, 0x75, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, 0x75, 0x78, - 0x44, 0x61, 0x74, 0x61, 0x3a, 0x22, 0x92, 0x41, 0x1f, 0x0a, 0x1d, 0x32, 0x1b, 0x50, 0x6c, 0x61, - 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, - 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb0, 0x04, 0x0a, 0x16, 0x50, 0x6c, 0x61, - 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, - 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, - 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, - 0x42, 0x26, 0x92, 0x41, 0x16, 0x32, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x2e, 0xa0, 0x01, 0x1e, 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, - 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x1e, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, - 0x5a, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x12, 0x60, 0x0a, 0x14, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x50, 0x0a, - 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, - 0x53, 0x0a, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, - 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x3a, 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0x32, 0x18, 0x50, 0x6c, 0x61, - 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x14, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x9d, 0x01, 0x0a, 0x18, - 0x41, 0x64, 0x64, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x42, 0x29, 0x92, 0x41, 0x19, 0x32, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x20, - 0x6f, 0x66, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2e, 0xa0, 0x01, 0x0a, 0xa8, - 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x0a, 0x52, - 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, - 0x32, 0x19, 0x41, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa2, 0x07, 0x0a, 0x1a, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x86, 0x01, 0x0a, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x63, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x3e, 0x92, - 0x41, 0x31, 0x32, 0x11, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x6f, 0x67, 0x20, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0xf2, 0x02, 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x43, 0x43, - 0x45, 0x53, 0x53, 0xf2, 0x02, 0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, - 0x49, 0x4f, 0x4e, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x18, 0x01, 0x18, 0x02, 0x52, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x12, 0x44, 0x0a, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x2e, 0x92, 0x41, 0x23, 0x32, 0x0f, 0x4c, 0x61, 0x73, 0x74, 0x20, 0x4e, 0x20, 0x65, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8f, 0x40, - 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, - 0x07, 0x48, 0x00, 0x52, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x53, 0x0a, 0x07, 0x62, 0x65, 0x74, - 0x77, 0x65, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x12, 0x59, - 0x0a, 0x05, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x26, 0x92, 0x41, 0x23, 0x32, 0x21, 0x45, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x20, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x4e, 0x20, 0x68, - 0x6f, 0x75, 0x72, 0x73, 0x2f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x67, 0x6f, - 0x48, 0x00, 0x52, 0x05, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x06, 0x6c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x69, 0x92, 0x41, 0x37, 0x32, - 0x0a, 0x42, 0x79, 0x20, 0x43, 0x61, 0x6c, 0x6c, 0x20, 0x49, 0x44, 0x8a, 0x01, 0x28, 0x5e, 0x5b, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, - 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, - 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0xfa, 0x42, 0x2c, 0x72, 0x2a, 0x32, 0x28, 0x5e, 0x5b, 0x30, - 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5d, - 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x1a, - 0xad, 0x02, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x7f, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x4d, 0x92, 0x41, 0x3d, 0x32, 0x1e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x53, 0x4f, - 0x20, 0x38, 0x36, 0x30, 0x31, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x4a, 0x1b, 0x22, - 0x32, 0x30, 0x32, 0x31, 0x2d, 0x30, 0x37, 0x2d, 0x30, 0x35, 0x54, 0x30, 0x37, 0x3a, 0x32, 0x37, - 0x3a, 0x30, 0x31, 0x2b, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, - 0xb2, 0x01, 0x04, 0x08, 0x01, 0x38, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x79, - 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x4b, 0x92, 0x41, 0x3b, 0x32, 0x1c, 0x45, 0x6e, - 0x64, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x53, 0x4f, 0x20, 0x38, 0x36, - 0x30, 0x31, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x4a, 0x1b, 0x22, 0x32, 0x30, 0x32, - 0x31, 0x2d, 0x30, 0x37, 0x2d, 0x30, 0x35, 0x54, 0x30, 0x37, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x31, - 0x2b, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0xb2, 0x01, 0x04, - 0x08, 0x01, 0x38, 0x01, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x3a, 0x24, 0x92, 0x41, 0x21, 0x0a, 0x1f, - 0x32, 0x1d, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, - 0x6e, 0x20, 0x61, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x22, - 0x40, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x49, 0x4e, 0x44, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, - 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x11, - 0x0a, 0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, - 0x02, 0x42, 0x0d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, - 0x22, 0x2f, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x1a, 0x92, 0x41, 0x17, 0x0a, 0x15, 0x32, 0x13, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0xf7, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x10, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x21, 0x92, 0x41, 0x1b, 0x32, 0x19, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x69, 0x65, 0x73, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x5f, - 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0x92, 0x41, - 0x25, 0x32, 0x23, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x20, 0x62, 0x79, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, 0x4f, 0x0a, 0x0c, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x72, - 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0x92, 0x41, 0x26, - 0x32, 0x24, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x20, 0x62, 0x79, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, 0x55, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, - 0x92, 0x41, 0x28, 0x32, 0x26, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x20, 0x62, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, - 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0xe0, 0x41, 0x01, 0x52, 0x0d, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x3a, 0x1c, 0x92, - 0x41, 0x19, 0x0a, 0x17, 0x32, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x69, 0x65, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x83, 0x02, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0xd3, 0x01, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0xc2, 0x01, - 0x92, 0x41, 0xa6, 0x01, 0x32, 0x87, 0x01, 0x46, 0x6f, 0x72, 0x20, 0x62, 0x6c, 0x6f, 0x62, 0x2c, - 0x20, 0x64, 0x69, 0x73, 0x6b, 0x2c, 0x20, 0x67, 0x69, 0x74, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x73, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x28, 0x3c, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x2e, 0x79, 0x61, 0x6d, 0x6c, - 0x29, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x2c, 0x20, 0x70, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x71, 0x6c, 0x69, 0x74, 0x65, 0x33, 0x20, - 0x75, 0x73, 0x65, 0x20, 0x69, 0x64, 0x20, 0x28, 0x3c, 0x6b, 0x69, 0x6e, 0x64, 0x3e, 0x2e, 0x3c, - 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x2e, 0x3c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3e, 0x29, - 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x1a, - 0x22, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x73, 0x61, 0x72, 0x61, 0x68, - 0x2e, 0x76, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x12, - 0x92, 0x01, 0x0f, 0x08, 0x01, 0x10, 0x19, 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0x80, 0x0a, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x19, 0x92, 0x41, 0x16, 0x0a, 0x14, 0x32, 0x12, 0x47, - 0x65, 0x74, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x59, 0x92, 0x41, 0x3e, 0x32, 0x20, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x1a, 0x22, - 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x73, 0x61, 0x72, 0x61, 0x68, 0x2e, - 0x76, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x12, 0x92, - 0x01, 0x0f, 0x08, 0x01, 0x10, 0x19, 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, - 0x0a, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x1d, 0x92, 0x41, 0x1a, 0x0a, 0x18, 0x32, 0x16, 0x44, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x59, 0x92, 0x41, 0x3e, 0x32, 0x20, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, - 0x1a, 0x22, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x73, 0x61, 0x72, 0x61, - 0x68, 0x2e, 0x76, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, + 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0xb0, 0x04, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, + 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, + 0x64, 0x12, 0x55, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x26, 0x92, 0x41, 0x16, 0x32, 0x0e, + 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0xa0, 0x01, + 0x1e, 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, + 0x1e, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x00, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x53, 0x65, 0x74, 0x12, 0x60, 0x0a, 0x14, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x00, 0x52, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x50, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x0f, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x3a, 0x1f, 0x92, + 0x41, 0x1c, 0x0a, 0x1a, 0x32, 0x18, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, + 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x14, + 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x03, 0xf8, 0x42, 0x01, 0x22, 0x9d, 0x01, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x5f, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x29, 0x92, + 0x41, 0x19, 0x32, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x2e, 0xa0, 0x01, 0x0a, 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, + 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x0a, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, 0x32, 0x19, 0x41, 0x64, 0x64, 0x2f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0xa2, 0x07, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x86, 0x01, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, + 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x3e, 0x92, 0x41, 0x31, 0x32, 0x11, 0x4b, 0x69, 0x6e, + 0x64, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0xf2, 0x02, + 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0xf2, 0x02, 0x0d, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0xfa, 0x42, 0x07, 0x82, + 0x01, 0x04, 0x18, 0x01, 0x18, 0x02, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x44, 0x0a, 0x04, + 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x2e, 0x92, 0x41, 0x23, 0x32, + 0x0f, 0x4c, 0x61, 0x73, 0x74, 0x20, 0x4e, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2e, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8f, 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x3f, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x48, 0x00, 0x52, 0x04, 0x74, 0x61, + 0x69, 0x6c, 0x12, 0x53, 0x0a, 0x07, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, + 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, + 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x12, 0x59, 0x0a, 0x05, 0x73, 0x69, 0x6e, 0x63, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x26, 0x92, 0x41, 0x23, 0x32, 0x21, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x20, + 0x73, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x4e, 0x20, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x2f, 0x6d, 0x69, + 0x6e, 0x75, 0x74, 0x65, 0x73, 0x20, 0x61, 0x67, 0x6f, 0x48, 0x00, 0x52, 0x05, 0x73, 0x69, 0x6e, + 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x69, 0x92, 0x41, 0x37, 0x32, 0x0a, 0x42, 0x79, 0x20, 0x43, 0x61, 0x6c, + 0x6c, 0x20, 0x49, 0x44, 0x8a, 0x01, 0x28, 0x5e, 0x5b, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, + 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0xfa, + 0x42, 0x2c, 0x72, 0x2a, 0x32, 0x28, 0x5e, 0x5b, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x48, 0x00, + 0x52, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x1a, 0xad, 0x02, 0x0a, 0x09, 0x54, 0x69, 0x6d, + 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x7f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x4d, 0x92, 0x41, 0x3d, 0x32, 0x1e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x64, 0x61, + 0x74, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x53, 0x4f, 0x20, 0x38, 0x36, 0x30, 0x31, 0x20, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x4a, 0x1b, 0x22, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x30, 0x37, + 0x2d, 0x30, 0x35, 0x54, 0x30, 0x37, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x31, 0x2b, 0x30, 0x30, 0x3a, + 0x30, 0x30, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0xb2, 0x01, 0x04, 0x08, 0x01, 0x38, 0x01, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x79, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x4b, 0x92, 0x41, 0x3b, 0x32, 0x1c, 0x45, 0x6e, 0x64, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, + 0x69, 0x6e, 0x20, 0x49, 0x53, 0x4f, 0x20, 0x38, 0x36, 0x30, 0x31, 0x20, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x2e, 0x4a, 0x1b, 0x22, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x30, 0x37, 0x2d, 0x30, 0x35, + 0x54, 0x30, 0x37, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x31, 0x2b, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x22, + 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0xb2, 0x01, 0x04, 0x08, 0x01, 0x38, 0x01, 0x52, 0x03, 0x65, + 0x6e, 0x64, 0x3a, 0x24, 0x92, 0x41, 0x21, 0x0a, 0x1f, 0x32, 0x1d, 0x45, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x74, 0x69, 0x6d, + 0x65, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x22, 0x40, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, + 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, + 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, + 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x42, 0x0d, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x2f, 0x0a, 0x11, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x1a, + 0x92, 0x41, 0x17, 0x0a, 0x15, 0x32, 0x13, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x69, 0x6e, + 0x66, 0x6f, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xf7, 0x02, 0x0a, 0x13, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x21, 0x92, 0x41, + 0x1b, 0x32, 0x19, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0xe0, 0x41, 0x01, 0x52, + 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x4c, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0x92, 0x41, 0x25, 0x32, 0x23, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x20, 0x62, 0x79, 0x20, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0xe0, + 0x41, 0x01, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, 0x4f, + 0x0a, 0x0c, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0x92, 0x41, 0x26, 0x32, 0x24, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x20, 0x62, 0x79, 0x20, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0xe0, + 0x41, 0x01, 0x52, 0x0b, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, + 0x55, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0x92, 0x41, 0x28, 0x32, 0x26, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x20, 0x62, 0x79, + 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x65, + 0x67, 0x65, 0x78, 0x70, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x3a, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x32, 0x15, 0x4c, + 0x69, 0x73, 0x74, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x20, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x83, 0x02, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xd3, 0x01, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0xc2, 0x01, 0x92, 0x41, 0xa6, 0x01, 0x32, 0x87, 0x01, + 0x46, 0x6f, 0x72, 0x20, 0x62, 0x6c, 0x6f, 0x62, 0x2c, 0x20, 0x64, 0x69, 0x73, 0x6b, 0x2c, 0x20, + 0x67, 0x69, 0x74, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x28, 0x3c, 0x66, 0x69, 0x6c, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x3e, 0x2e, 0x79, 0x61, 0x6d, 0x6c, 0x29, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x20, + 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x2c, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x2c, + 0x20, 0x73, 0x71, 0x6c, 0x69, 0x74, 0x65, 0x33, 0x20, 0x75, 0x73, 0x65, 0x20, 0x69, 0x64, 0x20, + 0x28, 0x3c, 0x6b, 0x69, 0x6e, 0x64, 0x3e, 0x2e, 0x3c, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x2e, 0x3c, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3e, 0x29, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x1a, 0x22, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, + 0x70, 0x61, 0x6c, 0x2e, 0x73, 0x61, 0x72, 0x61, 0x68, 0x2e, 0x76, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x12, 0x92, 0x01, 0x0f, 0x08, 0x01, 0x10, 0x19, + 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x0a, 0x52, 0x02, 0x69, 0x64, 0x3a, + 0x19, 0x92, 0x41, 0x16, 0x0a, 0x14, 0x32, 0x12, 0x47, 0x65, 0x74, 0x20, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x14, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x59, 0x92, 0x41, 0x3e, 0x32, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x1a, 0x22, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, + 0x61, 0x6c, 0x2e, 0x73, 0x61, 0x72, 0x61, 0x68, 0x2e, 0x76, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x12, 0x92, 0x01, 0x0f, 0x08, 0x01, 0x10, 0x19, 0x18, + 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x0a, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x1d, + 0x92, 0x41, 0x1a, 0x0a, 0x18, 0x32, 0x16, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9e, 0x01, + 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x59, 0x92, 0x41, 0x3e, 0x32, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x1a, 0x22, 0x70, 0x72, 0x69, 0x6e, 0x63, + 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x73, 0x61, 0x72, 0x61, 0x68, 0x2e, 0x76, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x12, 0x92, 0x01, 0x0f, 0x08, 0x01, 0x10, + 0x19, 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x0a, 0x52, 0x02, 0x69, 0x64, + 0x3a, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x32, 0x15, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9a, + 0x01, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x07, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, + 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x28, 0x92, 0x41, 0x18, 0x32, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2e, 0xa0, 0x01, 0x0a, + 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x0a, + 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, + 0x32, 0x19, 0x41, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x34, 0x0a, 0x12, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x3a, 0x1e, 0x92, 0x41, 0x1b, 0x0a, 0x19, 0x32, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x64, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x91, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x4f, 0x92, 0x41, 0x34, 0x32, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4a, 0x10, 0x22, 0x70, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x12, 0x92, 0x01, 0x0f, 0x08, 0x01, 0x10, 0x19, 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, - 0x18, 0x80, 0x0a, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x32, 0x15, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x28, 0x92, - 0x41, 0x18, 0x32, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x73, 0x2e, 0xa0, 0x01, 0x0a, 0xa8, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, - 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x0a, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, - 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, 0x32, 0x19, 0x41, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x34, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x1e, 0x92, 0x41, 0x1b, 0x0a, 0x19, 0x32, - 0x17, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x64, 0x73, - 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x18, 0xff, 0x01, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x32, 0x15, + 0x47, 0x65, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x28, 0x73, 0x29, 0x20, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x4f, 0x92, 0x41, 0x34, 0x32, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4a, 0x10, 0x22, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x12, 0x92, 0x01, 0x0f, 0x08, 0x01, 0x10, 0x19, 0x18, - 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x1c, - 0x92, 0x41, 0x19, 0x0a, 0x17, 0x32, 0x15, 0x47, 0x65, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x28, 0x73, 0x29, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, - 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x4f, 0x92, 0x41, 0x34, 0x32, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4a, 0x10, 0x22, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, - 0x70, 0x61, 0x6c, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x12, 0x92, - 0x01, 0x0f, 0x08, 0x01, 0x10, 0x19, 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, - 0x01, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0x32, 0x18, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x28, 0x73, 0x29, 0x20, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x78, 0x0a, 0x12, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, - 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, - 0x77, 0x61, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x31, 0x92, 0x41, 0x2b, 0x32, - 0x29, 0x57, 0x61, 0x69, 0x74, 0x20, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x20, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x73, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x77, - 0x61, 0x69, 0x74, 0x3a, 0x1b, 0x92, 0x41, 0x18, 0x0a, 0x16, 0x32, 0x14, 0x52, 0x65, 0x6c, 0x6f, - 0x61, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x42, 0x73, 0x0a, 0x19, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5a, 0x3e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x70, - 0x62, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x76, 0x31, 0xaa, 0x02, 0x15, - 0x43, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0x2e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x1f, + 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0x32, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x28, 0x73, 0x29, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x78, 0x0a, 0x12, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x31, 0x92, 0x41, 0x2b, 0x32, 0x29, 0x57, 0x61, 0x69, 0x74, 0x20, 0x75, + 0x6e, 0x74, 0x69, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x20, 0x66, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x65, 0x73, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x3a, 0x1b, 0x92, 0x41, + 0x18, 0x0a, 0x16, 0x32, 0x14, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x73, 0x0a, 0x19, 0x64, 0x65, 0x76, + 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x62, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x76, 0x31, 0xaa, 0x02, 0x15, 0x43, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, + 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/genpb/cerbos/request/v1/request.pb.validate.go b/api/genpb/cerbos/request/v1/request.pb.validate.go index 2a703e22c..a4f214957 100644 --- a/api/genpb/cerbos/request/v1/request.pb.validate.go +++ b/api/genpb/cerbos/request/v1/request.pb.validate.go @@ -551,17 +551,6 @@ func (m *ResourceSet) validate(all bool) error { errors = append(errors, err) } - if !_ResourceSet_Kind_Pattern.MatchString(m.GetKind()) { - err := ResourceSetValidationError{ - field: "Kind", - reason: "value does not match regex pattern \"^[[:alpha:]][[:word:]\\\\@\\\\.\\\\-/]*(\\\\:[[:alpha:]][[:word:]\\\\@\\\\.\\\\-/]*)*$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - if !_ResourceSet_PolicyVersion_Pattern.MatchString(m.GetPolicyVersion()) { err := ResourceSetValidationError{ field: "PolicyVersion", @@ -729,8 +718,6 @@ var _ interface { ErrorName() string } = ResourceSetValidationError{} -var _ResourceSet_Kind_Pattern = regexp.MustCompile("^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$") - var _ResourceSet_PolicyVersion_Pattern = regexp.MustCompile("^[[:word:]]*$") var _ResourceSet_Scope_Pattern = regexp.MustCompile("^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$") diff --git a/api/genpb/cerbos/response/v1/response.pb.go b/api/genpb/cerbos/response/v1/response.pb.go index 523ae2baa..935657c01 100644 --- a/api/genpb/cerbos/response/v1/response.pb.go +++ b/api/genpb/cerbos/response/v1/response.pb.go @@ -2207,7 +2207,7 @@ var file_cerbos_response_v1_response_proto_rawDesc = []byte{ 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb5, 0x08, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf2, 0x07, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0x92, 0x41, 0x4d, @@ -2219,237 +2219,60 @@ var file_cerbos_response_v1_response_proto_rawDesc = []byte{ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x17, 0x32, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x0d, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x22, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8a, 0x01, 0x0a, - 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x65, 0x92, 0x41, 0x62, 0x32, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x2e, 0x4a, 0x0e, 0x22, 0x61, 0x6c, 0x62, 0x75, - 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8a, 0x01, 0x3f, 0x5e, 0x5b, 0x5b, 0x3a, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, - 0x5d, 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x3a, 0x5b, 0x5b, 0x3a, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, - 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x0c, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x23, 0x92, 0x41, 0x20, 0x32, 0x13, 0x54, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x22, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x0b, 0x92, 0x41, - 0x08, 0x32, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x12, 0x7f, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x42, - 0x3b, 0x92, 0x41, 0x38, 0x32, 0x36, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x04, 0x6d, 0x65, - 0x74, 0x61, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x40, 0x92, 0x41, 0x3d, 0x32, 0x3b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x29, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0xff, 0x01, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x5d, - 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x3a, 0x92, 0x41, 0x37, 0x32, 0x35, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x62, - 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x75, 0x72, 0x70, 0x6f, 0x73, 0x65, 0x73, 0x2e, - 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x6d, 0x0a, - 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0x92, 0x41, 0x45, 0x32, 0x31, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x20, - 0x74, 0x68, 0x69, 0x73, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x10, 0x22, 0x61, - 0x63, 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x22, 0x52, 0x0c, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x3a, 0x29, 0x92, 0x41, - 0x26, 0x0a, 0x24, 0x32, 0x22, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, - 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x3a, 0x3c, 0x92, 0x41, 0x39, 0x0a, 0x37, 0x32, 0x35, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, - 0x70, 0x6c, 0x61, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x22, 0xc8, 0x15, 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0x92, 0x41, 0x4d, 0x32, 0x23, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x20, 0x49, 0x44, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, - 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x4a, 0x26, 0x22, 0x63, 0x32, 0x64, 0x62, 0x31, 0x37, 0x62, 0x38, 0x2d, 0x34, 0x66, 0x39, 0x66, - 0x2d, 0x34, 0x66, 0x62, 0x31, 0x2d, 0x61, 0x63, 0x66, 0x64, 0x2d, 0x39, 0x31, 0x36, 0x32, 0x61, - 0x30, 0x32, 0x62, 0x65, 0x34, 0x32, 0x62, 0x22, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x49, 0x64, 0x12, 0xdb, 0x02, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x43, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0xe6, 0x01, 0x92, 0x41, 0xe2, 0x01, 0x32, 0x4b, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x2c, 0x20, 0x6b, 0x65, 0x79, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, - 0x44, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4a, 0x92, 0x01, 0x7b, 0x22, 0x58, 0x58, - 0x31, 0x32, 0x35, 0x22, 0x3a, 0x7b, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, - 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, - 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x22, 0x2c, 0x20, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x4c, - 0x4f, 0x57, 0x22, 0x7d, 0x7d, 0x2c, 0x20, 0x22, 0x58, 0x58, 0x32, 0x32, 0x35, 0x22, 0x3a, 0x7b, - 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, - 0x3a, 0x2a, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, - 0x22, 0x2c, 0x20, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x45, - 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x22, 0x7d, 0x7d, 0x7d, 0x52, 0x11, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x12, 0x82, 0x01, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x42, 0x3b, 0x92, 0x41, 0x38, 0x32, 0x36, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, - 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x65, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x1a, 0x8b, 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x8e, 0x01, 0x0a, 0x07, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x63, + 0x6c, 0x69, 0x63, 0x22, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0d, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41, 0x20, 0x32, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x2e, 0x4a, 0x0e, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, + 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, + 0x92, 0x41, 0x20, 0x32, 0x13, 0x54, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x22, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x0b, 0x92, 0x41, 0x08, 0x32, 0x06, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x7f, + 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x29, 0x92, 0x41, 0x26, 0x32, 0x24, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x2e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x40, 0x92, 0x41, 0x3d, 0x32, - 0x3b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x69, 0x73, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x29, 0x52, 0x10, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x54, - 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x89, 0x0c, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0xcf, 0x03, - 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x63, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0xd5, 0x02, 0x92, 0x41, 0xd1, 0x02, 0x32, 0x22, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x4a, - 0xaa, 0x02, 0x7b, 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x3a, 0x20, 0x7b, 0x22, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x2a, - 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x2c, 0x22, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, - 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, - 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, - 0x7d, 0x7d, 0x2c, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, - 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, - 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x5d, 0x7d, 0x2c, 0x20, 0x22, 0x58, 0x58, 0x32, 0x32, - 0x35, 0x22, 0x3a, 0x20, 0x7b, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, - 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, - 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x22, 0x7d, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x7b, - 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, - 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x7d, 0x7d, 0x7d, 0x52, 0x11, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a, - 0x88, 0x02, 0x0a, 0x0a, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x6f, - 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0x92, 0x41, 0x45, 0x32, 0x2b, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, - 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x16, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, - 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, - 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, - 0x6d, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0x92, 0x41, 0x45, 0x32, 0x31, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x10, - 0x22, 0x61, 0x63, 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x22, - 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x3a, 0x1a, - 0x92, 0x41, 0x17, 0x0a, 0x15, 0x32, 0x13, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x1a, 0xf3, 0x04, 0x0a, 0x0a, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x12, 0xa7, 0x02, 0x0a, 0x07, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x63, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0xc1, 0x01, 0x92, 0x41, 0xbd, 0x01, 0x32, 0x4f, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, - 0x74, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x4a, 0x6a, - 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, - 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x22, 0x7d, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x7b, - 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, - 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x7d, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x17, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x4b, 0x92, 0x41, 0x48, 0x32, 0x3b, 0x44, 0x65, 0x72, 0x69, - 0x76, 0x65, 0x64, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, - 0x65, 0x72, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x75, - 0x72, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x5b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x22, 0x5d, 0x52, 0x15, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, - 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x1a, 0x78, 0x0a, 0x0c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 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, 0x52, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x3a, 0x3b, 0x92, 0x41, 0x38, 0x0a, 0x36, 0x32, 0x34, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x20, 0x49, 0x44, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, - 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x1a, 0x82, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 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, 0x52, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, - 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x29, 0x92, 0x41, 0x26, 0x0a, 0x24, 0x32, 0x22, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x1a, 0x82, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 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, 0x52, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, - 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x39, 0x92, 0x41, 0x36, 0x0a, 0x34, 0x32, 0x32, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, - 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x22, 0xe5, 0x06, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x42, 0x3b, 0x92, 0x41, + 0x38, 0x32, 0x36, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, + 0x90, 0x01, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x40, + 0x92, 0x41, 0x3d, 0x32, 0x3b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x28, + 0x69, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x29, + 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x1a, 0xff, 0x01, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x5d, 0x0a, 0x0c, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x3a, 0x92, 0x41, 0x37, 0x32, 0x35, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x74, + 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, + 0x69, 0x6e, 0x67, 0x20, 0x70, 0x75, 0x72, 0x70, 0x6f, 0x73, 0x65, 0x73, 0x2e, 0x52, 0x0b, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x6d, 0x0a, 0x0d, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x48, 0x92, 0x41, 0x45, 0x32, 0x31, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x10, 0x22, 0x61, 0x63, 0x6d, 0x65, + 0x2e, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x22, 0x52, 0x0c, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x3a, 0x29, 0x92, 0x41, 0x26, 0x0a, 0x24, + 0x32, 0x22, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, + 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x3a, 0x3c, 0x92, 0x41, 0x39, 0x0a, 0x37, 0x32, 0x35, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x70, 0x6c, 0x61, + 0x6e, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, + 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x22, 0xc8, 0x15, 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0x92, 0x41, 0x4d, 0x32, 0x23, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x49, 0x44, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, @@ -2457,202 +2280,91 @@ var file_cerbos_response_v1_response_proto_rawDesc = []byte{ 0x63, 0x32, 0x64, 0x62, 0x31, 0x37, 0x62, 0x38, 0x2d, 0x34, 0x66, 0x39, 0x66, 0x2d, 0x34, 0x66, 0x62, 0x31, 0x2d, 0x61, 0x63, 0x66, 0x64, 0x2d, 0x39, 0x31, 0x36, 0x32, 0x61, 0x30, 0x32, 0x62, 0x65, 0x34, 0x32, 0x62, 0x22, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, - 0x12, 0xb3, 0x01, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, - 0x61, 0x70, 0x42, 0x59, 0x92, 0x41, 0x56, 0x32, 0x18, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4a, 0x3a, 0x5b, 0x7b, 0x22, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, - 0x22, 0x3a, 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x2c, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x3a, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, - 0x45, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x22, 0x7d, 0x7d, 0x5d, 0x52, 0x07, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0xe2, 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x3a, 0x0a, 0x0b, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x19, 0x92, 0x41, 0x16, 0x32, 0x0b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x49, - 0x44, 0x4a, 0x07, 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0xa9, 0x01, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, - 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x42, 0x92, 0x41, 0x3f, 0x32, 0x24, 0x4d, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, - 0x4a, 0x17, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, - 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x22, 0x7d, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x40, 0x92, 0x41, 0x3d, 0x32, 0x3b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x29, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x54, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, - 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x3b, 0x92, 0x41, 0x38, - 0x0a, 0x36, 0x32, 0x34, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x22, 0xa6, 0x17, 0x0a, 0x16, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0x92, 0x41, 0x4d, 0x32, 0x23, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x49, 0x44, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x4a, 0x26, 0x22, 0x63, 0x32, 0x64, 0x62, 0x31, 0x37, 0x62, 0x38, 0x2d, 0x34, 0x66, 0x39, - 0x66, 0x2d, 0x34, 0x66, 0x62, 0x31, 0x2d, 0x61, 0x63, 0x66, 0x64, 0x2d, 0x39, 0x31, 0x36, 0x32, - 0x61, 0x30, 0x32, 0x62, 0x65, 0x34, 0x32, 0x62, 0x22, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x49, 0x64, 0x12, 0xe3, 0x01, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x90, - 0x01, 0x92, 0x41, 0x8c, 0x01, 0x32, 0x18, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4a, - 0x70, 0x5b, 0x7b, 0x22, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x3a, 0x20, 0x7b, - 0x22, 0x49, 0x64, 0x22, 0x3a, 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x2c, 0x20, 0x22, 0x6b, - 0x69, 0x6e, 0x64, 0x22, 0x3a, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x22, 0x7d, 0x2c, 0x20, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, - 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, - 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x22, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, - 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x22, 0x7d, 0x7d, - 0x5d, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x80, 0x14, 0x0a, 0x0b, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x5b, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, - 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x63, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x42, - 0x92, 0x41, 0x3f, 0x32, 0x24, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, - 0x65, 0x61, 0x63, 0x68, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, - 0x6e, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x17, 0x7b, 0x22, 0x76, 0x69, 0x65, - 0x77, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, - 0x22, 0x7d, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x40, 0x92, 0x41, 0x3d, 0x32, - 0x3b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x69, 0x73, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x29, 0x52, 0x10, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x98, - 0x02, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, + 0x12, 0xdb, 0x02, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x42, 0xc6, 0x01, 0x92, 0x41, 0xc2, - 0x01, 0x32, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, - 0x74, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4a, 0x9d, 0x01, 0x7b, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x3a, 0x20, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0xe6, 0x01, 0x92, 0x41, 0xe2, 0x01, 0x32, 0x4b, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2c, 0x20, 0x6b, + 0x65, 0x79, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x44, 0x20, 0x73, + 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4a, 0x92, 0x01, 0x7b, 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, + 0x22, 0x3a, 0x7b, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x7b, 0x22, 0x76, + 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x41, + 0x4c, 0x4c, 0x4f, 0x57, 0x22, 0x2c, 0x20, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, + 0x3a, 0x20, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x22, + 0x7d, 0x7d, 0x2c, 0x20, 0x22, 0x58, 0x58, 0x32, 0x32, 0x35, 0x22, 0x3a, 0x7b, 0x22, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, + 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x22, 0x2c, 0x20, + 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x45, 0x46, 0x46, 0x45, + 0x43, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x22, 0x7d, 0x7d, 0x7d, 0x52, 0x11, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x82, + 0x01, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x42, 0x3b, 0x92, 0x41, 0x38, 0x32, 0x36, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x1a, 0x8b, 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x8e, 0x01, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x63, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x29, 0x92, 0x41, 0x26, 0x32, 0x24, 0x4d, 0x61, 0x70, 0x70, 0x69, + 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x52, + 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x40, 0x92, 0x41, 0x3d, 0x32, 0x3b, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, + 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x29, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x54, 0x0a, 0x0c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x2e, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, + 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x89, 0x0c, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0xcf, 0x03, 0x0a, 0x12, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0xd5, 0x02, 0x92, 0x41, 0xd1, 0x02, 0x32, 0x22, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x4a, 0xaa, 0x02, 0x7b, + 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x3a, 0x20, 0x7b, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x7b, + 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, + 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x7d, 0x2c, + 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x22, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x22, 0x5d, 0x7d, 0x2c, 0x20, 0x22, 0x58, 0x58, 0x32, 0x32, 0x35, 0x22, 0x3a, + 0x20, 0x7b, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x22, 0x76, + 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, + 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, + 0x7d, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, - 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x7d, 0x2c, 0x20, 0x22, 0x65, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, - 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x22, 0x5d, 0x7d, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0xf6, 0x01, 0x0a, 0x07, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0xbc, 0x01, 0x92, 0x41, 0xb8, - 0x01, 0x32, 0x2c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, - 0x63, 0x68, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x4a, - 0x87, 0x01, 0x5b, 0x7b, 0x22, 0x73, 0x72, 0x63, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2f, - 0x61, 0x63, 0x6d, 0x65, 0x23, 0x72, 0x75, 0x6c, 0x65, 0x2d, 0x30, 0x30, 0x31, 0x22, 0x2c, 0x20, - 0x22, 0x76, 0x61, 0x6c, 0x22, 0x3a, 0x20, 0x22, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x64, 0x3a, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x7d, 0x2c, 0x20, 0x7b, 0x22, - 0x73, 0x72, 0x63, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, - 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x6d, 0x65, 0x23, - 0x72, 0x75, 0x6c, 0x65, 0x2d, 0x30, 0x30, 0x32, 0x22, 0x2c, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x22, - 0x3a, 0x20, 0x22, 0x66, 0x6f, 0x6f, 0x22, 0x7d, 0x5d, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x1a, 0xff, 0x04, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x39, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x26, - 0x32, 0x1b, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x07, 0x22, - 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x52, 0x02, 0x69, 0x64, 0x12, 0x93, 0x01, 0x0a, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x7f, 0x92, 0x41, 0x7c, 0x32, 0x29, - 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x2e, 0x4a, 0x0d, 0x22, 0x61, 0x6c, 0x62, 0x75, - 0x6d, 0x3a, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x22, 0x8a, 0x01, 0x3f, 0x5e, 0x5b, 0x5b, 0x3a, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, - 0x5c, 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x3a, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, - 0x40, 0x5c, 0x2e, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, - 0x12, 0xc5, 0x01, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x9d, 0x01, 0x92, 0x41, 0x99, 0x01, - 0x32, 0x7c, 0x54, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x65, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, - 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x8a, 0x01, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, - 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5d, 0x2a, 0x24, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xd9, 0x01, 0x0a, 0x05, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0xc2, 0x01, 0x92, 0x41, 0xbe, 0x01, 0x32, - 0x7d, 0x41, 0x20, 0x64, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, - 0x63, 0x68, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x20, 0x54, 0x68, - 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, - 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x20, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x4a, 0x0b, - 0x22, 0x61, 0x63, 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, 0x70, 0x22, 0x8a, 0x01, 0x2f, 0x5e, 0x28, - 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, - 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, - 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x1a, 0xf0, 0x06, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0xa6, 0x02, - 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x48, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0xc1, 0x01, 0x92, 0x41, 0xbd, 0x01, - 0x32, 0x4f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x63, 0x61, 0x6c, 0x63, - 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x2e, 0x4a, 0x6a, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x7b, 0x22, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, - 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x7d, 0x52, 0x07, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x17, 0x65, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x4b, 0x92, 0x41, 0x48, 0x32, 0x3b, 0x44, - 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x20, 0x64, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x5b, 0x22, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x22, 0x5d, 0x52, 0x15, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x1a, 0x88, 0x02, 0x0a, + 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x7d, 0x7d, 0x7d, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x88, 0x02, 0x0a, 0x0a, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x6f, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0x92, 0x41, 0x45, 0x32, 0x2b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, @@ -2669,38 +2381,353 @@ var file_cerbos_response_v1_response_proto_rawDesc = []byte{ 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x22, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x3a, 0x1a, 0x92, 0x41, 0x17, 0x0a, 0x15, 0x32, 0x13, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x1a, 0x82, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 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, 0x5c, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x63, 0x65, 0x72, 0x62, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x1a, 0xf3, 0x04, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x12, 0xa7, 0x02, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0xc1, 0x01, 0x92, 0x41, 0xbd, 0x01, 0x32, 0x4f, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x4a, 0x6a, 0x7b, 0x22, 0x76, + 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, + 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, + 0x7d, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, + 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x7d, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x83, 0x01, 0x0a, 0x17, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x4b, 0x92, 0x41, 0x48, 0x32, 0x3b, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, + 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, + 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6e, + 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x5b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x5d, 0x52, + 0x15, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, + 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x1a, 0x78, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 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, 0x52, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x3a, 0x3b, 0x92, 0x41, 0x38, 0x0a, 0x36, 0x32, 0x34, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x49, 0x44, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x1a, 0x82, 0x01, + 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 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, 0x52, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x3a, 0x29, 0x92, 0x41, 0x26, 0x0a, 0x24, 0x32, 0x22, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x1a, 0x82, 0x01, + 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 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, 0x52, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x3a, 0x39, 0x92, 0x41, 0x36, 0x0a, 0x34, 0x32, 0x32, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, + 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x22, 0xe5, 0x06, + 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0a, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x50, 0x92, 0x41, 0x4d, 0x32, 0x23, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x49, + 0x44, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4a, 0x26, 0x22, 0x63, 0x32, 0x64, + 0x62, 0x31, 0x37, 0x62, 0x38, 0x2d, 0x34, 0x66, 0x39, 0x66, 0x2d, 0x34, 0x66, 0x62, 0x31, 0x2d, + 0x61, 0x63, 0x66, 0x64, 0x2d, 0x39, 0x31, 0x36, 0x32, 0x61, 0x30, 0x32, 0x62, 0x65, 0x34, 0x32, + 0x62, 0x22, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0xb3, 0x01, + 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x42, + 0x59, 0x92, 0x41, 0x56, 0x32, 0x18, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4a, 0x3a, + 0x5b, 0x7b, 0x22, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x22, 0x3a, 0x22, + 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x2c, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x3a, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, + 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x22, 0x7d, 0x7d, 0x5d, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x1a, 0xe2, 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x3a, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0x92, 0x41, + 0x16, 0x32, 0x0b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x49, 0x44, 0x4a, 0x07, + 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x64, 0x12, 0xa9, 0x01, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x66, 0x66, 0x65, + 0x63, 0x74, 0x4d, 0x61, 0x70, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x42, 0x92, 0x41, 0x3f, 0x32, 0x24, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, + 0x20, 0x6f, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x17, 0x7b, + 0x22, 0x76, 0x69, 0x65, 0x77, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x41, + 0x4c, 0x4c, 0x4f, 0x57, 0x22, 0x7d, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x90, 0x01, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x40, + 0x92, 0x41, 0x3d, 0x32, 0x3b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x28, + 0x69, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x29, + 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x1a, 0x54, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x3b, 0x92, 0x41, 0x38, 0x0a, 0x36, 0x32, + 0x34, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x22, 0xe3, 0x16, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x6f, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0x92, 0x41, 0x4d, 0x32, 0x23, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x20, 0x49, 0x44, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4a, 0x26, + 0x22, 0x63, 0x32, 0x64, 0x62, 0x31, 0x37, 0x62, 0x38, 0x2d, 0x34, 0x66, 0x39, 0x66, 0x2d, 0x34, + 0x66, 0x62, 0x31, 0x2d, 0x61, 0x63, 0x66, 0x64, 0x2d, 0x39, 0x31, 0x36, 0x32, 0x61, 0x30, 0x32, + 0x62, 0x65, 0x34, 0x32, 0x62, 0x22, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x12, 0xe3, 0x01, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x90, 0x01, 0x92, 0x41, + 0x8c, 0x01, 0x32, 0x18, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, + 0x61, 0x63, 0x68, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4a, 0x70, 0x5b, 0x7b, + 0x22, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x3a, 0x20, 0x7b, 0x22, 0x49, 0x64, + 0x22, 0x3a, 0x22, 0x58, 0x58, 0x31, 0x32, 0x35, 0x22, 0x2c, 0x20, 0x22, 0x6b, 0x69, 0x6e, 0x64, + 0x22, 0x3a, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, + 0x7d, 0x2c, 0x20, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x7b, 0x22, 0x76, + 0x69, 0x65, 0x77, 0x22, 0x3a, 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x4c, + 0x4f, 0x57, 0x22, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x22, 0x45, + 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x22, 0x7d, 0x7d, 0x5d, 0x52, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0xbd, 0x13, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x5b, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x29, 0x92, 0x41, - 0x26, 0x0a, 0x24, 0x32, 0x22, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, - 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x1a, 0x54, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, - 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x32, 0x92, - 0x41, 0x2f, 0x0a, 0x2d, 0x32, 0x2b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, - 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x63, 0x61, 0x6c, 0x6c, - 0x2e, 0x22, 0xa7, 0x01, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, - 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, - 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x31, 0x0a, 0x05, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, - 0x1a, 0x92, 0x41, 0x17, 0x0a, 0x15, 0x32, 0x13, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, - 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x1a, - 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x42, 0x92, 0x41, 0x3f, + 0x32, 0x24, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x61, 0x63, + 0x68, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x20, 0x65, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x17, 0x7b, 0x22, 0x76, 0x69, 0x65, 0x77, 0x22, 0x3a, + 0x22, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x22, 0x7d, 0x52, + 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x40, 0x92, 0x41, 0x3d, 0x32, 0x3b, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, + 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x29, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x98, 0x02, 0x0a, 0x04, + 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x65, 0x72, + 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x42, 0xc6, 0x01, 0x92, 0x41, 0xc2, 0x01, 0x32, 0x20, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4a, 0x9d, 0x01, 0x7b, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x7b, + 0x22, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, + 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x22, 0x7d, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x7b, 0x22, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, + 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x7d, 0x2c, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, + 0x6c, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x5d, 0x7d, + 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0xf6, 0x01, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0xbc, 0x01, 0x92, 0x41, 0xb8, 0x01, 0x32, 0x2c, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, + 0x72, 0x75, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x4a, 0x87, 0x01, 0x5b, + 0x7b, 0x22, 0x73, 0x72, 0x63, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x6d, + 0x65, 0x23, 0x72, 0x75, 0x6c, 0x65, 0x2d, 0x30, 0x30, 0x31, 0x22, 0x2c, 0x20, 0x22, 0x76, 0x61, + 0x6c, 0x22, 0x3a, 0x20, 0x22, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x3a, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x7d, 0x2c, 0x20, 0x7b, 0x22, 0x73, 0x72, 0x63, + 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x65, 0x78, 0x70, + 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x6d, 0x65, 0x23, 0x72, 0x75, 0x6c, + 0x65, 0x2d, 0x30, 0x30, 0x32, 0x22, 0x2c, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x22, 0x3a, 0x20, 0x22, + 0x66, 0x6f, 0x6f, 0x22, 0x7d, 0x5d, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, + 0xbc, 0x04, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x26, 0x32, 0x1b, 0x49, + 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x07, 0x22, 0x58, 0x58, 0x31, + 0x32, 0x35, 0x22, 0x52, 0x02, 0x69, 0x64, 0x12, 0x51, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3d, 0x92, 0x41, 0x3a, 0x32, 0x29, 0x4e, 0x61, 0x6d, 0x65, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x65, 0x64, 0x2e, 0x4a, 0x0d, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x70, 0x68, + 0x6f, 0x74, 0x6f, 0x22, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0xc5, 0x01, 0x0a, 0x0e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x9d, 0x01, 0x92, 0x41, 0x99, 0x01, 0x32, 0x7c, 0x54, 0x68, 0x65, 0x20, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, + 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, + 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x74, + 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x22, 0x8a, 0x01, 0x0d, 0x5e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, + 0x5d, 0x2a, 0x24, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0xd9, 0x01, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0xc2, 0x01, 0x92, 0x41, 0xbe, 0x01, 0x32, 0x7d, 0x41, 0x20, 0x64, 0x6f, 0x74, + 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x73, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, + 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, + 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x69, 0x6e, 0x68, 0x65, + 0x72, 0x69, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x4a, 0x0b, 0x22, 0x61, 0x63, 0x6d, 0x65, 0x2e, + 0x63, 0x6f, 0x72, 0x70, 0x22, 0x8a, 0x01, 0x2f, 0x5e, 0x28, 0x5b, 0x5b, 0x3a, 0x61, 0x6c, 0x6e, + 0x75, 0x6d, 0x3a, 0x5d, 0x5d, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, + 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x5b, 0x3a, 0x77, 0x6f, 0x72, 0x64, 0x3a, 0x5d, 0x5c, 0x2d, + 0x5d, 0x2a, 0x29, 0x2a, 0x29, 0x2a, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0xf0, + 0x06, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0xa6, 0x02, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x63, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0xc1, 0x01, 0x92, 0x41, 0xbd, 0x01, 0x32, 0x4f, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x4a, 0x6a, 0x7b, 0x22, 0x76, + 0x69, 0x65, 0x77, 0x3a, 0x2a, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, + 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, + 0x7d, 0x2c, 0x22, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3a, 0x7b, 0x22, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x22, + 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x22, 0x7d, 0x7d, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x83, 0x01, 0x0a, 0x17, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x4b, 0x92, 0x41, 0x48, 0x32, 0x3b, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, + 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, + 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6e, + 0x67, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4a, 0x09, 0x5b, 0x22, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x5d, 0x52, + 0x15, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, + 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x1a, 0x88, 0x02, 0x0a, 0x0a, 0x45, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x6f, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0x92, + 0x41, 0x45, 0x32, 0x2b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x4a, + 0x16, 0x22, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x6d, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0x92, + 0x41, 0x45, 0x32, 0x31, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6f, + 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x65, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x10, 0x22, 0x61, 0x63, 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, + 0x70, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x22, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x3a, 0x1a, 0x92, 0x41, 0x17, 0x0a, 0x15, 0x32, 0x13, 0x4e, 0x61, + 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x1a, 0x82, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x5c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x29, 0x92, 0x41, 0x26, 0x0a, 0x24, 0x32, 0x22, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x1a, 0x54, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, + 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x32, 0x92, 0x41, 0x2f, 0x0a, 0x2d, 0x32, 0x2b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x2e, 0x22, 0xa7, 0x01, 0x0a, 0x11, + 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x12, 0x43, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x31, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, + 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x1a, 0x92, 0x41, 0x17, 0x0a, 0x15, + 0x32, 0x13, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x1a, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, + 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, + 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x3a, 0x23, 0x92, 0x41, 0x20, 0x0a, 0x1e, 0x32, 0x1c, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x20, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, + 0x22, 0xc8, 0x02, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, + 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, + 0x12, 0x41, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x1a, 0x46, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, + 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0x32, 0x18, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x22, 0xb9, 0x06, 0x0a, 0x1a, + 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, @@ -2708,208 +2735,173 @@ var file_cerbos_response_v1_response_proto_rawDesc = []byte{ 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, - 0x72, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x23, 0x92, 0x41, 0x20, 0x0a, 0x1e, 0x32, 0x1c, 0x50, - 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x6f, - 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x79, 0x67, - 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, - 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, - 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, - 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x07, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x1a, 0x46, 0x0a, - 0x0b, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x07, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0x32, 0x18, 0x50, 0x6c, - 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, - 0x65, 0x22, 0xb9, 0x06, 0x0a, 0x1a, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, - 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, - 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x79, - 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, - 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x59, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x65, 0x72, 0x62, + 0x72, 0x65, 0x12, 0x59, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, + 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x1a, 0xfe, 0x01, + 0x0a, 0x0a, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x06, + 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3a, + 0x0a, 0x17, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x15, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, + 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0xa6, + 0x02, 0x0a, 0x0e, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x53, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x4e, + 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x37, + 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x3a, 0x23, 0x92, 0x41, 0x20, 0x0a, 0x1e, 0x32, 0x1c, + 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, + 0x61, 0x74, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, + 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x22, 0x9b, 0x04, 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x79, + 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, + 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x1a, 0xfe, 0x01, 0x0a, 0x0a, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x2e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3a, 0x0a, 0x17, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x15, 0x65, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, - 0x12, 0x52, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x02, - 0x18, 0x01, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x1a, 0xa6, 0x02, 0x0a, 0x0e, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, - 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, - 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x17, - 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, - 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x65, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x52, - 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x3a, 0x23, 0x92, - 0x41, 0x20, 0x0a, 0x1e, 0x32, 0x1c, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, - 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x22, 0x9b, 0x04, - 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, - 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x41, - 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x46, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x12, 0x5c, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x10, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x12, - 0x62, 0x0a, 0x14, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, - 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x52, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0e, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x3a, 0x20, - 0x92, 0x41, 0x1d, 0x0a, 0x1b, 0x32, 0x19, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, - 0x64, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x19, 0x41, - 0x64, 0x64, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x21, 0x92, 0x41, 0x1e, 0x0a, - 0x1c, 0x32, 0x1a, 0x41, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe0, 0x01, - 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, - 0x10, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x51, 0x0a, 0x12, 0x64, 0x65, - 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, - 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x63, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x3a, 0x18, 0x92, - 0x41, 0x15, 0x0a, 0x13, 0x32, 0x11, 0x41, 0x75, 0x64, 0x69, 0x74, 0x20, 0x6c, 0x6f, 0x67, 0x20, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x22, 0x82, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x1b, 0x92, 0x41, 0x18, 0x0a, 0x16, 0x32, - 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x20, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x3a, 0x33, 0x92, 0x41, - 0x30, 0x0a, 0x2e, 0x32, 0x2c, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x69, 0x65, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x43, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x22, 0x65, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, - 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x1a, 0x92, 0x41, - 0x17, 0x0a, 0x15, 0x32, 0x13, 0x47, 0x65, 0x74, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x1e, - 0x92, 0x41, 0x1b, 0x0a, 0x19, 0x32, 0x17, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x60, - 0x0a, 0x14, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x3a, 0x1d, 0x92, 0x41, 0x1a, 0x0a, 0x18, 0x32, 0x16, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3e, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x21, 0x92, - 0x41, 0x1e, 0x0a, 0x1c, 0x32, 0x1a, 0x41, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x55, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x49, 0x64, 0x73, 0x3a, 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0x32, 0x18, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x64, 0x73, 0x20, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, - 0x3a, 0x1d, 0x92, 0x41, 0x1a, 0x0a, 0x18, 0x32, 0x16, 0x47, 0x65, 0x74, 0x20, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x28, 0x73, 0x29, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x61, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, - 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, 0x32, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x28, 0x73, 0x29, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x33, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, - 0x32, 0x15, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x77, 0x0a, 0x1a, 0x64, 0x65, 0x76, 0x2e, 0x63, - 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x62, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x76, 0x31, 0xaa, 0x02, 0x16, 0x43, 0x65, 0x72, 0x62, 0x6f, 0x73, - 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x5c, 0x0a, 0x12, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x65, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x74, 0x12, 0x62, 0x0a, 0x14, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x52, 0x0a, + 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x48, 0x00, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x12, 0x55, 0x0a, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, + 0x62, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, 0x1b, 0x32, + 0x19, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x75, + 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x3a, 0x21, 0x92, 0x41, 0x1e, 0x0a, 0x1c, 0x32, 0x1a, 0x41, 0x64, 0x64, + 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe0, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x51, 0x0a, 0x12, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4c, + 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x3a, 0x18, 0x92, 0x41, 0x15, 0x0a, 0x13, 0x32, 0x11, + 0x41, 0x75, 0x64, 0x69, 0x74, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x82, 0x01, 0x0a, 0x12, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, + 0x74, 0x65, 0x3a, 0x1b, 0x92, 0x41, 0x18, 0x0a, 0x16, 0x32, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x6a, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x3a, 0x33, 0x92, 0x41, 0x30, 0x0a, 0x2e, 0x32, 0x2c, 0x4c, + 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x20, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x65, 0x0a, 0x11, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x34, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x1a, 0x92, 0x41, 0x17, 0x0a, 0x15, 0x32, 0x13, 0x47, + 0x65, 0x74, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x64, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x1e, 0x92, 0x41, 0x1b, 0x0a, 0x19, 0x32, + 0x17, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x60, 0x0a, 0x14, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x1d, 0x92, 0x41, 0x1a, + 0x0a, 0x18, 0x32, 0x16, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x0a, 0x19, 0x41, 0x64, + 0x64, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x21, 0x92, 0x41, 0x1e, 0x0a, 0x1c, 0x32, 0x1a, + 0x41, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x64, 0x73, + 0x3a, 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0x32, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x64, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x66, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x3a, 0x1d, 0x92, 0x41, 0x1a, 0x0a, + 0x18, 0x32, 0x16, 0x47, 0x65, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x28, 0x73, 0x29, + 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x14, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x3a, 0x20, 0x92, 0x41, 0x1d, 0x0a, + 0x1b, 0x32, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x28, 0x73, 0x29, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x0a, 0x13, + 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x3a, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x32, 0x15, 0x52, 0x65, 0x6c, 0x6f, + 0x61, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x42, 0x77, 0x0a, 0x1a, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5a, + 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, + 0x6e, 0x70, 0x62, 0x2f, 0x63, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x76, + 0x31, 0xaa, 0x02, 0x16, 0x43, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, + 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/api/public/cerbos/engine/v1/engine.proto b/api/public/cerbos/engine/v1/engine.proto index 35f45627e..89d577d66 100644 --- a/api/public/cerbos/engine/v1/engine.proto +++ b/api/public/cerbos/engine/v1/engine.proto @@ -20,15 +20,11 @@ option java_package = "dev.cerbos.api.v1.engine"; message PlanResourcesInput { message Resource { string kind = 1 [ - (validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$", - min_len: 1 - }, + (validate.rules).string = {min_len: 1}, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Resource kind." example: "\"album:object\"" - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" } ]; @@ -179,15 +175,11 @@ message OutputEntry { message Resource { string kind = 1 [ - (validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$", - min_len: 1 - }, + (validate.rules).string = {min_len: 1}, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Name of the resource kind being accessed.", example: "\"album:photo\"", - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" } ]; string policy_version = 2 [ @@ -251,14 +243,13 @@ message Principal { unique: true, min_items: 1, items { - string {pattern: "^[[:word:]\\-\\.]+$"} + string {min_len: 1} } }, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Roles assigned to this principal from your identity management system." min_items: 1 - pattern: "^[[:word:]\\-\\.]+$" unique_items: true example: "[\"user\"]" } diff --git a/api/public/cerbos/policy/v1/policy.proto b/api/public/cerbos/policy/v1/policy.proto index 551dccdc9..0eac748d7 100644 --- a/api/public/cerbos/policy/v1/policy.proto +++ b/api/public/cerbos/policy/v1/policy.proto @@ -41,10 +41,7 @@ message Metadata { } message ResourcePolicy { - string resource = 1 [(validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$", - min_len: 1 - }]; + string resource = 1 [(validate.rules).string = {min_len: 1}]; string version = 2 [(validate.rules).string.pattern = "^[[:word:]]+$"]; repeated string import_derived_roles = 3 [(validate.rules).repeated = { unique: true, @@ -75,7 +72,7 @@ message ResourceRule { repeated string roles = 3 [(validate.rules).repeated = { unique: true, items { - string {pattern: "^([[:word:]\\-\\.]+|\\*)$"} + string {min_len: 1} } }]; Condition condition = 4; @@ -90,10 +87,7 @@ message ResourceRule { } message PrincipalPolicy { - string principal = 1 [(validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$", - min_len: 1 - }]; + string principal = 1 [(validate.rules).string = {min_len: 1}]; string version = 2 [(validate.rules).string.pattern = "^[[:word:]]+$"]; repeated PrincipalRule rules = 3; string scope = 4 [(validate.rules).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$"]; @@ -133,7 +127,7 @@ message RoleDef { unique: true, min_items: 1, items { - string {pattern: "^([[:word:]\\-\\.]+|\\*)$"} + string {min_len: 1} } }]; Condition condition = 3; diff --git a/api/public/cerbos/request/v1/request.proto b/api/public/cerbos/request/v1/request.proto index eb3cc2a68..a627ef9e0 100644 --- a/api/public/cerbos/request/v1/request.proto +++ b/api/public/cerbos/request/v1/request.proto @@ -97,15 +97,11 @@ message ResourceSet { }; string kind = 1 [ - (validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$", - min_len: 1 - }, + (validate.rules).string = {min_len: 1}, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Resource kind." example: "\"album:object\"" - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" } ]; string policy_version = 2 [ diff --git a/api/public/cerbos/response/v1/response.proto b/api/public/cerbos/response/v1/response.proto index 7da19e324..918f2e2a6 100644 --- a/api/public/cerbos/response/v1/response.proto +++ b/api/public/cerbos/response/v1/response.proto @@ -48,7 +48,6 @@ message PlanResourcesResponse { string resource_kind = 3 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Resource kind." example: "\"album:object\"" - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" }]; string policy_version = 4 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { @@ -166,7 +165,6 @@ message CheckResourcesResponse { string kind = 2 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Name of the resource kind being accessed.", example: "\"album:photo\"", - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" }]; string policy_version = 3 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The policy version to use to evaluate this request. If not specified, will default to the server-configured default version." diff --git a/cmd/cerbos/repl/internal/repl.go b/cmd/cerbos/repl/internal/repl.go index e9bbb5b18..6738c227f 100644 --- a/cmd/cerbos/repl/internal/repl.go +++ b/cmd/cerbos/repl/internal/repl.go @@ -440,7 +440,7 @@ func (r *REPL) loadPolicy(path string) error { case *policyv1.Policy_ExportVariables: r.varExports[pt.ExportVariables.Name] = pt.ExportVariables.Definitions case *policyv1.Policy_ResourcePolicy: - ph.variables, err = r.mergeVariableDefinitions(ph.key, pt.ResourcePolicy.Variables, p.Variables) //nolint:staticcheck + ph.variables, err = r.mergeVariableDefinitions(ph.key, pt.ResourcePolicy.Variables, p.Variables) if err != nil { return err } @@ -451,7 +451,7 @@ func (r *REPL) loadPolicy(path string) error { } } case *policyv1.Policy_DerivedRoles: - ph.variables, err = r.mergeVariableDefinitions(ph.key, pt.DerivedRoles.Variables, p.Variables) //nolint:staticcheck + ph.variables, err = r.mergeVariableDefinitions(ph.key, pt.DerivedRoles.Variables, p.Variables) if err != nil { return err } @@ -462,7 +462,7 @@ func (r *REPL) loadPolicy(path string) error { } } case *policyv1.Policy_PrincipalPolicy: - ph.variables, err = r.mergeVariableDefinitions(ph.key, pt.PrincipalPolicy.Variables, p.Variables) //nolint:staticcheck + ph.variables, err = r.mergeVariableDefinitions(ph.key, pt.PrincipalPolicy.Variables, p.Variables) if err != nil { return err } diff --git a/cmd/cerbosctl/put_test.go b/cmd/cerbosctl/put/put_test.go similarity index 98% rename from cmd/cerbosctl/put_test.go rename to cmd/cerbosctl/put/put_test.go index db32e2553..5ccfab020 100644 --- a/cmd/cerbosctl/put_test.go +++ b/cmd/cerbosctl/put/put_test.go @@ -4,7 +4,7 @@ //go:build !race // +build !race -package main +package put_test import ( "bytes" @@ -95,6 +95,7 @@ func testPutCmd(clientCtx *cmdclient.Context, globals *flagset.Globals) func(*te "derived_roles.import_variables", "derived_roles.package_roles", "export_variables.foobar", + "principal.arn:aws:iam::123456789012:user/johndoe.vdefault", "principal.daisy_duck.vdefault", "principal.donald_duck.v20210210", "principal.donald_duck.vdefault", @@ -104,6 +105,7 @@ func testPutCmd(clientCtx *cmdclient.Context, globals *flagset.Globals) func(*te "principal.terry_tibbs.vdefault", "resource.account.vdefault", "resource.album_object.vdefault", + "resource.arn:aws:sns:us-east-1:123456789012:topic-a.vdefault", "resource.equipment_request.vdefault", "resource.equipment_request.vdefault/acme", "resource.global.vdefault", diff --git a/cmd/cerbosctl/testdata/store.zip b/cmd/cerbosctl/put/testdata/store.zip similarity index 100% rename from cmd/cerbosctl/testdata/store.zip rename to cmd/cerbosctl/put/testdata/store.zip diff --git a/docs/modules/configuration/partials/fullconfiguration.adoc b/docs/modules/configuration/partials/fullconfiguration.adoc index c8a6984e3..8dc54421b 100644 --- a/docs/modules/configuration/partials/fullconfiguration.adoc +++ b/docs/modules/configuration/partials/fullconfiguration.adoc @@ -193,7 +193,7 @@ storage: maxOpen: 4 maxIdle: 1 skipSchemaCheck: false # SkipSchemaCheck skips checking for required database tables on startup. - url: "sqlserver://username:password@host/instance?param1=value¶m2=value" # Required. URL is the SQL Server connection URL. See https://github.com/denisenkom/go-mssqldb#connection-parameters-and-dsn + url: "sqlserver://username:password@host/instance?param1=value¶m2=value" # Required. URL is the SQL Server connection URL. See https://github.com/microsoft/go-mssqldb#connection-parameters-and-dsn. telemetry: disabled: false # Disabled sets whether telemetry collection is disabled or not. reportInterval: 1h # ReportInterval is the interval between telemetry pings. diff --git a/go.mod b/go.mod index 1078af2ed..8bf9226d1 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,6 @@ require ( github.com/cerbos/cloud-api v0.1.6 github.com/cespare/xxhash v1.1.0 github.com/cespare/xxhash/v2 v2.2.0 - github.com/denisenkom/go-mssqldb v0.12.3 github.com/dgraph-io/badger/v4 v4.2.0 github.com/doug-martin/goqu/v9 v9.18.0 github.com/envoyproxy/protoc-gen-validate v1.0.2 @@ -49,6 +48,7 @@ require ( github.com/lestrrat-go/httprc v1.0.4 github.com/lestrrat-go/jwx/v2 v2.0.12 github.com/mattn/go-isatty v0.0.19 + github.com/microsoft/go-mssqldb v1.5.0 github.com/minio/minio-go/v7 v7.0.62 github.com/nlepage/go-tarfs v1.2.1 github.com/oklog/ulid/v2 v2.1.0 @@ -151,6 +151,7 @@ require ( github.com/containerd/continuity v0.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/denisenkom/go-mssqldb v0.12.3 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dlclark/regexp2 v1.4.0 // indirect @@ -170,7 +171,7 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect + github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect github.com/golang-sql/sqlexp v0.1.0 // indirect github.com/golang/glog v1.1.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect diff --git a/go.sum b/go.sum index 2d0d0cef0..e886ed54b 100644 --- a/go.sum +++ b/go.sum @@ -65,10 +65,14 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 filippo.io/age v1.1.1 h1:pIpO7l151hCnQ4BdyBujnGP2YlUo0uj6sAVNHGBvXHg= filippo.io/age v1.1.1/go.mod h1:l03SrzDUrBkdBx8+IILdnn2KZysqQdbEBUQ4p3sqEQE= github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= @@ -235,6 +239,7 @@ github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WA github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/cli v23.0.1+incompatible h1:LRyWITpGzl2C9e9uGxzisptnxAn1zfZKXy13Ul2Q5oM= github.com/docker/cli v23.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= @@ -327,10 +332,13 @@ github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-migrate/migrate/v4 v4.16.2 h1:8coYbMKUyInrFk1lfGfRovTLAW7PhWp8qQDT2iKfuoA= github.com/golang-migrate/migrate/v4 v4.16.2/go.mod h1:pfcJX4nPHaVdc5nmdCikFBWtm+UBpiZjRNNsyBbp0/o= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -436,6 +444,8 @@ github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -453,6 +463,8 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA= github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= @@ -517,6 +529,12 @@ github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0f github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84 h1:2uT3aivO7NVpUPGcQX7RbHijHMyWix/yCnIrCWc+5co= github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -569,6 +587,7 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lestrrat-go/blackmagic v1.0.1 h1:lS5Zts+5HIC/8og6cGHb0uCcNCa3OUt1ygh3Qz2Fe80= github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= @@ -621,6 +640,8 @@ github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/microsoft/go-mssqldb v1.5.0 h1:CgENxkwtOBNj3Jg6T1X209y2blCfTTcwuOlznd2k9fk= +github.com/microsoft/go-mssqldb v1.5.0/go.mod h1:lmWsjHD8XX/Txr0f8ZqgbEZSC+BZjmEQy/Ms+rLrvho= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= github.com/minio/minio-go/v7 v7.0.62 h1:qNYsFZHEzl+NfH8UxW4jpmlKav1qUAgfY30YNRneVhc= @@ -646,6 +667,7 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -675,6 +697,7 @@ github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFu github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -954,7 +977,9 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1044,6 +1069,7 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= @@ -1132,6 +1158,7 @@ golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211004093028-2c5d950f24ef/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/hack/dev/admin.hurl b/hack/dev/admin.hurl index b996ee6c6..79efae267 100644 --- a/hack/dev/admin.hurl +++ b/hack/dev/admin.hurl @@ -2,7 +2,7 @@ POST {{protocol}}://{{host}}:{{port}}/admin/policy Content-Type: application/json file,requests/admin_add_or_update_policy/req01.json; -HTTP/* 200 +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.success" != null diff --git a/hack/dev/check.hurl b/hack/dev/check.hurl index 4636381fd..dfa6de09f 100644 --- a/hack/dev/check.hurl +++ b/hack/dev/check.hurl @@ -1,222 +1,65 @@ # Health endpoint should return 200 with SERVING in the body GET {{protocol}}://{{host}}:{{port}}/_cerbos/health -HTTP/* 200 +HTTP 200 [Asserts] body contains "SERVING" -# Metrics endpoint should return 200 +# Metrics endpoint should return 200 GET {{protocol}}://{{host}}:{{port}}/_cerbos/metrics -HTTP/* 200 +HTTP 200 -# Valid CheckResourceSet request -POST {{protocol}}://{{host}}:{{port}}/api/check -Content-Type: application/json -file,requests/check_resource_set/req01.json; -HTTP/* 200 -[Asserts] -header "Content-Type" == "application/json" -jsonpath "$.resourceInstances[*]" count == 5 -jsonpath "$.resourceInstances['XX125'].actions[*]" count == 4 -jsonpath "$.resourceInstances['XX125'].actions['approve']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX125'].actions['create']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX125'].actions['defer']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['XX125'].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.meta.resourceInstances['XX125'].effectiveDerivedRoles" count == 1 -jsonpath "$.meta.resourceInstances['XX125'].effectiveDerivedRoles[0]" == "any_employee" -jsonpath "$.meta.resourceInstances['XX125'].actions['approve'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX125'].actions['create'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX125'].actions['defer'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX125'].actions['view:public'].matchedPolicy" == "resource.leave_request.v20210210" - -jsonpath "$.resourceInstances['XX150'].actions[*]" count == 4 -jsonpath "$.resourceInstances['XX150'].actions['approve']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX150'].actions['create']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX150'].actions['defer']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['XX150'].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.meta.resourceInstances['XX150'].effectiveDerivedRoles" count == 1 -jsonpath "$.meta.resourceInstances['XX150'].effectiveDerivedRoles[0]" == "any_employee" -jsonpath "$.meta.resourceInstances['XX150'].actions['approve'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX150'].actions['create'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX150'].actions['defer'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX150'].actions['view:public'].matchedPolicy" == "resource.leave_request.v20210210" - -jsonpath "$.resourceInstances['XX250'].actions[*]" count == 4 -jsonpath "$.resourceInstances['XX250'].actions['approve']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX250'].actions['create']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX250'].actions['defer']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['XX250'].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.meta.resourceInstances['XX250'].effectiveDerivedRoles" count == 1 -jsonpath "$.meta.resourceInstances['XX250'].effectiveDerivedRoles[0]" == "any_employee" -jsonpath "$.meta.resourceInstances['XX250'].actions['approve'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX250'].actions['create'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX250'].actions['defer'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX250'].actions['view:public'].matchedPolicy" == "resource.leave_request.v20210210" - -jsonpath "$.resourceInstances['YY100'].actions[*]" count == 4 -jsonpath "$.resourceInstances['YY100'].actions['approve']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY100'].actions['create']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY100'].actions['defer']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY100'].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.meta.resourceInstances['YY100'].actions['approve'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY100'].actions['create'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY100'].actions['defer'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY100'].actions['view:public'].matchedPolicy" == "principal.donald_duck.v20210210" - -jsonpath "$.resourceInstances['YY200'].actions[*]" count == 4 -jsonpath "$.resourceInstances['YY200'].actions['approve']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY200'].actions['create']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY200'].actions['defer']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY200'].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.meta.resourceInstances['YY200'].actions['approve'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY200'].actions['create'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY200'].actions['defer'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY200'].actions['view:public'].matchedPolicy" == "principal.donald_duck.v20210210" - -# Valid CheckResourceSet request (scoped policies) -POST {{protocol}}://{{host}}:{{port}}/api/check -Content-Type: application/json -file,requests/check_resource_set/req02.json; -HTTP/* 200 -[Asserts] -header "Content-Type" == "application/json" -jsonpath "$.resourceInstances['XX125'].actions[*]" count == 3 -jsonpath "$.resourceInstances['XX125'].actions['approve']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX125'].actions['delete']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['XX125'].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.meta.resourceInstances['XX125'].effectiveDerivedRoles" count == 2 -jsonpath "$.meta.resourceInstances['XX125'].effectiveDerivedRoles" includes "employee_that_owns_the_record" -jsonpath "$.meta.resourceInstances['XX125'].effectiveDerivedRoles" includes "any_employee" -jsonpath "$.meta.resourceInstances['XX125'].actions['approve'].matchedPolicy" == "resource.leave_request.vdefault/acme.hr.uk" -jsonpath "$.meta.resourceInstances['XX125'].actions['delete'].matchedPolicy" == "resource.leave_request.vdefault/acme.hr.uk" -jsonpath "$.meta.resourceInstances['XX125'].actions['delete'].matchedScope" == "acme.hr.uk" -jsonpath "$.meta.resourceInstances['XX125'].actions['view:public'].matchedPolicy" == "resource.leave_request.vdefault/acme.hr.uk" -jsonpath "$.meta.resourceInstances['XX125'].actions['view:public'].matchedScope" == "acme.hr" - - -# Invalid CheckResourceSet request -POST {{protocol}}://{{host}}:{{port}}/api/check -Content-Type: application/json -file,requests/check_resource_set/bad_resource_set.json; -HTTP/* 200 -[Asserts] -header "Content-Type" == "application/json" -jsonpath "$.resourceInstances[*]" count == 5 -jsonpath "$.resourceInstances['XX125'].actions[*]" count == 4 -jsonpath "$.resourceInstances['XX125'].actions['approve']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX125'].actions['create']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX125'].actions['defer']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX125'].actions['view:public']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX125'].validationErrors" count == 2 -jsonpath "$.meta.resourceInstances['XX125'].actions['approve'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX125'].actions['create'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX125'].actions['defer'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX125'].actions['view:public'].matchedPolicy" == "resource.leave_request.v20210210" - -jsonpath "$.resourceInstances['XX150'].actions[*]" count == 4 -jsonpath "$.resourceInstances['XX150'].actions['approve']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX150'].actions['create']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX150'].actions['defer']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX150'].actions['view:public']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX150'].validationErrors" count == 2 -jsonpath "$.meta.resourceInstances['XX150'].actions['approve'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX150'].actions['create'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX150'].actions['defer'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX150'].actions['view:public'].matchedPolicy" == "resource.leave_request.v20210210" - -jsonpath "$.resourceInstances['XX250'].actions[*]" count == 4 -jsonpath "$.resourceInstances['XX250'].actions['approve']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX250'].actions['create']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX250'].actions['defer']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX250'].actions['view:public']" == "EFFECT_DENY" -jsonpath "$.resourceInstances['XX250'].validationErrors" count == 2 -jsonpath "$.meta.resourceInstances['XX250'].actions['approve'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX250'].actions['create'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX250'].actions['defer'].matchedPolicy" == "resource.leave_request.v20210210" -jsonpath "$.meta.resourceInstances['XX250'].actions['view:public'].matchedPolicy" == "resource.leave_request.v20210210" - -jsonpath "$.resourceInstances['YY100'].actions[*]" count == 4 -jsonpath "$.resourceInstances['YY100'].actions['approve']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY100'].actions['create']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY100'].actions['defer']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY100'].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.meta.resourceInstances['YY100'].actions['approve'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY100'].actions['create'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY100'].actions['defer'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY100'].actions['view:public'].matchedPolicy" == "principal.donald_duck.v20210210" - -jsonpath "$.resourceInstances['YY200'].actions[*]" count == 4 -jsonpath "$.resourceInstances['YY200'].actions['approve']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY200'].actions['create']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY200'].actions['defer']" == "EFFECT_ALLOW" -jsonpath "$.resourceInstances['YY200'].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.meta.resourceInstances['YY200'].actions['approve'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY200'].actions['create'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY200'].actions['defer'].matchedPolicy" == "principal.donald_duck.v20210210" -jsonpath "$.meta.resourceInstances['YY200'].actions['view:public'].matchedPolicy" == "principal.donald_duck.v20210210" - - -# Valid CheckResourceBatch request -POST {{protocol}}://{{host}}:{{port}}/api/check_resource_batch -Content-Type: application/json -file,requests/check_resource_batch/req01.json; -HTTP/* 200 -[Asserts] -header "Content-Type" == "application/json" -jsonpath "$.results" count == 2 -jsonpath "$.results[?(@.resourceId == 'XX125')].actions[*]" count == 4 -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['approve']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['create']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['defer']" == "EFFECT_ALLOW" -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.results[?(@.resourceId == 'XX150')].actions[*]" count == 3 -jsonpath "$.results[?(@.resourceId == 'XX150')].actions['approve']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX150')].actions['create']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX150')].actions['view:public']" == "EFFECT_ALLOW" - -# Invalid CheckResourceBatch request -POST {{protocol}}://{{host}}:{{port}}/api/check_resource_batch +# Valid CheckResources request 1 +POST {{protocol}}://{{host}}:{{port}}/api/check/resources Content-Type: application/json -file,requests/check_resource_batch/bad_resource_batch.json; -HTTP/* 200 +file,requests/check_resources/req01.json; +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.results" count == 2 -jsonpath "$.results[?(@.resourceId == 'XX125')].actions[*]" count == 4 -jsonpath "$.results[?(@.resourceId == 'XX125')].validationErrors" count == 2 -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['approve']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['create']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['defer']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['view:public']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX150')].actions[*]" count == 3 -jsonpath "$.results[?(@.resourceId == 'XX150')].validationErrors" count == 2 -jsonpath "$.results[?(@.resourceId == 'XX150')].actions['approve']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX150')].actions['create']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX150')].actions['view:public']" == "EFFECT_DENY" - +jsonpath "$.results[0].resource.id" == "XX125" +jsonpath "$.results[0].resource.kind" == "leave_request" +jsonpath "$.results[0].resource.policyVersion" == "20210210" +jsonpath "$.results[0].actions[*]" count == 4 +jsonpath "$.results[0].actions['approve']" == "EFFECT_DENY" +jsonpath "$.results[0].actions['create']" == "EFFECT_DENY" +jsonpath "$.results[0].actions['defer']" == "EFFECT_ALLOW" +jsonpath "$.results[0].actions['view:public']" == "EFFECT_ALLOW" +jsonpath "$.results[1].resource.id" == "XX150" +jsonpath "$.results[1].resource.kind" == "leave_request" +jsonpath "$.results[1].resource.policyVersion" == "20210210" +jsonpath "$.results[1].actions[*]" count == 3 +jsonpath "$.results[1].actions['approve']" == "EFFECT_DENY" +jsonpath "$.results[1].actions['create']" == "EFFECT_DENY" +jsonpath "$.results[1].actions['view:public']" == "EFFECT_ALLOW" -# Valid CheckResourceBatch request (scoped policies) -POST {{protocol}}://{{host}}:{{port}}/api/check_resource_batch +# Valid CheckResources request 2 +POST {{protocol}}://{{host}}:{{port}}/api/check/resources Content-Type: application/json -file,requests/check_resource_batch/req02.json; -HTTP/* 200 +file,requests/check_resources/req02.json; +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.results" count == 2 -jsonpath "$.results[?(@.resourceId == 'XX125')].actions[*]" count == 3 -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['create']" == "EFFECT_ALLOW" -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['delete']" == "EFFECT_ALLOW" -jsonpath "$.results[?(@.resourceId == 'XX125')].actions['view:public']" == "EFFECT_ALLOW" -jsonpath "$.results[?(@.resourceId == 'XX225')].actions[*]" count == 3 -jsonpath "$.results[?(@.resourceId == 'XX225')].actions['create']" == "EFFECT_ALLOW" -jsonpath "$.results[?(@.resourceId == 'XX225')].actions['delete']" == "EFFECT_DENY" -jsonpath "$.results[?(@.resourceId == 'XX225')].actions['view:public']" == "EFFECT_ALLOW" - +jsonpath "$.results[0].resource.id" == "XX125" +jsonpath "$.results[0].resource.kind" == "leave_request" +jsonpath "$.results[0].resource.scope" == "acme.hr.uk" +jsonpath "$.results[0].actions[*]" count == 3 +jsonpath "$.results[0].actions['view:public']" == "EFFECT_ALLOW" +jsonpath "$.results[0].actions['delete']" == "EFFECT_ALLOW" +jsonpath "$.results[0].actions['create']" == "EFFECT_ALLOW" +jsonpath "$.results[1].resource.id" == "XX225" +jsonpath "$.results[1].resource.kind" == "leave_request" +jsonpath "$.results[1].resource.scope" == "acme.hr" +jsonpath "$.results[1].actions[*]" count == 3 +jsonpath "$.results[1].actions['view:public']" == "EFFECT_ALLOW" +jsonpath "$.results[1].actions['delete']" == "EFFECT_DENY" +jsonpath "$.results[1].actions['create']" == "EFFECT_ALLOW" -# Valid CheckResources request +# Invalid CheckResources request 1 POST {{protocol}}://{{host}}:{{port}}/api/check/resources Content-Type: application/json -file,requests/check_resources/req01.json; -HTTP/* 200 +file,requests/check_resources/bad_req01.json; +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.results" count == 2 @@ -226,12 +69,14 @@ jsonpath "$.results[0].resource.policyVersion" == "20210210" jsonpath "$.results[0].actions[*]" count == 4 jsonpath "$.results[0].actions['approve']" == "EFFECT_DENY" jsonpath "$.results[0].actions['create']" == "EFFECT_DENY" -jsonpath "$.results[0].actions['defer']" == "EFFECT_ALLOW" -jsonpath "$.results[0].actions['view:public']" == "EFFECT_ALLOW" +jsonpath "$.results[0].actions['defer']" == "EFFECT_DENY" +jsonpath "$.results[0].actions['view:public']" == "EFFECT_DENY" +jsonpath "$.results[0].validationErrors[*]" count == 2 jsonpath "$.results[1].resource.id" == "XX150" jsonpath "$.results[1].resource.kind" == "leave_request" jsonpath "$.results[1].resource.policyVersion" == "20210210" jsonpath "$.results[1].actions[*]" count == 3 jsonpath "$.results[1].actions['approve']" == "EFFECT_DENY" jsonpath "$.results[1].actions['create']" == "EFFECT_DENY" -jsonpath "$.results[1].actions['view:public']" == "EFFECT_ALLOW" +jsonpath "$.results[1].actions['view:public']" == "EFFECT_DENY" +jsonpath "$.results[1].validationErrors[*]" count == 2 diff --git a/hack/dev/dev.mk b/hack/dev/dev.mk index f23f8d1f4..960c54a94 100644 --- a/hack/dev/dev.mk +++ b/hack/dev/dev.mk @@ -11,7 +11,7 @@ $(DEV_DIR)/tls.crt: .PHONY: dev-server dev-server: $(DEV_DIR)/tls.crt - @ go run cmd/cerbos/main.go server --log-level=debug --debug-listen-addr=":6666" --z-pages-enabled --config=$(DEV_DIR)/conf.secure.yaml + @ go run cmd/cerbos/main.go server --log-level=debug --debug-listen-addr=":6666" --z-pages-enabled --config=$(DEV_DIR)/conf.secure.yaml .PHONY: perf-server perf-server: $(DEV_DIR)/tls.crt @@ -129,7 +129,7 @@ check-http: $(wildcard $(DEV_DIR)/requests/check_resources/*.json),\ echo "";\ echo $(REQ_FILE); \ - curl -k https://localhost:$(HTTP_PORT)/api/check_resources?pretty -d @$(REQ_FILE);\ + curl -k https://localhost:$(HTTP_PORT)/api/check/resources?pretty -d @$(REQ_FILE);\ echo "";) @ $(foreach REQ_FILE,\ @@ -240,4 +240,4 @@ jaeger: -p 14268:14268 \ -p 14250:14250 \ -p 9411:9411 \ - jaegertracing/all-in-one:1.28 + jaegertracing/all-in-one:1.28 diff --git a/hack/dev/plan.hurl b/hack/dev/plan.hurl index ad7b6a348..2a719c404 100644 --- a/hack/dev/plan.hurl +++ b/hack/dev/plan.hurl @@ -2,7 +2,7 @@ POST {{protocol}}://{{host}}:{{port}}/api/plan/resources Content-Type: application/json file,requests/plan_resources/req1.json; -HTTP/* 200 +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.action" == "approve" @@ -16,7 +16,7 @@ jsonpath "$.meta.filterDebug" == "(eq request.resource.attr.status \"PENDING_APP POST {{protocol}}://{{host}}:{{port}}/api/plan/resources Content-Type: application/json file,requests/plan_resources/req2.json; -HTTP/* 200 +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.action" == "defer" @@ -30,7 +30,7 @@ jsonpath "$.meta.filterDebug" == "(true)" POST {{protocol}}://{{host}}:{{port}}/api/plan/resources Content-Type: application/json file,requests/plan_resources/req3.json; -HTTP/* 200 +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.action" == "view-as-vip" @@ -44,7 +44,7 @@ jsonpath "$.meta.filterDebug" == "(eq request.resource.attr.owner \"1\")" POST {{protocol}}://{{host}}:{{port}}/api/plan/resources Content-Type: application/json file,requests/plan_resources/req4.json; -HTTP/* 200 +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.action" == "view" @@ -58,7 +58,7 @@ jsonpath "$.meta.filterDebug" == "NO_MATCH" POST {{protocol}}://{{host}}:{{port}}/api/plan/resources Content-Type: application/json file,requests/plan_resources/req5.json; -HTTP/* 200 +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.action" == "delete" diff --git a/hack/dev/playground.hurl b/hack/dev/playground.hurl index dccfbbd9c..77d6ff0f1 100644 --- a/hack/dev/playground.hurl +++ b/hack/dev/playground.hurl @@ -2,7 +2,7 @@ POST {{protocol}}://{{host}}:{{port}}/api/playground/validate Content-Type: application/json file,requests/playground_validate/req1.json; -HTTP/* 200 +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.success" != null @@ -12,52 +12,52 @@ jsonpath "$.success" != null POST {{protocol}}://{{host}}:{{port}}/api/playground/validate Content-Type: application/json file,requests/playground_validate/req2.json; -HTTP/* 400 +HTTP 400 [Asserts] header "Content-Type" == "application/json" jsonpath "$.failure.errors" count == 1 jsonpath "$.failure.errors[0].file" == "resource.yaml" -jsonpath "$.failure.errors[0].error" == "Import 'apatr_common_roles' not found" +jsonpath "$.failure.errors[0].error" == "Derived roles import 'apatr_common_roles' not found" # Playground validate request 3 POST {{protocol}}://{{host}}:{{port}}/api/playground/validate Content-Type: application/json file,requests/playground_validate/req3.json; -HTTP/* 400 +HTTP 400 [Asserts] header "Content-Type" == "application/json" jsonpath "$.failure.errors" count == 2 -jsonpath "$.failure.errors[?(@.file == 'resource.yaml')].error" == "Import 'apatr_common_roles' not found" -jsonpath "$.failure.errors[?(@.file == 'common_roles.yaml')].error" == "Failed to read: invalid Policy.PolicyType: value is required" +jsonpath "$.failure.errors[?(@.file == 'resource.yaml')].error" nth 0 == "Derived roles import 'apatr_common_roles' not found" +jsonpath "$.failure.errors[?(@.file == 'common_roles.yaml')].error" nth 0 == "Failed to read: file is not valid: [/: missing properties: 'resourcePolicy', /: missing properties: 'principalPolicy', /: missing properties: 'derivedRoles', /: missing properties: 'exportVariables']" # Playground evaluate request 1 POST {{protocol}}://{{host}}:{{port}}/api/playground/evaluate Content-Type: application/json file,requests/playground_evaluate/req1.json; -HTTP/* 200 +HTTP 200 [Asserts] header "Content-Type" == "application/json" jsonpath "$.success.results" count == 2 -jsonpath "$.success.results[?(@.action == 'view')].effect" == "EFFECT_ALLOW" -jsonpath "$.success.results[?(@.action == 'view')].policy" == "resource.album_object.vdefault" -jsonpath "$.success.results[?(@.action == 'view')].effectiveDerivedRoles" count == 1 -jsonpath "$.success.results[?(@.action == 'view')].effectiveDerivedRoles[0]" == "owner" +jsonpath "$.success.results[?(@.action == 'view')].effect" nth 0 == "EFFECT_ALLOW" +jsonpath "$.success.results[?(@.action == 'view')].policy" nth 0 == "resource.album_object.vdefault" +jsonpath "$.success.effectiveDerivedRoles" count == 1 +jsonpath "$.success.effectiveDerivedRoles[0]" == "owner" -jsonpath "$.success.results[?(@.action == 'delete')].effect" == "EFFECT_ALLOW" -jsonpath "$.success.results[?(@.action == 'delete')].policy" == "resource.album_object.vdefault" -jsonpath "$.success.results[?(@.action == 'delete')].effectiveDerivedRoles" count == 1 -jsonpath "$.success.results[?(@.action == 'delete')].effectiveDerivedRoles[0]" == "owner" +jsonpath "$.success.results[?(@.action == 'delete')].effect" nth 0 == "EFFECT_ALLOW" +jsonpath "$.success.results[?(@.action == 'delete')].policy" nth 0 == "resource.album_object.vdefault" +jsonpath "$.success.effectiveDerivedRoles" count == 1 +jsonpath "$.success.effectiveDerivedRoles[0]" == "owner" # Playground evaluate request 2 POST {{protocol}}://{{host}}:{{port}}/api/playground/evaluate Content-Type: application/json file,requests/playground_evaluate/req2.json; -HTTP/* 400 +HTTP 400 [Asserts] header "Content-Type" == "application/json" jsonpath "$.failure.errors" count == 1 jsonpath "$.failure.errors[0].file" == "resource.yaml" -jsonpath "$.failure.errors[0].error" == "Import 'apatr_common_roles' not found" +jsonpath "$.failure.errors[0].error" == "Derived roles import 'apatr_common_roles' not found" diff --git a/hack/dev/requests/playground_evaluate/req1.json b/hack/dev/requests/playground_evaluate/req1.json index a93d142ef..33625a904 100644 --- a/hack/dev/requests/playground_evaluate/req1.json +++ b/hack/dev/requests/playground_evaluate/req1.json @@ -3,7 +3,7 @@ "files": [ { "fileName": "common_roles.yaml", - "contents": "LS0tCmFwaVZlcnNpb246ICJhcGkuY2VyYm9zLmRldi92MSIKZGVzY3JpcHRpb246IHwtCiAgQ29tbW9uIGR5bmFtaWMgcm9sZXMgdXNlZCB3aXRoaW4gdGhlIEFwYXRyIGFwcApkZXJpdmVkX3JvbGVzOgogIG5hbWU6IGFwYXRyX2NvbW1vbl9yb2xlcwogIGRlZmluaXRpb25zOgogICAgLSBuYW1lOiBvd25lcgogICAgICBwYXJlbnRSb2xlczogWyJ1c2VyIl0KICAgICAgY29uZGl0aW9uOgogICAgICAgIG1hdGNoOgogICAgICAgICAgZXhwcjogcmVxdWVzdC5yZXNvdXJjZS5hdHRyLm93bmVyID09IHJlcXVlc3QucHJpbmNpcGFsLmlkCgogICAgLSBuYW1lOiBhYnVzZV9tb2RlcmF0b3IKICAgICAgcGFyZW50Um9sZXM6IFsibW9kZXJhdG9yIl0KICAgICAgY29uZGl0aW9uOgogICAgICAgIG1hdGNoOgogICAgICAgICAgZXhwcjogcmVxdWVzdC5yZXNvdXJjZS5hdHRyLmZsYWdnZWQgPT0gdHJ1ZQo=" + "contents": "IyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT0uLi8uLi8uLi8uLi8uLi9zY2hlbWEvanNvbnNjaGVtYS9jZXJib3MvcG9saWN5L3YxL1BvbGljeS5zY2hlbWEuanNvbgotLS0KYXBpVmVyc2lvbjogImFwaS5jZXJib3MuZGV2L3YxIgpkZXNjcmlwdGlvbjogfC0KICBDb21tb24gZHluYW1pYyByb2xlcyB1c2VkIHdpdGhpbiB0aGUgQXBhdHIgYXBwCmRlcml2ZWRSb2xlczoKICBuYW1lOiBhcGF0cl9jb21tb25fcm9sZXMKICBkZWZpbml0aW9uczoKICAgIC0gbmFtZTogb3duZXIKICAgICAgcGFyZW50Um9sZXM6IFsidXNlciJdCiAgICAgIGNvbmRpdGlvbjoKICAgICAgICBtYXRjaDoKICAgICAgICAgIGV4cHI6IHJlcXVlc3QucmVzb3VyY2UuYXR0ci5vd25lciA9PSByZXF1ZXN0LnByaW5jaXBhbC5pZAoKICAgIC0gbmFtZTogYWJ1c2VfbW9kZXJhdG9yCiAgICAgIHBhcmVudFJvbGVzOiBbIm1vZGVyYXRvciJdCiAgICAgIGNvbmRpdGlvbjoKICAgICAgICBtYXRjaDoKICAgICAgICAgIGV4cHI6IHJlcXVlc3QucmVzb3VyY2UuYXR0ci5mbGFnZ2VkID09IHRydWUK" }, { "fileName": "resource.yaml", diff --git a/hack/dev/requests/playground_validate/req1.json b/hack/dev/requests/playground_validate/req1.json index 96bae20c7..ad075f8fb 100644 --- a/hack/dev/requests/playground_validate/req1.json +++ b/hack/dev/requests/playground_validate/req1.json @@ -3,7 +3,7 @@ "files": [ { "fileName": "common_roles.yaml", - "contents": "LS0tCmFwaVZlcnNpb246ICJhcGkuY2VyYm9zLmRldi92MSIKZGVzY3JpcHRpb246IHwtCiAgQ29tbW9uIGR5bmFtaWMgcm9sZXMgdXNlZCB3aXRoaW4gdGhlIEFwYXRyIGFwcApkZXJpdmVkX3JvbGVzOgogIG5hbWU6IGFwYXRyX2NvbW1vbl9yb2xlcwogIGRlZmluaXRpb25zOgogICAgLSBuYW1lOiBvd25lcgogICAgICBwYXJlbnRSb2xlczogWyJ1c2VyIl0KICAgICAgY29uZGl0aW9uOgogICAgICAgIG1hdGNoOgogICAgICAgICAgZXhwcjogcmVxdWVzdC5yZXNvdXJjZS5hdHRyLm93bmVyID09IHJlcXVlc3QucHJpbmNpcGFsLmlkCgogICAgLSBuYW1lOiBhYnVzZV9tb2RlcmF0b3IKICAgICAgcGFyZW50Um9sZXM6IFsibW9kZXJhdG9yIl0KICAgICAgY29uZGl0aW9uOgogICAgICAgIG1hdGNoOgogICAgICAgICAgZXhwcjogcmVxdWVzdC5yZXNvdXJjZS5hdHRyLmZsYWdnZWQgPT0gdHJ1ZQo=" + "contents": "IyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT0uLi8uLi8uLi8uLi8uLi9zY2hlbWEvanNvbnNjaGVtYS9jZXJib3MvcG9saWN5L3YxL1BvbGljeS5zY2hlbWEuanNvbgotLS0KYXBpVmVyc2lvbjogImFwaS5jZXJib3MuZGV2L3YxIgpkZXNjcmlwdGlvbjogfC0KICBDb21tb24gZHluYW1pYyByb2xlcyB1c2VkIHdpdGhpbiB0aGUgQXBhdHIgYXBwCmRlcml2ZWRSb2xlczoKICBuYW1lOiBhcGF0cl9jb21tb25fcm9sZXMKICBkZWZpbml0aW9uczoKICAgIC0gbmFtZTogb3duZXIKICAgICAgcGFyZW50Um9sZXM6IFsidXNlciJdCiAgICAgIGNvbmRpdGlvbjoKICAgICAgICBtYXRjaDoKICAgICAgICAgIGV4cHI6IHJlcXVlc3QucmVzb3VyY2UuYXR0ci5vd25lciA9PSByZXF1ZXN0LnByaW5jaXBhbC5pZAoKICAgIC0gbmFtZTogYWJ1c2VfbW9kZXJhdG9yCiAgICAgIHBhcmVudFJvbGVzOiBbIm1vZGVyYXRvciJdCiAgICAgIGNvbmRpdGlvbjoKICAgICAgICBtYXRjaDoKICAgICAgICAgIGV4cHI6IHJlcXVlc3QucmVzb3VyY2UuYXR0ci5mbGFnZ2VkID09IHRydWUK" }, { "fileName": "resource.yaml", diff --git a/internal/compile/compile.go b/internal/compile/compile.go index 47c6df600..4b60f2dad 100644 --- a/internal/compile/compile.go +++ b/internal/compile/compile.go @@ -462,7 +462,7 @@ func compileAllVariables(modCtx *moduleCtx, variables *policyv1.Variables) map[s } addVariables(modCtx, results, sources, variables.GetLocal(), "policy local variables") - addVariables(modCtx, results, sources, modCtx.def.Variables, "top-level policy variables (deprecated)") //nolint:staticcheck + addVariables(modCtx, results, sources, modCtx.def.Variables, "top-level policy variables (deprecated)") for name, definedIn := range sources { var definedInMsg string diff --git a/internal/namer/namer.go b/internal/namer/namer.go index e96b207ad..3b8d9be68 100644 --- a/internal/namer/namer.go +++ b/internal/namer/namer.go @@ -16,7 +16,11 @@ import ( "github.com/cerbos/cerbos/internal/util" ) -var invalidIdentifierChars = regexp.MustCompile(`[^\w.]+`) +var ( + invalidIdentifierChars = regexp.MustCompile(`[^\w.]+`) + // Naming pattern imposed on resource and principal names before Cerbos 0.30.0. + oldNamePattern = regexp.MustCompile(`^[[:alpha:]][[:word:]\@\.\-/]*(\:[[:alpha:]][[:word:]\@\.\-/]*)*$`) +) const ( DerivedRolesPrefix = fqnPrefix + "derived_roles" @@ -156,7 +160,7 @@ func FQNFromPolicyKey(s string) string { // ResourcePolicyFQN returns the fully-qualified name for the resource policy with given resource, version and scope. func ResourcePolicyFQN(resource, version, scope string) string { - fqn := fmt.Sprintf("%s.%s.v%s", ResourcePoliciesPrefix, Sanitize(resource), Sanitize(version)) + fqn := fmt.Sprintf("%s.%s.v%s", ResourcePoliciesPrefix, sanitize(resource), sanitize(version)) return withScope(fqn, scope) } @@ -177,7 +181,7 @@ func ScopedResourcePolicyModuleIDs(resource, version, scope string, genTree bool // PrincipalPolicyFQN returns the fully-qualified module name for the principal policy with given principal, version and scope. func PrincipalPolicyFQN(principal, version, scope string) string { - fqn := fmt.Sprintf("%s.%s.v%s", PrincipalPoliciesPrefix, Sanitize(principal), Sanitize(version)) + fqn := fmt.Sprintf("%s.%s.v%s", PrincipalPoliciesPrefix, sanitize(principal), sanitize(version)) return withScope(fqn, scope) } @@ -198,7 +202,7 @@ func ScopedPrincipalPolicyModuleIDs(principal, version, scope string, genTree bo // DerivedRolesFQN returns the fully-qualified module name for the given derived roles set. func DerivedRolesFQN(roleSetName string) string { - return fmt.Sprintf("%s.%s", DerivedRolesPrefix, Sanitize(roleSetName)) + return fmt.Sprintf("%s.%s", DerivedRolesPrefix, sanitize(roleSetName)) } // DerivedRolesModuleID returns the module ID for the given derived roles set. @@ -208,7 +212,7 @@ func DerivedRolesModuleID(roleSetName string) ModuleID { // ExportVariablesFQN returns the fully-qualified module name for the given exported variable definitions. func ExportVariablesFQN(variablesName string) string { - return fmt.Sprintf("%s.%s", ExportVariablesPrefix, Sanitize(variablesName)) + return fmt.Sprintf("%s.%s", ExportVariablesPrefix, sanitize(variablesName)) } // ExportVariablesModuleID returns the module ID for the given exported variable definitions. @@ -229,9 +233,16 @@ func withScope(fqn, scope string) string { return fqn + "/" + scope } -// Sanitize replaces special characters in the string with underscores. -func Sanitize(v string) string { - return invalidIdentifierChars.ReplaceAllLiteralString(v, "_") +// sanitize replaces special characters in the string with underscores. +// Before Cerbos 0.30 the names of resources or principals had to follow a certain pattern. We then replaced some of +// the non-word characters with underscores because earlier versions of Cerbos used to generate Rego code for policies. +// Because we used the sanitized name for computing the module ID of the policy, in order to maintain backward compatibility +// and not break database stores we still have to do the same if the name matches the pattern. +func sanitize(v string) string { + if oldNamePattern.MatchString(v) { + return invalidIdentifierChars.ReplaceAllLiteralString(v, "_") + } + return v } // ResourceRuleName returns the name of the given resource rule. diff --git a/internal/namer/namer_test.go b/internal/namer/namer_test.go index 1bea7f172..bce968ec8 100644 --- a/internal/namer/namer_test.go +++ b/internal/namer/namer_test.go @@ -212,3 +212,71 @@ func TestScopedModuleIDs(t *testing.T) { }) } } + +func TestFQNSpecialChars(t *testing.T) { + testCases := []struct { + policyName string + fqnFunc func(string, string, string) string + wantFQN string + wantModuleID string + }{ + { + policyName: "resource_name", + fqnFunc: namer.ResourcePolicyFQN, + wantFQN: "cerbos.resource.resource_name.vdefault/a.b.c", + wantModuleID: "17187169266267860487", + }, + { + policyName: "my-resource@some.domain-name/path", + fqnFunc: namer.ResourcePolicyFQN, + wantFQN: "cerbos.resource.my_resource_some.domain_name_path.vdefault/a.b.c", + wantModuleID: "2652366422599377998", + }, + { + policyName: "my-resource@@@@some.domain-name//path", + fqnFunc: namer.ResourcePolicyFQN, + wantFQN: "cerbos.resource.my_resource_some.domain_name_path.vdefault/a.b.c", + wantModuleID: "2652366422599377998", + }, + { + policyName: "arn:aws:sns:us-east-1:123456789012:topic-foo", + fqnFunc: namer.ResourcePolicyFQN, + wantFQN: "cerbos.resource.arn:aws:sns:us-east-1:123456789012:topic-foo.vdefault/a.b.c", + wantModuleID: "9412675552925400030", + }, + { + policyName: "principal_name", + fqnFunc: namer.PrincipalPolicyFQN, + wantFQN: "cerbos.principal.principal_name.vdefault/a.b.c", + wantModuleID: "15622297473602434759", + }, + { + policyName: "principal_name@email-domain.com", + fqnFunc: namer.PrincipalPolicyFQN, + wantFQN: "cerbos.principal.principal_name_email_domain.com.vdefault/a.b.c", + wantModuleID: "9926962312262639256", + }, + { + policyName: "principal_name@@@@@email-domain.com/foo", + fqnFunc: namer.PrincipalPolicyFQN, + wantFQN: "cerbos.principal.principal_name_email_domain.com_foo.vdefault/a.b.c", + wantModuleID: "9473302746866088627", + }, + { + policyName: "arn:aws:iam::123456789012:user/johndoe", + fqnFunc: namer.PrincipalPolicyFQN, + wantFQN: "cerbos.principal.arn:aws:iam::123456789012:user/johndoe.vdefault/a.b.c", + wantModuleID: "5306719076896873049", + }, + } + + for _, tc := range testCases { + tc := tc + t.Run(tc.policyName, func(t *testing.T) { + haveFQN := tc.fqnFunc(tc.policyName, "default", "a.b.c") + require.Equal(t, tc.wantFQN, haveFQN) + haveModID := namer.GenModuleIDFromFQN(haveFQN) + require.Equal(t, tc.wantModuleID, haveModID.String()) + }) + } +} diff --git a/internal/policy/io_test.go b/internal/policy/io_test.go index db88c9722..81c978db3 100644 --- a/internal/policy/io_test.go +++ b/internal/policy/io_test.go @@ -106,17 +106,6 @@ func TestValidate(t *testing.T) { return obj }, }, - { - name: "type=ResourcePolicy;issue=BadResourceName", - input: func() validator { - obj := test.GenResourcePolicy(test.NoMod()) - rp := obj.GetResourcePolicy() - rp.Resource = "a?;#" - obj.PolicyType = &policyv1.Policy_ResourcePolicy{ResourcePolicy: rp} - - return obj - }, - }, { name: "type=ResourcePolicy;issue=EmptyResourceName", input: func() validator { diff --git a/internal/policy/policy.go b/internal/policy/policy.go index d1f1227da..ca6e9bb91 100644 --- a/internal/policy/policy.go +++ b/internal/policy/policy.go @@ -218,7 +218,6 @@ func WithStoreIdentifier(p *policyv1.Policy, storeIdentifier string) *policyv1.P p.Metadata = &policyv1.Metadata{} } - //nolint:staticcheck p.Metadata.StoreIdentifer = storeIdentifier // TODO: Remove this after deprecated StoreIdentifer no longer exists p.Metadata.StoreIdentifier = storeIdentifier diff --git a/internal/policy/validate.go b/internal/policy/validate.go index 3ee5dd597..f7ec1c914 100644 --- a/internal/policy/validate.go +++ b/internal/policy/validate.go @@ -107,7 +107,6 @@ func validateDerivedRoles(dr *policyv1.DerivedRoles) (err error) { } func validateExportVariables(p *policyv1.Policy) error { - //nolint:staticcheck if len(p.Variables) > 0 { return fmt.Errorf("export variables policies do not support the deprecated top-level variables field") } diff --git a/internal/storage/blob/cloner_test.go b/internal/storage/blob/cloner_test.go index f64cadef3..54e57f914 100644 --- a/internal/storage/blob/cloner_test.go +++ b/internal/storage/blob/cloner_test.go @@ -40,6 +40,7 @@ func TestCloneResult(t *testing.T) { "principal_policies/policy_03.yaml", "principal_policies/policy_04.yaml", "principal_policies/policy_05.yaml", + "principal_policies/policy_06.yaml", "resource_policies/disabled_policy_01.yaml", "resource_policies/policy_01.yaml", "resource_policies/policy_02.yaml", @@ -55,5 +56,6 @@ func TestCloneResult(t *testing.T) { "resource_policies/policy_08.yaml", "resource_policies/policy_09.yaml", "resource_policies/policy_10.yaml", + "resource_policies/policy_11.yaml", }, result.updateOrAdd) } diff --git a/internal/storage/bundle/remote_source_test.go b/internal/storage/bundle/remote_source_test.go index 17d410173..ed60b09fd 100644 --- a/internal/storage/bundle/remote_source_test.go +++ b/internal/storage/bundle/remote_source_test.go @@ -20,7 +20,7 @@ import ( "github.com/stretchr/testify/require" ) -const bundleID = "h1:441rLQQdIotHlkzP1SOoFBQHdLA4VNfxAgr8zWv7ip4=" +const bundleID = "h1:lB6+Yh5gZXBBrSqeOihtpqulAS8mk94Zj2UU/4jRSEo=" func TestRemoteSource(t *testing.T) { bundlePath := filepath.Join(test.PathToDir(t, "bundle"), "bundle.crbp") diff --git a/internal/storage/db/internal/db.go b/internal/storage/db/internal/db.go index 058142e64..df1424e31 100644 --- a/internal/storage/db/internal/db.go +++ b/internal/storage/db/internal/db.go @@ -7,6 +7,7 @@ import ( "bytes" "context" "encoding/json" + "errors" "fmt" "io" "net/url" @@ -32,6 +33,8 @@ import ( const tableLogKey = "table" +var errUpsertPolicyRequired = errors.New("invalid driver configuration: upsertPolicy is required") + type DBStorage interface { storage.Subscribable storage.Instrumented @@ -215,32 +218,14 @@ func (s *dbStorage) LoadSchema(ctx context.Context, urlVar string) (io.ReadClose } func (s *dbStorage) AddOrUpdate(ctx context.Context, policies ...policy.Wrapper) error { + if s.opts.upsertPolicy == nil { + return errUpsertPolicyRequired + } + events := make([]storage.Event, len(policies)) err := s.db.WithTx(func(tx *goqu.TxDatabase) error { for i, p := range policies { - policyRecord := Policy{ - ID: p.ID, - Kind: p.Kind.String(), - Name: p.Name, - Version: p.Version, - Scope: p.Scope, - Description: p.Description, - Disabled: p.Disabled, - Definition: PolicyDefWrapper{Policy: p.Policy}, - } - - var err error - // try to upsert this policy record - if s.opts.upsertPolicy != nil { - err = s.opts.upsertPolicy(ctx, tx, p) - } else { - _, err = tx.Insert(PolicyTbl). - Prepared(true). - Rows(policyRecord). - OnConflict(goqu.DoUpdate(PolicyTblIDCol, policyRecord)). - Executor().ExecContext(ctx) - } - if err != nil { + if err := s.opts.upsertPolicy(ctx, tx, p); err != nil { return fmt.Errorf("failed to upsert %s: %w", p.FQN, err) } diff --git a/internal/storage/db/internal/tests.go b/internal/storage/db/internal/tests.go index a51a105bc..89ccbbffa 100644 --- a/internal/storage/db/internal/tests.go +++ b/internal/storage/db/internal/tests.go @@ -52,12 +52,23 @@ func TestSuite(store DBStorage) func(*testing.T) { rpImportDerivedRolesThatImportVariables.GetResourcePolicy().ImportDerivedRoles = []string{drImportVariables.Name} rpImportDerivedRolesThatImportVariables.GetResourcePolicy().Variables = nil - policyList := []policy.Wrapper{rp, pp, dr, ev, rpx, drx, rpAcme, rpAcmeHR, rpAcmeHRUK, ppAcme, ppAcmeHR, drImportVariables, rpImportDerivedRolesThatImportVariables} + rpDupe1 := policy.Wrap(test.GenResourcePolicy(test.Suffix("@foo"))) + rpDupe2 := policy.Wrap(test.GenResourcePolicy(test.Suffix("@@foo"))) + ppDupe1 := policy.Wrap(test.GenPrincipalPolicy(test.Suffix("@foo"))) + ppDupe2 := policy.Wrap(test.GenPrincipalPolicy(test.Suffix("@@foo"))) + drDupe1 := policy.Wrap(test.GenDerivedRoles(test.Suffix("@foo"))) + drDupe2 := policy.Wrap(test.GenDerivedRoles(test.Suffix("@@foo"))) + evDupe1 := policy.Wrap(test.GenExportVariables(test.Suffix("@foo"))) + evDupe2 := policy.Wrap(test.GenExportVariables(test.Suffix("@@foo"))) + + policyList := []policy.Wrapper{rp, pp, dr, ev, rpx, drx, rpAcme, rpAcmeHR, rpAcmeHRUK, ppAcme, ppAcmeHR, drImportVariables, rpImportDerivedRolesThatImportVariables, rpDupe1, ppDupe1, drDupe1, evDupe1} sch := test.ReadSchemaFromFile(t, test.PathToDir(t, "store/_schemas/resources/leave_request.json")) const schID = "leave_request" - t.Run("add", func(t *testing.T) { + addPolicies := func(t *testing.T) { + t.Helper() + checkEvents := storage.TestSubscription(store) require.NoError(t, store.AddOrUpdate(ctx, policyList...)) @@ -75,14 +86,30 @@ func TestSuite(store DBStorage) func(*testing.T) { {Kind: storage.EventAddOrUpdatePolicy, PolicyID: ppAcmeHR.ID}, {Kind: storage.EventAddOrUpdatePolicy, PolicyID: drImportVariables.ID}, {Kind: storage.EventAddOrUpdatePolicy, PolicyID: rpImportDerivedRolesThatImportVariables.ID}, + {Kind: storage.EventAddOrUpdatePolicy, PolicyID: rpDupe1.ID}, + {Kind: storage.EventAddOrUpdatePolicy, PolicyID: ppDupe1.ID}, + {Kind: storage.EventAddOrUpdatePolicy, PolicyID: drDupe1.ID}, + {Kind: storage.EventAddOrUpdatePolicy, PolicyID: evDupe1.ID}, } checkEvents(t, timeout, wantEvents...) stats := store.RepoStats(ctx) - require.Equal(t, 6, stats.PolicyCount[policy.ResourceKind]) - require.Equal(t, 3, stats.PolicyCount[policy.PrincipalKind]) - require.Equal(t, 3, stats.PolicyCount[policy.DerivedRolesKind]) - require.Equal(t, 1, stats.PolicyCount[policy.ExportVariablesKind]) + require.Equal(t, 7, stats.PolicyCount[policy.ResourceKind]) + require.Equal(t, 4, stats.PolicyCount[policy.PrincipalKind]) + require.Equal(t, 4, stats.PolicyCount[policy.DerivedRolesKind]) + require.Equal(t, 2, stats.PolicyCount[policy.ExportVariablesKind]) + } + + t.Run("add_or_update", func(t *testing.T) { + t.Run("add", addPolicies) + t.Run("update", addPolicies) + }) + + t.Run("add_id_collision", func(t *testing.T) { + require.ErrorIs(t, store.AddOrUpdate(ctx, rpDupe2), storage.ErrPolicyIDCollision, "rpDupe2 not detected") + require.ErrorIs(t, store.AddOrUpdate(ctx, ppDupe2), storage.ErrPolicyIDCollision, "ppDupe2 not detected") + require.ErrorIs(t, store.AddOrUpdate(ctx, drDupe2), storage.ErrPolicyIDCollision, "drDupe2 not detected") + require.ErrorIs(t, store.AddOrUpdate(ctx, evDupe2), storage.ErrPolicyIDCollision, "evDupe2 not detected") }) t.Run("get_compilation_unit_for_resource_policy", func(t *testing.T) { diff --git a/internal/storage/db/mysql/mysql.go b/internal/storage/db/mysql/mysql.go index ccb6bf4a5..1841415e9 100644 --- a/internal/storage/db/mysql/mysql.go +++ b/internal/storage/db/mysql/mysql.go @@ -21,13 +21,15 @@ import ( "github.com/cerbos/cerbos/internal/config" "github.com/cerbos/cerbos/internal/observability/logging" + "github.com/cerbos/cerbos/internal/policy" "github.com/cerbos/cerbos/internal/storage" "github.com/cerbos/cerbos/internal/storage/db/internal" ) const ( - DriverName = "mysql" - urlToSchemaDocs = "https://docs.cerbos.dev/cerbos/latest/configuration/storage.html#mysql-schema" + DriverName = "mysql" + urlToSchemaDocs = "https://docs.cerbos.dev/cerbos/latest/configuration/storage.html#mysql-schema" + constraintViolationErrCode = 1062 ) var ( @@ -62,7 +64,7 @@ func NewStore(ctx context.Context, conf *Conf) (*Store, error) { conf.ConnPool.Configure(db) - s, err := internal.NewDBStorage(ctx, goqu.New("mysql", db)) + s, err := internal.NewDBStorage(ctx, goqu.New("mysql", db), internal.WithUpsertPolicy(upsertPolicy)) if err != nil { return nil, err } @@ -151,6 +153,57 @@ func registerServerPubKeys(conf *Conf) error { return nil } +func upsertPolicy(ctx context.Context, tx *goqu.TxDatabase, p policy.Wrapper) error { + pr := internal.Policy{ + ID: p.ID, + Kind: p.Kind.String(), + Name: p.Name, + Version: p.Version, + Scope: p.Scope, + Description: p.Description, + Disabled: p.Disabled, + Definition: internal.PolicyDefWrapper{Policy: p.Policy}, + } + + if _, err := tx.Insert(internal.PolicyTbl).Prepared(true).Rows(pr).Executor().ExecContext(ctx); err != nil { + mysqlErr := new(mysql.MySQLError) + if !errors.As(err, &mysqlErr) || mysqlErr.Number != constraintViolationErrCode { + return fmt.Errorf("failed to insert policy %s: %w", p.FQN, err) + } + + // Check if the existing policy name matches the name of the policy we are trying to insert. + // The reason for not doing an UPDATE WHERE and checking the number of affected rows is because MySQL + // returns 0 if the update did not change any of the columns as well. + var existingName string + ok, err := tx.Select(goqu.C(internal.PolicyTblNameCol)). + From(internal.PolicyTbl). + Where(goqu.C(internal.PolicyTblIDCol).Eq(pr.ID)). + Executor().ScanValContext(ctx, &existingName) + if !ok || err != nil { + return fmt.Errorf("failed to lookup policy %s: %w", p.FQN, err) + } + + if existingName != pr.Name { + return fmt.Errorf("failed to insert policy %s.%s: %w", p.Name, p.Version, storage.ErrPolicyIDCollision) + } + + // attempt update + if _, err := tx.Update(internal.PolicyTbl). + Prepared(true). + Set(pr). + Where(goqu.And( + goqu.C(internal.PolicyTblIDCol).Eq(pr.ID), + goqu.C(internal.PolicyTblNameCol).Eq(pr.Name), + )).Executor().ExecContext(ctx); err != nil { + return fmt.Errorf("failed to update policy %s: %w", p.FQN, err) + } + + return nil + } + + return nil +} + type Store struct { internal.DBStorage } diff --git a/internal/storage/db/postgres/postgres.go b/internal/storage/db/postgres/postgres.go index 74660496f..b98b519e1 100644 --- a/internal/storage/db/postgres/postgres.go +++ b/internal/storage/db/postgres/postgres.go @@ -19,6 +19,7 @@ import ( "github.com/cerbos/cerbos/internal/config" "github.com/cerbos/cerbos/internal/observability/logging" + "github.com/cerbos/cerbos/internal/policy" "github.com/cerbos/cerbos/internal/storage" "github.com/cerbos/cerbos/internal/storage/db/internal" ) @@ -64,7 +65,7 @@ func NewStore(ctx context.Context, conf *Conf) (*Store, error) { conf.ConnPool.Configure(db) - s, err := internal.NewDBStorage(ctx, goqu.New("postgres", db)) + s, err := internal.NewDBStorage(ctx, goqu.New("postgres", db), internal.WithUpsertPolicy(upsertPolicy)) if err != nil { return nil, err } @@ -78,6 +79,40 @@ func NewStore(ctx context.Context, conf *Conf) (*Store, error) { return &Store{DBStorage: s}, nil } +func upsertPolicy(ctx context.Context, tx *goqu.TxDatabase, p policy.Wrapper) error { + pr := internal.Policy{ + ID: p.ID, + Kind: p.Kind.String(), + Name: p.Name, + Version: p.Version, + Scope: p.Scope, + Description: p.Description, + Disabled: p.Disabled, + Definition: internal.PolicyDefWrapper{Policy: p.Policy}, + } + res, err := tx.Insert(goqu.T(internal.PolicyTbl).As("p")). + Prepared(true). + Rows(pr). + OnConflict( + goqu.DoUpdate(internal.PolicyTblIDCol, pr). + Where( + goqu.L("EXCLUDED." + internal.PolicyTblNameCol).Eq(goqu.L("p." + internal.PolicyTblNameCol)), + ), + ). + Executor().ExecContext(ctx) + if err != nil { + return fmt.Errorf("failed to insert policy %s: %w", p.FQN, err) + } + + if updated, err := res.RowsAffected(); err != nil { + return fmt.Errorf("failed to check status of policy %s: %w", p.FQN, err) + } else if updated != 1 { + return fmt.Errorf("failed to update policy %s.%s: %w", p.Name, p.Version, storage.ErrPolicyIDCollision) + } + + return nil +} + type Store struct { internal.DBStorage } diff --git a/internal/storage/db/sqlite3/sqlite3.go b/internal/storage/db/sqlite3/sqlite3.go index 32cd13036..041f26904 100644 --- a/internal/storage/db/sqlite3/sqlite3.go +++ b/internal/storage/db/sqlite3/sqlite3.go @@ -20,9 +20,11 @@ import ( "github.com/golang-migrate/migrate/v4/source/iofs" "go.uber.org/zap" gosqlite3 "modernc.org/sqlite" + gosqlite3lib "modernc.org/sqlite/lib" "github.com/cerbos/cerbos/internal/config" "github.com/cerbos/cerbos/internal/observability/logging" + "github.com/cerbos/cerbos/internal/policy" "github.com/cerbos/cerbos/internal/storage" "github.com/cerbos/cerbos/internal/storage/db/internal" "github.com/cerbos/cerbos/internal/util" @@ -99,7 +101,7 @@ func NewStore(ctx context.Context, conf *Conf) (*Store, error) { return nil, fmt.Errorf("failed to migrate schema: %w", err) } - s, err := internal.NewDBStorage(ctx, goqu.New("sqlite3", db), internal.WithRegexpCacheOverride(&nameRegexpCache)) + s, err := internal.NewDBStorage(ctx, goqu.New("sqlite3", db), internal.WithUpsertPolicy(upsertPolicy), internal.WithRegexpCacheOverride(&nameRegexpCache)) if err != nil { return nil, err } @@ -130,6 +132,47 @@ func runMigrations(db *sql.DB) error { return nil } +func upsertPolicy(ctx context.Context, tx *goqu.TxDatabase, p policy.Wrapper) error { + pr := internal.Policy{ + ID: p.ID, + Kind: p.Kind.String(), + Name: p.Name, + Version: p.Version, + Scope: p.Scope, + Description: p.Description, + Disabled: p.Disabled, + Definition: internal.PolicyDefWrapper{Policy: p.Policy}, + } + + if _, err := tx.Insert(internal.PolicyTbl).Prepared(true).Rows(pr).Executor().ExecContext(ctx); err != nil { + sqliteErr := new(gosqlite3.Error) + if !errors.As(err, &sqliteErr) || sqliteErr.Code() != gosqlite3lib.SQLITE_CONSTRAINT_PRIMARYKEY { + return fmt.Errorf("failed to insert policy %s: %w", p.FQN, err) + } + + res, err := tx.Update(internal.PolicyTbl). + Prepared(true). + Set(pr). + Where(goqu.And( + goqu.C(internal.PolicyTblIDCol).Eq(pr.ID), + goqu.C(internal.PolicyTblNameCol).Eq(pr.Name), + )).Executor().ExecContext(ctx) + if err != nil { + return fmt.Errorf("failed to update policy %s: %w", p.FQN, err) + } + + if affected, err := res.RowsAffected(); err != nil { + return fmt.Errorf("failed to get status of policy %s: %w", p.FQN, err) + } else if affected != 1 { + return fmt.Errorf("failed to insert policy %s.%s: %w", p.Name, p.Version, storage.ErrPolicyIDCollision) + } + + return nil + } + + return nil +} + type Store struct { internal.DBStorage } diff --git a/internal/storage/db/sqlserver/conf.go b/internal/storage/db/sqlserver/conf.go index 85ee9def8..585a93cfe 100644 --- a/internal/storage/db/sqlserver/conf.go +++ b/internal/storage/db/sqlserver/conf.go @@ -14,7 +14,7 @@ const confKey = storage.ConfKey + ".sqlserver" // +desc=This section is required only if storage.driver is sqlserver. type Conf struct { ConnPool *internal.ConnPoolConf `yaml:"connPool" conf:",example=\n maxLifeTime: 60m\n maxIdleTime: 45s\n maxOpen: 4\n maxIdle: 1"` - // URL is the SQL Server connection URL. See https://github.com/denisenkom/go-mssqldb#connection-parameters-and-dsn + // URL is the SQL Server connection URL. See https://github.com/microsoft/go-mssqldb#connection-parameters-and-dsn. URL string `yaml:"url" conf:"required,example=\"sqlserver://username:password@host/instance?param1=value¶m2=value\""` // SkipSchemaCheck skips checking for required database tables on startup. SkipSchemaCheck bool `yaml:"skipSchemaCheck" conf:",example=false"` diff --git a/internal/storage/db/sqlserver/sqlserver.go b/internal/storage/db/sqlserver/sqlserver.go index 18a00c031..78e10ccda 100644 --- a/internal/storage/db/sqlserver/sqlserver.go +++ b/internal/storage/db/sqlserver/sqlserver.go @@ -15,9 +15,9 @@ import ( "runtime" "strings" - // Import the mssql driver. - _ "github.com/denisenkom/go-mssqldb" "github.com/doug-martin/goqu/v9" + // Import the mssql driver. + _ "github.com/microsoft/go-mssqldb" // Import the mssql dialect. _ "github.com/doug-martin/goqu/v9/dialect/sqlserver" @@ -31,8 +31,9 @@ import ( ) const ( - DriverName = "sqlserver" - urlToSchemaDocs = "https://docs.cerbos.dev/cerbos/latest/configuration/storage.html#sqlserver-schema" + DriverName = "sqlserver" + urlToSchemaDocs = "https://docs.cerbos.dev/cerbos/latest/configuration/storage.html#sqlserver-schema" + constraintViolationErrCode = 2627 ) var ( @@ -86,7 +87,7 @@ func (s *Store) Driver() string { func upsertPolicy(ctx context.Context, tx *goqu.TxDatabase, p policy.Wrapper) error { stm, err := tx.Prepare(` -UPDATE dbo.[policy] WITH (UPDLOCK, SERIALIZABLE) SET "definition"=@definition, "description"=@description,"disabled"=@disabled,"kind"=@kind,"name"=@name,"version"=@version,"scope"=@scope where [id] = @id +UPDATE dbo.[policy] WITH (UPDLOCK, SERIALIZABLE) SET "definition"=@definition, "description"=@description,"disabled"=@disabled,"kind"=@kind,"version"=@version,"scope"=@scope where [id] = @id AND [name] = @name IF @@ROWCOUNT = 0 BEGIN INSERT INTO dbo.[policy] ("definition", "description", "disabled", "kind", "name", "version", "scope", "id") VALUES (@definition, @description, @disabled, @kind, @name, @version, @scope, @id) @@ -115,7 +116,16 @@ END sql.Named("scope", p.Scope), sql.Named("id", int64(id.(uint64)))) - return err + if err != nil { + //nolint: errorlint + if mssqlErr, ok := err.(interface{ SQLErrorNumber() int32 }); ok && mssqlErr.SQLErrorNumber() == constraintViolationErrCode { + return fmt.Errorf("failed to insert policy %s.%s: %w", p.Name, p.Version, storage.ErrPolicyIDCollision) + } + + return fmt.Errorf("failed to insert policy %s: %w", p.FQN, err) + } + + return nil } func upsertSchema(ctx context.Context, tx *goqu.TxDatabase, schema internal.Schema) error { diff --git a/internal/storage/index/builder_test.go b/internal/storage/index/builder_test.go index bf644e0c4..c21bb8326 100644 --- a/internal/storage/index/builder_test.go +++ b/internal/storage/index/builder_test.go @@ -44,7 +44,7 @@ func TestBuildIndexWithDisk(t *testing.T) { t.Run("check_contents", func(t *testing.T) { data := idxImpl.Inspect() - require.Len(t, data, 27) + require.Len(t, data, 29) rp1 := filepath.Join("resource_policies", "policy_01.yaml") rp2 := filepath.Join("resource_policies", "policy_02.yaml") @@ -105,7 +105,7 @@ func TestBuildIndexWithDisk(t *testing.T) { require.Contains(t, data, dr1) require.Empty(t, data[dr1].Dependencies) - require.Len(t, data[dr1].Dependents, 5) + require.Len(t, data[dr1].Dependents, 6) require.Contains(t, data, dr2) require.Empty(t, data[dr2].Dependencies) diff --git a/internal/storage/store.go b/internal/storage/store.go index bb3e6de46..d15dc6936 100644 --- a/internal/storage/store.go +++ b/internal/storage/store.go @@ -5,6 +5,7 @@ package storage import ( "context" + "errors" "fmt" "io" "sync" @@ -21,6 +22,8 @@ var ( drivers = map[string]Constructor{} ) +var ErrPolicyIDCollision = errors.New("policy ID collision") + // InvalidPolicyError is a custom error to signal that a policy is invalid. type InvalidPolicyError struct { Err error diff --git a/internal/svc/admin_svc.go b/internal/svc/admin_svc.go index 5a3ca2c23..438086f3a 100644 --- a/internal/svc/admin_svc.go +++ b/internal/svc/admin_svc.go @@ -79,6 +79,10 @@ func (cas *CerbosAdminService) AddOrUpdatePolicy(ctx context.Context, req *reque log := ctxzap.Extract(ctx) if err := ms.AddOrUpdate(ctx, policies...); err != nil { log.Error("Failed to add/update policies", zap.Error(err)) + if errors.Is(err, storage.ErrPolicyIDCollision) { + return nil, status.Error(codes.FailedPrecondition, "Policy ID conflict") + } + invalidPolicyErr := new(storage.InvalidPolicyError) if errors.As(err, invalidPolicyErr) { return nil, status.Errorf(codes.InvalidArgument, "Invalid policy: %v", invalidPolicyErr.Message) diff --git a/internal/test/testdata/bundle/bundle.crbp b/internal/test/testdata/bundle/bundle.crbp index b5eb5980d..1abbbf8d9 100644 --- a/internal/test/testdata/bundle/bundle.crbp +++ b/internal/test/testdata/bundle/bundle.crbp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a1e2b6a65d26fa00414005a461ddc1e5b21549e1889eda56e541f39b8cdc6c3 -size 19972 +oid sha256:b29d3ac52d20a0441d0090c27e0289c67f426845fdaa4651ea585dfd1a7b9bf0 +size 22787 diff --git a/internal/test/testdata/bundle/bundle_unencrypted.crbp b/internal/test/testdata/bundle/bundle_unencrypted.crbp index f5beaddc0..a2ae8d1fc 100644 --- a/internal/test/testdata/bundle/bundle_unencrypted.crbp +++ b/internal/test/testdata/bundle/bundle_unencrypted.crbp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a961ab1070acf6b43718fc90c4bd00c392a18c0b00da31dc49b8ba06e0a7e015 -size 19726 +oid sha256:941824be85aedc40e207e6e63d7730aa7468c2267b1a2450b18f5b41f43372e1 +size 22541 diff --git a/internal/test/testdata/bundle/manifest.json b/internal/test/testdata/bundle/manifest.json index aba117474..9253a741f 100644 --- a/internal/test/testdata/bundle/manifest.json +++ b/internal/test/testdata/bundle/manifest.json @@ -1,16 +1,22 @@ { "apiVersion": "api.cerbos.cloud/v1", "policyIndex": { + "cerbos.principal.arn:aws:iam::123456789012:user/johndoe.vdefault": "policies/F843045D554D5F7D", "cerbos.principal.daisy_duck.vdefault": "policies/1E0CD2615BE3760B", "cerbos.principal.donald_duck.v20210210": "policies/1CC91E277263674D", "cerbos.principal.donald_duck.vdefault": "policies/2F26F3660A97BECD", "cerbos.principal.donald_duck.vdefault/acme": "policies/4C6062CFBE8627DB", "cerbos.principal.donald_duck.vdefault/acme.hr": "policies/60C13DA6FD1DF10C", + "cerbos.principal.scrooge_mcduck.vdefault": "policies/C1B3716695815705", "cerbos.principal.terry_tibbs.vdefault": "policies/BCD8E5E5F425900C", "cerbos.resource.account.vdefault": "policies/EE58DE7B0F7DA6B9", "cerbos.resource.album_object.vdefault": "policies/684ED25FF04663F2", + "cerbos.resource.arn:aws:sns:us-east-1:123456789012:topic-a.vdefault": "policies/9F5F3F76EE98C8C8", "cerbos.resource.equipment_request.vdefault": "policies/51F53279EC2F9999", "cerbos.resource.equipment_request.vdefault/acme": "policies/4E007D10C67C7E53", + "cerbos.resource.global.vdefault": "policies/CC4D718865FCB574", + "cerbos.resource.import_derived_roles_that_import_variables.vdefault": "policies/3169CA50FA97BB24", + "cerbos.resource.import_variables.vdefault": "policies/1DADD39B46DA6095", "cerbos.resource.leave_request.v20210210": "policies/EAE733C912F22DA", "cerbos.resource.leave_request.vdefault": "policies/EF8C9BEB57967AA0", "cerbos.resource.leave_request.vdefault/acme": "policies/827F815FFA0C2AC5", @@ -26,7 +32,7 @@ "resources/salary_record.json" ], "meta": { - "identifier": "h1:441rLQQdIotHlkzP1SOoFBQHdLA4VNfxAgr8zWv7ip4=", + "identifier": "h1:lB6+Yh5gZXBBrSqeOihtpqulAS8mk94Zj2UU/4jRSEo=", "source": "/home/cell/work/cerbos/internal/test/testdata/store" } } diff --git a/internal/test/testdata/server/admin/add_or_update_policy/case_01.yaml b/internal/test/testdata/server/admin/add_or_update_policy/case_01.yaml index 7909eabcb..e211cb9e9 100644 --- a/internal/test/testdata/server/admin/add_or_update_policy/case_01.yaml +++ b/internal/test/testdata/server/admin/add_or_update_policy/case_01.yaml @@ -8,7 +8,9 @@ adminAddOrUpdatePolicy: "policies": [ {{- readPolicy "store/resource_policies/policy_07.yaml" | toPolicyJSON }}, {{- readPolicy "store/resource_policies/policy_07_acme.yaml" | toPolicyJSON }}, + {{- readPolicy "store/resource_policies/policy_11.yaml" | toPolicyJSON }}, {{- readPolicy "store/principal_policies/policy_04.yaml" | toPolicyJSON }}, + {{- readPolicy "store/principal_policies/policy_06.yaml" | toPolicyJSON }}, ] } wantResponse: {"success":{}} diff --git a/internal/test/testdata/server/checks/check_resources/cr_case_08.yaml b/internal/test/testdata/server/checks/check_resources/cr_case_08.yaml new file mode 100644 index 000000000..c910add03 --- /dev/null +++ b/internal/test/testdata/server/checks/check_resources/cr_case_08.yaml @@ -0,0 +1,68 @@ +--- +description: "Special chars in policy names" +wantStatus: + httpStatusCode: 200 + grpcStatusCode: 0 +checkResources: + input: { + "requestId": "test", + "includeMeta": true, + "principal": { + "id": "arn:aws:iam::123456789012:user/johndoe", + "roles": [ + "system:basic_user", + "system:ro_user" + ] + }, + "resources": [ + { + "actions": [ + "write", + "use", + "read", + "delete" + ], + "resource": { + "kind": "arn:aws:sns:us-east-1:123456789012:topic-a", + "id": "topic-a", + "attr": { + "region": "us-east-1" + } + } + } + ] + } + wantResponse: { + "requestId": "test", + "results": [ + { + "resource": { + "id": "topic-a", + "kind": "arn:aws:sns:us-east-1:123456789012:topic-a", + }, + "actions": { + "delete": "EFFECT_DENY", + "read": "EFFECT_ALLOW", + "use": "EFFECT_ALLOW", + "write": "EFFECT_ALLOW" + }, + "meta": { + "actions": { + "delete": { + "matched_policy": "resource.arn:aws:sns:us-east-1:123456789012:topic-a.vdefault" + }, + "read": { + "matched_policy": "resource.arn:aws:sns:us-east-1:123456789012:topic-a.vdefault" + }, + "use": { + "matched_policy": "resource.arn:aws:sns:us-east-1:123456789012:topic-a.vdefault" + }, + "write": { + "matched_policy": "principal.arn:aws:iam::123456789012:user/johndoe.vdefault" + } + }, + "effectiveDerivedRoles": ["kube_user"] + } + } + ] + } diff --git a/internal/test/testdata/server/plan_resources/plan_case_06.yaml b/internal/test/testdata/server/plan_resources/plan_case_06.yaml new file mode 100644 index 000000000..9d8cb15a3 --- /dev/null +++ b/internal/test/testdata/server/plan_resources/plan_case_06.yaml @@ -0,0 +1,25 @@ +--- +description: Special chars in policy name +wantStatus: + httpStatusCode: 200 + grpcStatusCode: 0 +planResources: + input: + requestId: test + includeMeta: true + action: use + principal: + id: arn:aws:iam::123456789012:user/johndoe + roles: + - system:basic_user + - system:ro_user + resource: + kind: arn:aws:sns:us-east-1:123456789012:topic-a + wantResponse: + requestId: test + action: use + resourceKind: arn:aws:sns:us-east-1:123456789012:topic-a + filter: + kind: KIND_ALWAYS_ALLOWED + meta: + filter_debug: "(true)" diff --git a/internal/test/testdata/server/playground/evaluate/pge_case_00.yaml b/internal/test/testdata/server/playground/evaluate/pge_case_00.yaml index 2046d5496..93e5db14e 100644 --- a/internal/test/testdata/server/playground/evaluate/pge_case_00.yaml +++ b/internal/test/testdata/server/playground/evaluate/pge_case_00.yaml @@ -22,7 +22,7 @@ playgroundEvaluate: "roles": ["user"] }, "resource": { - "kind": "album:object", + "kind": "album_object", "id": "XX125", "attr": { "owner": "alicia", diff --git a/internal/test/testdata/server/playground/evaluate/pge_case_01.yaml b/internal/test/testdata/server/playground/evaluate/pge_case_01.yaml index b5a5ae9e5..99a0c6ab9 100644 --- a/internal/test/testdata/server/playground/evaluate/pge_case_01.yaml +++ b/internal/test/testdata/server/playground/evaluate/pge_case_01.yaml @@ -22,7 +22,7 @@ playgroundEvaluate: "roles": ["user"] }, "resource": { - "kind": "album:object", + "kind": "album_object", "id": "XX125", "attr": { "owner": "alicia", diff --git a/internal/test/testdata/server/playground/evaluate/pge_invalid_case_00.yaml b/internal/test/testdata/server/playground/evaluate/pge_invalid_case_00.yaml index 8033f8202..67a3c1562 100644 --- a/internal/test/testdata/server/playground/evaluate/pge_invalid_case_00.yaml +++ b/internal/test/testdata/server/playground/evaluate/pge_invalid_case_00.yaml @@ -18,7 +18,7 @@ playgroundEvaluate: "roles": ["user"] }, "resource": { - "kind": "album:object", + "kind": "album_object", "id": "XX125", "attr": { "owner": "alicia", diff --git a/internal/test/testdata/server/playground/evaluate/pge_invalid_case_01.yaml b/internal/test/testdata/server/playground/evaluate/pge_invalid_case_01.yaml index 30e2f9b99..620ec50b7 100644 --- a/internal/test/testdata/server/playground/evaluate/pge_invalid_case_01.yaml +++ b/internal/test/testdata/server/playground/evaluate/pge_invalid_case_01.yaml @@ -22,7 +22,7 @@ playgroundEvaluate: "roles": ["user"] }, "resource": { - "kind": "album:object", + "kind": "album_object", "id": "XX125", "attr": { "owner": "alicia", diff --git a/internal/test/testdata/server/playground/test/pgt_case_00.yaml b/internal/test/testdata/server/playground/test/pgt_case_00.yaml index 5bffad2c3..894742c42 100644 --- a/internal/test/testdata/server/playground/test/pgt_case_00.yaml +++ b/internal/test/testdata/server/playground/test/pgt_case_00.yaml @@ -34,7 +34,7 @@ playgroundTest: [ { "file": "policy_04_test.yaml", - "name": "album:object resource policy tests", + "name": "album_object resource policy tests", "testCases": [ { diff --git a/internal/test/testdata/store/derived_roles/derived_roles_01.yaml b/internal/test/testdata/store/derived_roles/derived_roles_01.yaml index 873beca48..1c9cb549c 100644 --- a/internal/test/testdata/store/derived_roles/derived_roles_01.yaml +++ b/internal/test/testdata/store/derived_roles/derived_roles_01.yaml @@ -21,3 +21,6 @@ derivedRoles: condition: match: expr: request.principal.attr.reader == true + + - name: kube_user + parentRoles: ["system:basic_user"] diff --git a/internal/test/testdata/store/principal_policies/policy_06.yaml b/internal/test/testdata/store/principal_policies/policy_06.yaml new file mode 100644 index 000000000..db333e538 --- /dev/null +++ b/internal/test/testdata/store/principal_policies/policy_06.yaml @@ -0,0 +1,11 @@ +# yaml-language-server: $schema=../../../../../schema/jsonschema/cerbos/policy/v1/Policy.schema.json +--- +apiVersion: api.cerbos.dev/v1 +principalPolicy: + principal: arn:aws:iam::123456789012:user/johndoe + version: default + rules: + - resource: arn:aws:sns:us-east-1:123456789012:topic-a + actions: + - action: write + effect: EFFECT_ALLOW diff --git a/internal/test/testdata/store/resource_policies/policy_11.yaml b/internal/test/testdata/store/resource_policies/policy_11.yaml new file mode 100644 index 000000000..769d19a3c --- /dev/null +++ b/internal/test/testdata/store/resource_policies/policy_11.yaml @@ -0,0 +1,19 @@ +# yaml-language-server: $schema=../../../../../schema/jsonschema/cerbos/policy/v1/Policy.schema.json +--- +apiVersion: api.cerbos.dev/v1 +resourcePolicy: + version: default + resource: arn:aws:sns:us-east-1:123456789012:topic-a + importDerivedRoles: + - alpha + rules: + - actions: + - use + effect: EFFECT_ALLOW + derivedRoles: + - kube_user + + - actions: + - read + effect: EFFECT_ALLOW + roles: ["system:ro_user"] diff --git a/internal/test/testdata/store/tests/policy_04_test.yaml b/internal/test/testdata/store/tests/policy_04_test.yaml index 7d157b81f..a45ebad7f 100644 --- a/internal/test/testdata/store/tests/policy_04_test.yaml +++ b/internal/test/testdata/store/tests/policy_04_test.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=../../../../../schema/jsonschema/cerbos/policy/v1/TestSuite.schema.json --- -name: album:object resource policy tests +name: album_object resource policy tests principals: user: @@ -11,7 +11,7 @@ principals: resources: album: id: album - kind: album:object + kind: album_object attr: public: true diff --git a/internal/test/testdata/store_archive/policies.tar b/internal/test/testdata/store_archive/policies.tar index f2c2cd56b..8fb948be9 100644 --- a/internal/test/testdata/store_archive/policies.tar +++ b/internal/test/testdata/store_archive/policies.tar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79322a54aab09a790f4d06b74a8f023f0f20a9b66d3b51e316f9b8ae874cdbd6 +oid sha256:620844e6939e5a69137572821f050df8bbe41f574c06dd91dc040432230147b5 size 37888 diff --git a/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry.schema.json b/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry.schema.json index 0033b9d70..3e4d72237 100644 --- a/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry.schema.json +++ b/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry.schema.json @@ -272,8 +272,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", @@ -344,7 +343,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -375,8 +374,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry/CheckResources.schema.json b/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry/CheckResources.schema.json index 6a26cd499..40174e5c3 100644 --- a/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry/CheckResources.schema.json +++ b/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry/CheckResources.schema.json @@ -142,7 +142,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -173,8 +173,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry/PlanResources.schema.json b/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry/PlanResources.schema.json index 6f55d63fe..0f7cd186a 100644 --- a/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry/PlanResources.schema.json +++ b/schema/jsonschema/cerbos/audit/v1/DecisionLogEntry/PlanResources.schema.json @@ -104,8 +104,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", @@ -176,7 +175,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/engine/v1/CheckInput.schema.json b/schema/jsonschema/cerbos/engine/v1/CheckInput.schema.json index 3b5e5009d..d528280de 100644 --- a/schema/jsonschema/cerbos/engine/v1/CheckInput.schema.json +++ b/schema/jsonschema/cerbos/engine/v1/CheckInput.schema.json @@ -40,7 +40,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -71,8 +71,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/engine/v1/PlanResourcesInput.schema.json b/schema/jsonschema/cerbos/engine/v1/PlanResourcesInput.schema.json index ddb576c54..3ed4dd8b0 100644 --- a/schema/jsonschema/cerbos/engine/v1/PlanResourcesInput.schema.json +++ b/schema/jsonschema/cerbos/engine/v1/PlanResourcesInput.schema.json @@ -29,8 +29,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", @@ -68,7 +67,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/engine/v1/PlanResourcesInput/Resource.schema.json b/schema/jsonschema/cerbos/engine/v1/PlanResourcesInput/Resource.schema.json index 7f528b930..5226707eb 100644 --- a/schema/jsonschema/cerbos/engine/v1/PlanResourcesInput/Resource.schema.json +++ b/schema/jsonschema/cerbos/engine/v1/PlanResourcesInput/Resource.schema.json @@ -21,8 +21,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/engine/v1/Principal.schema.json b/schema/jsonschema/cerbos/engine/v1/Principal.schema.json index 5960668a3..2222209e0 100644 --- a/schema/jsonschema/cerbos/engine/v1/Principal.schema.json +++ b/schema/jsonschema/cerbos/engine/v1/Principal.schema.json @@ -32,7 +32,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/engine/v1/Resource.schema.json b/schema/jsonschema/cerbos/engine/v1/Resource.schema.json index de30fb1a2..b3aa72b44 100644 --- a/schema/jsonschema/cerbos/engine/v1/Resource.schema.json +++ b/schema/jsonschema/cerbos/engine/v1/Resource.schema.json @@ -26,8 +26,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/policy/v1/DerivedRoles.schema.json b/schema/jsonschema/cerbos/policy/v1/DerivedRoles.schema.json index fb8b61171..a4ad85eca 100644 --- a/schema/jsonschema/cerbos/policy/v1/DerivedRoles.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/DerivedRoles.schema.json @@ -119,7 +119,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/policy/v1/Policy.schema.json b/schema/jsonschema/cerbos/policy/v1/Policy.schema.json index c4cdee3cd..ca7956b20 100644 --- a/schema/jsonschema/cerbos/policy/v1/Policy.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/Policy.schema.json @@ -197,8 +197,7 @@ "properties": { "principal": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--\\.0-9@-Z_a-z]*(:[A-Za-z][\\--\\.0-9@-Z_a-z]*)*$" + "minLength": 1 }, "rules": { "type": "array", @@ -289,8 +288,7 @@ }, "resource": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "rules": { "type": "array", @@ -360,7 +358,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "uniqueItems": true } @@ -385,7 +383,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/policy/v1/PrincipalPolicy.schema.json b/schema/jsonschema/cerbos/policy/v1/PrincipalPolicy.schema.json index 50bbd3353..34ba49545 100644 --- a/schema/jsonschema/cerbos/policy/v1/PrincipalPolicy.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/PrincipalPolicy.schema.json @@ -191,8 +191,7 @@ "properties": { "principal": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--\\.0-9@-Z_a-z]*(:[A-Za-z][\\--\\.0-9@-Z_a-z]*)*$" + "minLength": 1 }, "rules": { "type": "array", diff --git a/schema/jsonschema/cerbos/policy/v1/ResourcePolicy.schema.json b/schema/jsonschema/cerbos/policy/v1/ResourcePolicy.schema.json index 4ca3fe4d1..639e48dbb 100644 --- a/schema/jsonschema/cerbos/policy/v1/ResourcePolicy.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/ResourcePolicy.schema.json @@ -155,7 +155,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "uniqueItems": true } @@ -245,8 +245,7 @@ }, "resource": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "rules": { "type": "array", diff --git a/schema/jsonschema/cerbos/policy/v1/ResourceRule.schema.json b/schema/jsonschema/cerbos/policy/v1/ResourceRule.schema.json index 77ed039ef..048a4b598 100644 --- a/schema/jsonschema/cerbos/policy/v1/ResourceRule.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/ResourceRule.schema.json @@ -155,7 +155,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "uniqueItems": true } diff --git a/schema/jsonschema/cerbos/policy/v1/RoleDef.schema.json b/schema/jsonschema/cerbos/policy/v1/RoleDef.schema.json index e9e7073b2..73557df82 100644 --- a/schema/jsonschema/cerbos/policy/v1/RoleDef.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/RoleDef.schema.json @@ -119,7 +119,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/policy/v1/Test.schema.json b/schema/jsonschema/cerbos/policy/v1/Test.schema.json index d8fcc25fe..c42e583ee 100644 --- a/schema/jsonschema/cerbos/policy/v1/Test.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/Test.schema.json @@ -79,7 +79,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -110,8 +110,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/policy/v1/TestFixture/Principals.schema.json b/schema/jsonschema/cerbos/policy/v1/TestFixture/Principals.schema.json index 4fadf9a5a..d3d3d55ab 100644 --- a/schema/jsonschema/cerbos/policy/v1/TestFixture/Principals.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/TestFixture/Principals.schema.json @@ -28,7 +28,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/policy/v1/TestFixture/Resources.schema.json b/schema/jsonschema/cerbos/policy/v1/TestFixture/Resources.schema.json index 117c9a092..c2791e67a 100644 --- a/schema/jsonschema/cerbos/policy/v1/TestFixture/Resources.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/TestFixture/Resources.schema.json @@ -22,8 +22,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/policy/v1/TestSuite.schema.json b/schema/jsonschema/cerbos/policy/v1/TestSuite.schema.json index cb53676de..28b3cd407 100644 --- a/schema/jsonschema/cerbos/policy/v1/TestSuite.schema.json +++ b/schema/jsonschema/cerbos/policy/v1/TestSuite.schema.json @@ -61,7 +61,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -92,8 +92,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/request/v1/AddOrUpdatePolicyRequest.schema.json b/schema/jsonschema/cerbos/request/v1/AddOrUpdatePolicyRequest.schema.json index ea982c09b..e8e7da5f2 100644 --- a/schema/jsonschema/cerbos/request/v1/AddOrUpdatePolicyRequest.schema.json +++ b/schema/jsonschema/cerbos/request/v1/AddOrUpdatePolicyRequest.schema.json @@ -272,8 +272,7 @@ "properties": { "principal": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--\\.0-9@-Z_a-z]*(:[A-Za-z][\\--\\.0-9@-Z_a-z]*)*$" + "minLength": 1 }, "rules": { "type": "array", @@ -364,8 +363,7 @@ }, "resource": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "rules": { "type": "array", @@ -435,7 +433,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "uniqueItems": true } @@ -460,7 +458,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/request/v1/CheckResourceBatchRequest.schema.json b/schema/jsonschema/cerbos/request/v1/CheckResourceBatchRequest.schema.json index cec922c1c..61cf0df9b 100644 --- a/schema/jsonschema/cerbos/request/v1/CheckResourceBatchRequest.schema.json +++ b/schema/jsonschema/cerbos/request/v1/CheckResourceBatchRequest.schema.json @@ -28,7 +28,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -59,8 +59,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/request/v1/CheckResourceBatchRequest/BatchEntry.schema.json b/schema/jsonschema/cerbos/request/v1/CheckResourceBatchRequest/BatchEntry.schema.json index 59b147ed3..6e335c447 100644 --- a/schema/jsonschema/cerbos/request/v1/CheckResourceBatchRequest/BatchEntry.schema.json +++ b/schema/jsonschema/cerbos/request/v1/CheckResourceBatchRequest/BatchEntry.schema.json @@ -22,8 +22,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/request/v1/CheckResourceSetRequest.schema.json b/schema/jsonschema/cerbos/request/v1/CheckResourceSetRequest.schema.json index 9f9f2d4d0..29a85d586 100644 --- a/schema/jsonschema/cerbos/request/v1/CheckResourceSetRequest.schema.json +++ b/schema/jsonschema/cerbos/request/v1/CheckResourceSetRequest.schema.json @@ -28,7 +28,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -93,8 +93,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/request/v1/CheckResourcesRequest.schema.json b/schema/jsonschema/cerbos/request/v1/CheckResourcesRequest.schema.json index c10600e0c..5084d7ccc 100644 --- a/schema/jsonschema/cerbos/request/v1/CheckResourcesRequest.schema.json +++ b/schema/jsonschema/cerbos/request/v1/CheckResourcesRequest.schema.json @@ -28,7 +28,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -59,8 +59,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/request/v1/CheckResourcesRequest/ResourceEntry.schema.json b/schema/jsonschema/cerbos/request/v1/CheckResourcesRequest/ResourceEntry.schema.json index a9827aa1d..5aafbef91 100644 --- a/schema/jsonschema/cerbos/request/v1/CheckResourcesRequest/ResourceEntry.schema.json +++ b/schema/jsonschema/cerbos/request/v1/CheckResourcesRequest/ResourceEntry.schema.json @@ -22,8 +22,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/request/v1/PlanResourcesRequest.schema.json b/schema/jsonschema/cerbos/request/v1/PlanResourcesRequest.schema.json index 6a26681e5..a3865ba01 100644 --- a/schema/jsonschema/cerbos/request/v1/PlanResourcesRequest.schema.json +++ b/schema/jsonschema/cerbos/request/v1/PlanResourcesRequest.schema.json @@ -17,8 +17,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", @@ -56,7 +55,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/request/v1/PlaygroundEvaluateRequest.schema.json b/schema/jsonschema/cerbos/request/v1/PlaygroundEvaluateRequest.schema.json index 5bbc64e8d..48a7a7ff2 100644 --- a/schema/jsonschema/cerbos/request/v1/PlaygroundEvaluateRequest.schema.json +++ b/schema/jsonschema/cerbos/request/v1/PlaygroundEvaluateRequest.schema.json @@ -28,7 +28,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -59,8 +59,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/request/v1/PlaygroundProxyRequest.schema.json b/schema/jsonschema/cerbos/request/v1/PlaygroundProxyRequest.schema.json index e9f13b88f..d3a989a55 100644 --- a/schema/jsonschema/cerbos/request/v1/PlaygroundProxyRequest.schema.json +++ b/schema/jsonschema/cerbos/request/v1/PlaygroundProxyRequest.schema.json @@ -17,8 +17,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", @@ -56,7 +55,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -87,8 +86,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", @@ -347,8 +345,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/request/v1/ResourceSet.schema.json b/schema/jsonschema/cerbos/request/v1/ResourceSet.schema.json index 2846bf46c..c24b8e3bc 100644 --- a/schema/jsonschema/cerbos/request/v1/ResourceSet.schema.json +++ b/schema/jsonschema/cerbos/request/v1/ResourceSet.schema.json @@ -35,8 +35,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema/cerbos/response/v1/GetPolicyResponse.schema.json b/schema/jsonschema/cerbos/response/v1/GetPolicyResponse.schema.json index f23ade27b..e4b8b13a4 100644 --- a/schema/jsonschema/cerbos/response/v1/GetPolicyResponse.schema.json +++ b/schema/jsonschema/cerbos/response/v1/GetPolicyResponse.schema.json @@ -272,8 +272,7 @@ "properties": { "principal": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--\\.0-9@-Z_a-z]*(:[A-Za-z][\\--\\.0-9@-Z_a-z]*)*$" + "minLength": 1 }, "rules": { "type": "array", @@ -364,8 +363,7 @@ }, "resource": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "rules": { "type": "array", @@ -435,7 +433,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "uniqueItems": true } @@ -460,7 +458,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^([\\--\\.0-9A-Z_a-z]+|\\*)$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true diff --git a/schema/jsonschema/cerbos/response/v1/ListAuditLogEntriesResponse.schema.json b/schema/jsonschema/cerbos/response/v1/ListAuditLogEntriesResponse.schema.json index 7f53ccefe..040d5aeb7 100644 --- a/schema/jsonschema/cerbos/response/v1/ListAuditLogEntriesResponse.schema.json +++ b/schema/jsonschema/cerbos/response/v1/ListAuditLogEntriesResponse.schema.json @@ -342,8 +342,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", @@ -414,7 +413,7 @@ "type": "array", "items": { "type": "string", - "pattern": "^[\\--\\.0-9A-Z_a-z]+$" + "minLength": 1 }, "minItems": 1, "uniqueItems": true @@ -445,8 +444,7 @@ }, "kind": { "type": "string", - "minLength": 1, - "pattern": "^[A-Za-z][\\--9@-Z_a-z]*(:[A-Za-z][\\--9@-Z_a-z]*)*$" + "minLength": 1 }, "policyVersion": { "type": "string", diff --git a/schema/jsonschema_test.go b/schema/jsonschema_test.go index 7510be5a7..dab34183a 100644 --- a/schema/jsonschema_test.go +++ b/schema/jsonschema_test.go @@ -135,10 +135,10 @@ func TestValidatePoliciesWithJSONSchema(t *testing.T) { valid: false, }, { - title: "invalid principal policy: principal doesn't match pattern", + title: "invalid principal policy: empty principal", policy: func() interface{} { policy := test.GenPrincipalPolicy(test.NoMod()) - policy.GetPrincipalPolicy().Principal = "?" + policy.GetPrincipalPolicy().Principal = "" return jsonify(t, policy) }(), valid: false, @@ -198,10 +198,10 @@ func TestValidatePoliciesWithJSONSchema(t *testing.T) { valid: false, }, { - title: "invalid resource policy: resource doesn't match pattern", + title: "invalid resource policy: empty kind", policy: func() interface{} { policy := test.GenResourcePolicy(test.NoMod()) - policy.GetResourcePolicy().Resource = "?" + policy.GetResourcePolicy().Resource = "" return jsonify(t, policy) }(), valid: false, @@ -288,10 +288,10 @@ func TestValidatePoliciesWithJSONSchema(t *testing.T) { valid: false, }, { - title: "invalid resource policy: rule role doesn't match pattern", + title: "invalid resource policy: rule role is empty", policy: func() interface{} { policy := test.GenResourcePolicy(test.NoMod()) - policy.GetResourcePolicy().Rules[0].Roles = []string{"?"} + policy.GetResourcePolicy().Rules[0].Roles = []string{""} return jsonify(t, policy) }(), valid: false, diff --git a/schema/openapiv2/cerbos/svc/v1/svc.swagger.json b/schema/openapiv2/cerbos/svc/v1/svc.swagger.json index 694430ae9..c01c8d8cb 100644 --- a/schema/openapiv2/cerbos/svc/v1/svc.swagger.json +++ b/schema/openapiv2/cerbos/svc/v1/svc.swagger.json @@ -1080,8 +1080,7 @@ "kind": { "type": "string", "example": "album:photo", - "description": "Name of the resource kind being accessed.", - "pattern": "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" + "description": "Name of the resource kind being accessed." }, "policyVersion": { "type": "string", @@ -1612,7 +1611,6 @@ ], "items": { "type": "string", - "pattern": "^[[:word:]\\-\\.]+$", "uniqueItems": true }, "description": "Roles assigned to this principal from your identity management system.", @@ -1645,8 +1643,7 @@ "kind": { "type": "string", "example": "album:photo", - "description": "Name of the resource kind being accessed.", - "pattern": "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" + "description": "Name of the resource kind being accessed." }, "policyVersion": { "type": "string", @@ -2643,8 +2640,7 @@ "kind": { "type": "string", "example": "album:object", - "description": "Resource kind.", - "pattern": "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" + "description": "Resource kind." }, "attr": { "type": "object", @@ -2750,8 +2746,7 @@ "resourceKind": { "type": "string", "example": "album:object", - "description": "Resource kind.", - "pattern": "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" + "description": "Resource kind." }, "policyVersion": { "type": "string", @@ -3058,8 +3053,7 @@ "kind": { "type": "string", "example": "album:object", - "description": "Resource kind.", - "pattern": "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" + "description": "Resource kind." }, "policyVersion": { "type": "string",