Full Code of mercari/grpc-federation for AI

main 11eafa3a8396 cached
814 files
8.1 MB
2.2M tokens
16463 symbols
1 requests
Download .txt
Showing preview only (8,613K chars total). Download the full file or copy to clipboard to get everything.
Repository: mercari/grpc-federation
Branch: main
Commit: 11eafa3a8396
Files: 814
Total size: 8.1 MB

Directory structure:
gitextract_vzvj21ua/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── pull_request_template.md
│   └── workflows/
│       ├── buf.yml
│       ├── lint.yml
│       ├── release-jetbrains.yml
│       ├── release-vscode.yml
│       └── test.yml
├── .gitignore
├── .golangci.yml
├── .goreleaser.yaml
├── .octocov.yml
├── .vscode/
│   └── settings.json
├── LICENSE
├── Makefile
├── README.md
├── _examples/
│   ├── 01_minimum/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc-federation.yaml
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       └── federation/
│   │           └── federation.proto
│   ├── 02_simple/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc-federation.yaml
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   └── federation.proto
│   │   │   ├── post/
│   │   │   │   └── post.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 03_custom_resolver/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   ├── federation_grpc_federation.pb.go
│   │   │   ├── other.pb.go
│   │   │   └── other_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   ├── federation.proto
│   │   │   │   └── other.proto
│   │   │   ├── post/
│   │   │   │   └── post.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 04_timeout/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── grpc-federation.yaml
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 05_async/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       └── federation/
│   │           └── federation.proto
│   ├── 06_alias/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   ├── post_grpc.pb.go
│   │   │   └── v2/
│   │   │       ├── extra.pb.go
│   │   │       ├── post.pb.go
│   │   │       └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           ├── post.proto
│   │           └── v2/
│   │               ├── extra.proto
│   │               └── post.proto
│   ├── 07_autobind/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 08_literal/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── content/
│   │   │   ├── content.pb.go
│   │   │   └── content_grpc.pb.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── content/
│   │       │   └── content.proto
│   │       └── federation/
│   │           └── federation.proto
│   ├── 09_multi_user/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   └── federation.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 10_oneof/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   └── federation.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 11_multi_service/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── comment/
│   │   │   └── comment.pb.go
│   │   ├── favorite/
│   │   │   └── favorite.pb.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   ├── federation_grpc_federation.pb.go
│   │   │   ├── other.pb.go
│   │   │   ├── other_grpc.pb.go
│   │   │   ├── other_grpc_federation.pb.go
│   │   │   ├── ping.pb.go
│   │   │   ├── ping_grpc_federation.pb.go
│   │   │   ├── reaction.pb.go
│   │   │   └── reaction_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── grpc-federation.yaml
│   │   ├── like/
│   │   │   └── like.pb.go
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── comment/
│   │       │   └── comment.proto
│   │       ├── favorite/
│   │       │   └── favorite.proto
│   │       └── federation/
│   │           ├── federation.proto
│   │           ├── other.proto
│   │           └── reaction.proto
│   ├── 12_validation/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       └── federation/
│   │           └── federation.proto
│   ├── 13_map/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   └── federation.proto
│   │   │   ├── post/
│   │   │   │   └── post.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 14_condition/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 15_cel_plugin/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── cmd/
│   │   │   └── plugin/
│   │   │       └── main.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── plugin/
│   │   │   ├── plugin.pb.go
│   │   │   └── plugin_grpc_federation.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── plugin/
│   │           └── plugin.proto
│   ├── 16_code_gen_plugin/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.work.yaml
│   │   ├── cmd/
│   │   │   ├── config/
│   │   │   │   └── main.go
│   │   │   └── plugin/
│   │   │       ├── main.go
│   │   │       └── resolver.go.tmpl
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   └── federation/
│   │   │       └── federation.proto
│   │   └── resolver_test.go
│   ├── 17_error_handler/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       ├── federation.pb.go
│   │   │       ├── generator.pb.go
│   │   │       └── plugin.pb.go
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 18_load/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── cmd/
│   │   │   └── plugin/
│   │   │       └── main.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── plugin/
│   │   │   ├── plugin.pb.go
│   │   │   └── plugin_grpc_federation.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── plugin/
│   │           └── plugin.proto
│   ├── 19_retry/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 20_callopt/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc-federation.yaml
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 21_wasm_net/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── cmd/
│   │   │   └── plugin/
│   │   │       └── main.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── plugin/
│   │   │   ├── plugin.pb.go
│   │   │   └── plugin_grpc_federation.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── plugin/
│   │           └── plugin.proto
│   └── 22_switch/
│       ├── .gitignore
│       ├── Makefile
│       ├── buf.gen.yaml
│       ├── buf.work.yaml
│       ├── federation/
│       │   ├── federation.pb.go
│       │   ├── federation_grpc.pb.go
│       │   └── federation_grpc_federation.pb.go
│       ├── go.mod
│       ├── go.sum
│       ├── grpc/
│       │   └── federation/
│       │       └── federation.pb.go
│       ├── grpc-federation.yaml
│       ├── main_test.go
│       └── proto/
│           ├── buf.yaml
│           └── federation/
│               └── federation.proto
├── buf.gen.yaml
├── buf.work.yaml
├── cmd/
│   ├── grpc-federation-generator/
│   │   └── main.go
│   ├── grpc-federation-language-server/
│   │   ├── README.md
│   │   └── main.go
│   ├── grpc-federation-linter/
│   │   └── main.go
│   ├── grpc-federation-mcp-server/
│   │   ├── assets/
│   │   │   └── docs.md
│   │   └── main.go
│   ├── grpcfedctl/
│   │   ├── main.go
│   │   ├── plugin.go
│   │   └── version.go
│   └── protoc-gen-grpc-federation/
│       └── main.go
├── compiler/
│   ├── compiler.go
│   ├── compiler_test.go
│   └── testdata/
│       ├── post.proto
│       ├── service.proto
│       └── user.proto
├── demo/
│   ├── Makefile
│   ├── README.md
│   ├── buf.gen.yaml
│   ├── buf.work.yaml
│   ├── cmd/
│   │   ├── film/
│   │   │   └── main.go
│   │   ├── person/
│   │   │   └── main.go
│   │   ├── planet/
│   │   │   └── main.go
│   │   ├── species/
│   │   │   └── main.go
│   │   ├── starship/
│   │   │   └── main.go
│   │   ├── swapi/
│   │   │   └── main.go
│   │   └── vehicle/
│   │       └── main.go
│   ├── compose.yaml
│   ├── go.mod
│   ├── go.sum
│   ├── proto/
│   │   ├── buf.yaml
│   │   ├── film/
│   │   │   └── film.proto
│   │   ├── person/
│   │   │   └── person.proto
│   │   ├── planet/
│   │   │   └── planet.proto
│   │   ├── species/
│   │   │   └── species.proto
│   │   ├── starship/
│   │   │   └── starship.proto
│   │   ├── swapi.proto
│   │   └── vehicle/
│   │       └── vehicle.proto
│   ├── services/
│   │   ├── film/
│   │   │   ├── film.go
│   │   │   └── film_test.go
│   │   ├── person/
│   │   │   ├── person.go
│   │   │   └── person_test.go
│   │   ├── planet/
│   │   │   ├── planet.go
│   │   │   └── planet_test.go
│   │   ├── species/
│   │   │   ├── species.go
│   │   │   └── species_test.go
│   │   ├── starship/
│   │   │   ├── starship.go
│   │   │   └── starship_test.go
│   │   └── vehicle/
│   │       ├── vehicle.go
│   │       └── vehicle_test.go
│   ├── swapi/
│   │   ├── film/
│   │   │   ├── film.pb.go
│   │   │   └── film_grpc.pb.go
│   │   ├── person/
│   │   │   ├── person.pb.go
│   │   │   └── person_grpc.pb.go
│   │   ├── planet/
│   │   │   ├── planet.pb.go
│   │   │   └── planet_grpc.pb.go
│   │   ├── species/
│   │   │   ├── species.pb.go
│   │   │   └── species_grpc.pb.go
│   │   ├── starship/
│   │   │   ├── starship.pb.go
│   │   │   └── starship_grpc.pb.go
│   │   ├── swapi/
│   │   │   ├── swapi.pb.go
│   │   │   ├── swapi_grpc.pb.go
│   │   │   └── swapi_grpc_federation.pb.go
│   │   └── vehicle/
│   │       ├── vehicle.pb.go
│   │       └── vehicle_grpc.pb.go
│   └── util/
│       └── util.go
├── docs/
│   ├── cel/
│   │   ├── any.md
│   │   ├── enum.md
│   │   ├── list.md
│   │   ├── log.md
│   │   ├── math.md
│   │   ├── metadata.md
│   │   ├── rand.md
│   │   ├── regexp.md
│   │   ├── strings.md
│   │   ├── time.md
│   │   ├── url.md
│   │   └── uuid.md
│   ├── cel.md
│   ├── cel_plugin.md
│   ├── code_generation_plugin.md
│   ├── getting_started.md
│   ├── installation.md
│   └── references.md
├── generator/
│   ├── code_generator.go
│   ├── code_generator_test.go
│   ├── config.go
│   ├── funcs.go
│   ├── funcs_test.go
│   ├── generator.go
│   ├── generator_test.go
│   ├── plugin_option_test.go
│   ├── protoc_gen_go_grpc.go
│   ├── templates/
│   │   ├── cast.go.tmpl
│   │   ├── error_handler.go.tmpl
│   │   ├── eval.go.tmpl
│   │   ├── plugin.go.tmpl
│   │   ├── retry.go.tmpl
│   │   ├── server.go.tmpl
│   │   ├── switch.go.tmpl
│   │   └── validation.go.tmpl
│   ├── testdata/
│   │   ├── expected_alias.go
│   │   ├── expected_alias_multifile.go
│   │   ├── expected_async.go
│   │   ├── expected_autobind.go
│   │   ├── expected_condition.go
│   │   ├── expected_create_post.go
│   │   ├── expected_custom_resolver.go
│   │   ├── expected_env.go
│   │   ├── expected_error_handler.go
│   │   ├── expected_inline_env.go
│   │   ├── expected_map.go
│   │   ├── expected_minimum.go
│   │   ├── expected_multi_user.go
│   │   ├── expected_oneof.go
│   │   ├── expected_ref_env.go
│   │   ├── expected_resolver_overlaps.go
│   │   ├── expected_simple_aggregation.go
│   │   ├── expected_switch.go
│   │   └── expected_validation.go
│   ├── wasm.go
│   └── watcher.go
├── go.mod
├── go.sum
├── grpc/
│   └── federation/
│       ├── alias.go
│       ├── cast.go
│       ├── cel/
│       │   ├── any.go
│       │   ├── any_test.go
│       │   ├── bind.go
│       │   ├── bind_test.go
│       │   ├── cast.go
│       │   ├── cast_test.go
│       │   ├── context.go
│       │   ├── conv.go
│       │   ├── enum.go
│       │   ├── lib.go
│       │   ├── list.go
│       │   ├── list_test.go
│       │   ├── log.go
│       │   ├── log_test.go
│       │   ├── math.go
│       │   ├── math_test.go
│       │   ├── metadata.go
│       │   ├── metadata_test.go
│       │   ├── plugin/
│       │   │   └── plugin.pb.go
│       │   ├── plugin.go
│       │   ├── plugin_test.go
│       │   ├── private.pb.go
│       │   ├── rand.go
│       │   ├── rand_test.go
│       │   ├── regexp.go
│       │   ├── regexp_test.go
│       │   ├── strings.go
│       │   ├── strings_test.go
│       │   ├── testdata/
│       │   │   ├── Makefile
│       │   │   ├── plugin/
│       │   │   │   └── main.go
│       │   │   ├── test.proto
│       │   │   └── testpb/
│       │   │       └── test.pb.go
│       │   ├── time.go
│       │   ├── time.pb.go
│       │   ├── time_test.go
│       │   ├── url.go
│       │   ├── url.pb.go
│       │   ├── url_test.go
│       │   ├── uuid.go
│       │   └── uuid_test.go
│       ├── cel.go
│       ├── cel_plugin.go
│       ├── const.go
│       ├── context.go
│       ├── custom_resolver.go
│       ├── error.go
│       ├── federation.pb.go
│       ├── generator/
│       │   ├── decode.go
│       │   ├── encode.go
│       │   ├── generator_test.go
│       │   ├── plugin/
│       │   │   └── generator.pb.go
│       │   └── types.go
│       ├── lib.go
│       ├── log/
│       │   └── context.go
│       ├── net/
│       │   ├── net.go
│       │   └── other.go
│       ├── otel.go
│       ├── plugin.go
│       ├── plugin_wasip1.go
│       ├── trace/
│       │   ├── alias.go
│       │   └── context.go
│       ├── validation.go
│       ├── version.go
│       └── version_test.go
├── internal/
│   └── testutil/
│       ├── builder.go
│       ├── cmpopt.go
│       └── compiler.go
├── lsp/
│   ├── client/
│   │   ├── jetbrains/
│   │   │   ├── .gitignore
│   │   │   ├── .run/
│   │   │   │   ├── Run IDE for UI Tests.run.xml
│   │   │   │   ├── Run Plugin.run.xml
│   │   │   │   ├── Run Qodana.run.xml
│   │   │   │   ├── Run Tests.run.xml
│   │   │   │   └── Run Verifications.run.xml
│   │   │   ├── CHANGELOG.md
│   │   │   ├── README.md
│   │   │   ├── build.gradle.kts
│   │   │   ├── gradle/
│   │   │   │   ├── libs.versions.toml
│   │   │   │   └── wrapper/
│   │   │   │       ├── gradle-wrapper.jar
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   ├── gradlew
│   │   │   ├── gradlew.bat
│   │   │   ├── qodana.yml
│   │   │   ├── settings.gradle.kts
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── kotlin/
│   │   │           │   └── com/
│   │   │           │       └── github/
│   │   │           │           └── mercari/
│   │   │           │               └── grpcfederation/
│   │   │           │                   ├── GrpcFederationBundle.kt
│   │   │           │                   ├── lsp/
│   │   │           │                   │   └── GrpcFederationLspServerSupportProvider.kt
│   │   │           │                   └── settings/
│   │   │           │                       ├── ImportPathTableModel.kt
│   │   │           │                       ├── PathUtils.kt
│   │   │           │                       ├── ProjectSettingsConfigurable.kt
│   │   │           │                       ├── ProjectSettingsService.kt
│   │   │           │                       └── impl/
│   │   │           │                           └── ProjectSettingsServiceImpl.kt
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── plugin.xml
│   │   │               └── messages/
│   │   │                   └── GrpcFederationBundle.properties
│   │   └── vscode/
│   │       ├── .eslintignore
│   │       ├── .eslintrc.js
│   │       ├── .gitignore
│   │       ├── .vscode/
│   │       │   ├── extensions.json
│   │       │   ├── launch.json
│   │       │   ├── settings.json
│   │       │   └── tasks.json
│   │       ├── .vscodeignore
│   │       ├── LICENSE
│   │       ├── README.md
│   │       ├── package.json
│   │       ├── src/
│   │       │   ├── constants.ts
│   │       │   └── extension.ts
│   │       └── tsconfig.json
│   └── server/
│       ├── completion.go
│       ├── completion_test.go
│       ├── definition.go
│       ├── general.go
│       ├── handler.go
│       ├── handler_test.go
│       ├── semantic_tokens.go
│       ├── semantic_tokens_test.go
│       ├── server.go
│       ├── testdata/
│       │   ├── completion.proto
│       │   ├── post.proto
│       │   ├── service.proto
│       │   └── user.proto
│       ├── text_document_sync.go
│       ├── util.go
│       └── validator.go
├── proto/
│   ├── buf.yaml
│   └── grpc/
│       └── federation/
│           ├── embed.go
│           ├── federation.proto
│           ├── generator.proto
│           ├── plugin.proto
│           ├── private.proto
│           ├── time.proto
│           └── url.proto
├── proto_deps/
│   └── google/
│       ├── api/
│       │   └── expr/
│       │       └── v1alpha1/
│       │           ├── checked.proto
│       │           └── syntax.proto
│       └── rpc/
│           ├── code.proto
│           ├── embed.go
│           └── error_details.proto
├── resolver/
│   ├── candidates.go
│   ├── candidates_test.go
│   ├── cel.go
│   ├── cel_test.go
│   ├── context.go
│   ├── def.go
│   ├── enum.go
│   ├── error.go
│   ├── extension.go
│   ├── field.go
│   ├── file.go
│   ├── file_test.go
│   ├── format.go
│   ├── format_test.go
│   ├── fqdn.go
│   ├── graph.go
│   ├── message.go
│   ├── method.go
│   ├── oneof.go
│   ├── resolver.go
│   ├── resolver_test.go
│   ├── service.go
│   ├── std_fd.go
│   ├── type_conversion.go
│   ├── types.go
│   ├── value.go
│   └── wellknown_types.go
├── source/
│   ├── clone.go
│   ├── file.go
│   ├── file_test.go
│   ├── location.go
│   ├── location_builder.go
│   ├── location_test.go
│   ├── testdata/
│   │   ├── coverage.proto
│   │   ├── post.proto
│   │   ├── service.proto
│   │   ├── switch.proto
│   │   └── user.proto
│   ├── type_helper.go
│   └── type_helper_test.go
├── testdata/
│   ├── alias.proto
│   ├── alias_multifile.proto
│   ├── async.proto
│   ├── autobind.proto
│   ├── condition.proto
│   ├── content.proto
│   ├── create_post.proto
│   ├── custom_resolver.proto
│   ├── dependency_base_message.proto
│   ├── dependency_child_message.proto
│   ├── dependency_message_argument.proto
│   ├── dependency_method_response.proto
│   ├── dependency_oneof.proto
│   ├── dependency_service_variable.proto
│   ├── error_handler.proto
│   ├── inline_env.proto
│   ├── map.proto
│   ├── minimum.proto
│   ├── multi_user.proto
│   ├── nested_post.proto
│   ├── oneof.proto
│   ├── post.proto
│   ├── post_v2.proto
│   ├── post_v2_extra.proto
│   ├── ref_env.proto
│   ├── resolver_overlaps.proto
│   ├── simple_aggregation.proto
│   ├── switch.proto
│   ├── user.proto
│   └── validation.proto
├── types/
│   └── types.go
├── util/
│   └── name.go
└── validator/
    ├── testdata/
    │   ├── conflict_service_variable.proto
    │   ├── conflict_switch_case_variable.proto
    │   ├── conflict_switch_default_variable.proto
    │   ├── different_message_argument_type.proto
    │   ├── duplicated_variable_name.proto
    │   ├── echo.proto
    │   ├── empty_response_field.proto
    │   ├── invalid_autobind.proto
    │   ├── invalid_call_error_handler.proto
    │   ├── invalid_call_metadata.proto
    │   ├── invalid_call_option.proto
    │   ├── invalid_condition_type.proto
    │   ├── invalid_enum_alias_target.proto
    │   ├── invalid_enum_attribute.proto
    │   ├── invalid_enum_conversion.proto
    │   ├── invalid_enum_selector.proto
    │   ├── invalid_enum_value_noalias.proto
    │   ├── invalid_env.proto
    │   ├── invalid_error_variable.proto
    │   ├── invalid_field_option.proto
    │   ├── invalid_field_type.proto
    │   ├── invalid_field_type_by_switch.proto
    │   ├── invalid_file_import.proto
    │   ├── invalid_go_package.proto
    │   ├── invalid_list_sort.proto
    │   ├── invalid_map_iterator_src.proto
    │   ├── invalid_map_iterator_src_type.proto
    │   ├── invalid_message_alias.proto
    │   ├── invalid_message_alias_target.proto
    │   ├── invalid_message_argument.proto
    │   ├── invalid_message_field_alias.proto
    │   ├── invalid_message_map.proto
    │   ├── invalid_message_map_alias.proto
    │   ├── invalid_message_name.proto
    │   ├── invalid_method.proto
    │   ├── invalid_method_name.proto
    │   ├── invalid_method_request.proto
    │   ├── invalid_method_response.proto
    │   ├── invalid_method_response_option.proto
    │   ├── invalid_method_service_name.proto
    │   ├── invalid_method_timeout_format.proto
    │   ├── invalid_multi_alias.proto
    │   ├── invalid_multiple_env.proto
    │   ├── invalid_nested_message_field.proto
    │   ├── invalid_nested_message_name.proto
    │   ├── invalid_oneof.proto
    │   ├── invalid_oneof_selection.proto
    │   ├── invalid_retry.proto
    │   ├── invalid_service_variable_switch.proto
    │   ├── invalid_switch_case_by_type.proto
    │   ├── invalid_switch_case_if_type.proto
    │   ├── invalid_switch_default_by_type.proto
    │   ├── invalid_validation_bad_request.proto
    │   ├── invalid_validation_code.proto
    │   ├── invalid_validation_details_return_type.proto
    │   ├── invalid_validation_localized_message.proto
    │   ├── invalid_validation_message_argument.proto
    │   ├── invalid_validation_precondition_failure.proto
    │   ├── invalid_validation_return_type.proto
    │   ├── invalid_validation_with_ignore.proto
    │   ├── invalid_variable_name.proto
    │   ├── invalid_wrapper_type_conversion.proto
    │   ├── message_cyclic_dependency.proto
    │   ├── missing_enum_alias.proto
    │   ├── missing_enum_value.proto
    │   ├── missing_enum_value_alias.proto
    │   ├── missing_field_option.proto
    │   ├── missing_file_import.proto
    │   ├── missing_map_iterator.proto
    │   ├── missing_message_alias.proto
    │   ├── missing_message_field_alias.proto
    │   ├── missing_message_option.proto
    │   ├── missing_method_request_value.proto
    │   ├── missing_response_message_option.proto
    │   ├── missing_service_variable.proto
    │   ├── missing_switch_case.proto
    │   ├── missing_switch_default.proto
    │   ├── nested_list.proto
    │   ├── nested_message_cyclic_dependency.proto
    │   ├── nested_post.proto
    │   ├── nested_post2.proto
    │   ├── post.proto
    │   ├── recursive_message_name.proto
    │   ├── repeated_switch_default.proto
    │   ├── user.proto
    │   └── valid_enum_value_reference.proto
    ├── validator.go
    └── validator_test.go

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

** Related Components **
- [ ] protoc-gen-grpc-federation
- [ ] grpc-federation-linter
- [ ] grpc-federation-language-server
- [ ] grpc-federation-generator
- [ ] others

**To Reproduce**
Steps to reproduce the behavior.

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/pull_request_template.md
================================================


================================================
FILE: .github/workflows/buf.yml
================================================
name: buf
on:
  push:
    branches:
      - main
jobs:
  buf:
    name: push Buf modules to BSR
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: bufbuild/buf-action@v1
        with:
          format: false
          lint: false
          breaking: false
          pr_comment: false
          token: ${{ secrets.BUF_TOKEN }}
          input: proto


================================================
FILE: .github/workflows/lint.yml
================================================
name: lint
on:
  push:
    branches:
      - main
  pull_request:
jobs:
  lint:
    name: lint
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v4
      - uses: actions/setup-go@v4
        with:
          go-version-file: ./go.mod
      - name: install tools
        run: make tools
      - name: build tools
        run: make build
      - name: run lint
        run: make lint


================================================
FILE: .github/workflows/release-jetbrains.yml
================================================
name: release-jetbrains
on:
  push:
    tags:
      - "jetbrains/v*"

permissions:
  contents: write

jobs:
  release-jetbrains:
    name: release JetBrains plugin
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      # Set up Java environment for the next steps
      - uses: actions/setup-java@v4
        with:
          distribution: zulu
          java-version: 21
      # Setup Gradle
      - uses: gradle/actions/setup-gradle@v3
        with:
          gradle-home-cache-cleanup: true
      # Publish the plugin to JetBrains Marketplace
      - name: Publish Plugin
        env:
          PUBLISH_TOKEN: ${{ secrets.JET_BRAINS_PUBLISH_TOKEN }}
        run: ./gradlew publishPlugin
        working-directory: ./lsp/client/jetbrains

      # Upload artifact as a release asset
      - name: Upload Release Asset
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: gh release upload $GITHUB_REF_NAME ./build/distributions/*
        working-directory: ./lsp/client/jetbrains


================================================
FILE: .github/workflows/release-vscode.yml
================================================
name: release-vscode
on:
  push:
    tags:
      - "v*.*.*"

permissions:
  contents: write

jobs:
  release-vscode:
    name: release vscode extension
    runs-on: ubuntu-latest
    steps:
      - name: install npx
        run: |
          sudo apt-get update
          sudo apt-get install --no-install-recommends -y npm nodejs
          sudo npm -g install n
          sudo n stable
      - name: checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: actions/setup-go@v4
        with:
          go-version-file: ./go.mod
      - name: extract version from tags
        id: meta
        run: |
          echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/v}
      - name: run GoReleaser
        uses: goreleaser/goreleaser-action@v5
        with:
          distribution: goreleaser
          version: latest
          args: release --skip-publish --clean
      - name: build extension
        run: |
          make build/vscode-extension
        env:
          VERSION: ${{ steps.meta.outputs.VERSION }}
      - name: release
        uses: softprops/action-gh-release@v1
        with:
          draft: true
          generate_release_notes: true
          fail_on_unmatched_files: true
          files: |
            ./lsp/client/vscode/grpc-federation-*.vsix
            ./dist/grpc-federation_*_checksums.txt
            ./dist/grpc-federation_*_*_*.tar.gz
            ./dist/grpc-federation_*_*_*.zip
      - name: publish to Visual Studio Marketplace
        uses: HaaLeo/publish-vscode-extension@v1
        with:
          pat: ${{ secrets.AZURE_DEVOPS_ACCESS_TOKEN }}
          registryUrl: https://marketplace.visualstudio.com
          extensionFile: "./lsp/client/vscode/grpc-federation-${{ steps.meta.outputs.VERSION }}.vsix"


================================================
FILE: .github/workflows/test.yml
================================================
name: test
on:
  push:
    branches:
      - main
  pull_request:
jobs:
  build_and_generate:
    name: build and generate
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v4
      - uses: actions/setup-go@v4
        with:
          go-version-file: ./go.mod
      - name: install tools
        run: make tools
      - name: generate files
        run: make generate
      - name: check diff
        run: git diff --exit-code
  test:
    name: test
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v4
      - name: setup go
        uses: actions/setup-go@v4
        with:
          go-version-file: ./go.mod
      - name: install tools
        run: make tools
      - name: run test
        run: make test
      - name: report coverage
        uses: k1LoW/octocov-action@v1.4.0


================================================
FILE: .gitignore
================================================
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out
*.out.tmp

# Dependency directories (remove the comment below to include it)
# vendor/

.DS_Store
bin

dist/


================================================
FILE: .golangci.yml
================================================
# golangci-lint configuration file
# see: https://github.com/golangci/golangci/wiki/Configuration

run:
  timeout: 5m
  skip-dirs:
    - bin

linters-settings:

  govet:
    check-shadowing: true

  golint:
    min-confidence: 0

  goimports:
    local-prefixes: github.com/mercari/grpc-federation

  gocyclo:
    min-complexity: 10

  maligned:
    suggest-new: true

  depguard:
    list-type: blacklist
    include-go-root: false


  misspell:
    locale: US

  lll:
    line-length: 120

  nakedret:
    max-func-lines: 0

  gocritic:
    disabled-checks:
      - whyNoLint
      - wrapperFunc
      - ifElseChain
      - unnamedResult
      - paramTypeCombine
      - hugeParam
      - singleCaseSwitch
      - octalLiteral

    enabled-tags:
      - performance
      - style
      - experimental
  gci:
    sections:
      - "standard"
      - "default"
      - "prefix(github.com/mercari/grpc-federation)"
      - "blank"
      - "dot"

linters:
  enable:
    - bodyclose
    - rowserrcheck
    - stylecheck
    - gosec
    - unconvert
    - asciicheck
    - gofmt
    - goimports
    - misspell
    - unparam
    - dogsled
    - nakedret
    - gocritic
    - godox
    - whitespace
    - goprintffuncname
    - gomodguard
    - godot
    - nolintlint
    - asasalint
    - bidichk
    - durationcheck
    - importas
    - tagliatelle
    - tenv
    - gci
  disable:
    - maligned
    - prealloc
    - gochecknoglobals
    - wsl
    - testpackage
    - gocognit
    - depguard

# Configuration of issue rules
issues:
  # Excluding configuration per-path, per-linter, per-text and per-source
  exclude-rules:
    # Exclude lll issues for long lines with go:generate
    - linters:
        - lll
      source: "^//go:generate "

    # Exclude shadow checking on the variable named err and ctx
    - text: "shadow: declaration of \"(err|ctx)\""
      linters:
        - govet

    # Exclude godox check for TODOs, FIXMEs, and BUGs
    - text: "Line contains TODO/BUG/FIXME:"
      linters:
        - godox

    # Exclude some linters from running on tests files
    - path: suite_test\.go
      linters:
        - typecheck

================================================
FILE: .goreleaser.yaml
================================================
# This is an example .goreleaser.yml file with some sensible defaults.
# Make sure to check the documentation at https://goreleaser.com

# The lines bellow are called `modelines`. See `:help modeline`
# Feel free to remove those if you don't want/need to use them.
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
# vim: set ts=2 sw=2 tw=0 fo=cnqoj

before:
  hooks:
    # You may remove this if you don't use go modules.
    - go mod tidy
    # you may remove this if you don't need go generate
    - go generate ./...

builds:
  - id: grpc-federation-generator
    main: ./cmd/grpc-federation-generator
    binary: grpc-federation-generator
    env:
      - CGO_ENABLED=0
    goos:
      - linux
      - windows
      - darwin
  - id: grpc-federation-language-server
    main: ./cmd/grpc-federation-language-server
    binary: grpc-federation-language-server
    env:
      - CGO_ENABLED=0
    goos:
      - linux
      - windows
      - darwin
  - id: grpc-federation-linter
    main: ./cmd/grpc-federation-linter
    binary: grpc-federation-linter
    env:
      - CGO_ENABLED=0
    goos:
      - linux
      - windows
      - darwin
  - id: protoc-gen-grpc-federation
    main: ./cmd/protoc-gen-grpc-federation
    binary: protoc-gen-grpc-federation
    env:
      - CGO_ENABLED=0
    goos:
      - linux
      - windows
      - darwin

archives:
  - format: tar.gz
    format_overrides:
      - goos: windows
        format: zip

changelog:
  sort: asc
  filters:
    exclude:
      - "^docs:"
      - "^test:"


================================================
FILE: .octocov.yml
================================================
coverage:
  paths:
    - cover.out
  acceptable: current >= 55%
codeToTestRatio:
  code:
    - '**/*.go'
    - '!**/*_test.go'
    - '!**/*.pb.go'
  test:
    - '**/*_test.go'
testExecutionTime:
  acceptable: current <= 10min && diff < 3min
diff:
  datastores:
    - artifact://${GITHUB_REPOSITORY}
comment:
  if: is_pull_request
  hideFooterLink: true
report:
  if: is_default_branch
  datastores:
    - artifact://${GITHUB_REPOSITORY}


================================================
FILE: .vscode/settings.json
================================================
{
    "protoc": {
        "options": [
            "--proto_path=proto",
            "--proto_path=proto_deps",
        ]
    },
    "grpc-federation": {
        "path": "bin/grpc-federation-language-server",
        "import-paths": [
            "proto",
        ]
    }
}


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2023 Mercari, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: Makefile
================================================
export

GOBIN := $(PWD)/bin
PATH := $(GOBIN):$(PATH)
SHELL := env PATH='$(PATH)' bash

PKG := github.com/mercari/grpc-federation

# retrieve all packages related to the test
PKGS := $(shell go list ./... | grep -v cmd)

# remove $PKG prefix from package name and add a dot character to convert it to a relative path.
COVER_PKGS := $(foreach pkg,$(PKGS),$(subst $(PKG),.,$(pkg)))

COMMA := ,
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)

# join package names for coverage with comma character.
COVERPKG_OPT := $(subst $(SPACE),$(COMMA),$(COVER_PKGS))

EXAMPLES := $(wildcard _examples/*)

GIT_REF := $(shell git rev-parse --short=7 HEAD)

VERSION ?= (devel)
LDFLAGS := -w -s -X=github.com/mercari/grpc-federation/grpc/federation.Version=$(VERSION)

.PHONY: tools
tools:
	go install github.com/bufbuild/buf/cmd/buf@v1.32.2
	go install github.com/envoyproxy/protoc-gen-validate/cmd/protoc-gen-validate-go@v1.0.4
	go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.8
	go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
	go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.33.0

.PHONY: lint
lint: lint/examples lint/golangci-lint lint/gomod lint/buf

.PHONY: fmt
fmt: fmt/golangci-lint tidy fmt/buf

.PHONY: tidy
tidy: tidy/examples
	go mod tidy

tidy/examples: $(foreach var,$(EXAMPLES),tidy/examples/$(var))

tidy/examples/%:
	cd $* && go mod tidy

lint/examples: $(foreach var,$(EXAMPLES),lint/examples/$(var))

lint/examples/%:
	$(MAKE) -C $* lint

lint/golangci-lint:
	$(GOBIN)/golangci-lint run $(args) ./...

lint/gomod: tidy
	if git diff --quiet go.mod go.sum; then \
        exit 0; \
	else \
		echo "go mod tidy resulted in a change of files."; \
		echo "Run make tidy locally before pushing"; \
		exit 1; \
	fi

lint/buf: fmt/buf
	if git diff --quiet proto; then \
        exit 0; \
	else \
		echo "buf format resulted in a change of files."; \
		echo "Run make fmt/buf locally before pushing"; \
		exit 1; \
	fi

fmt/golangci-lint:
	$(GOBIN)/golangci-lint run --fix $(args) ./...

fmt/buf:
	buf format --write

.PHONY: generate
generate: build generate/buf generate/examples

generate/buf:
	buf generate

generate/examples: $(foreach var,$(EXAMPLES),generate/examples/$(var))

generate/examples/%:
	$(MAKE) -C $* generate

.PHONY: build
build: build/grpcfedctl build/protoc-gen-grpc-federation build/grpc-federation-linter build/grpc-federation-language-server build/grpc-federation-generator

build/grpcfedctl:
	go build -ldflags "$(LDFLAGS)" -o $(GOBIN)/grpcfedctl ./cmd/grpcfedctl

build/protoc-gen-grpc-federation:
	go build -ldflags "$(LDFLAGS)" -o $(GOBIN)/protoc-gen-grpc-federation ./cmd/protoc-gen-grpc-federation

build/grpc-federation-linter:
	go build -ldflags "$(LDFLAGS)" -o $(GOBIN)/grpc-federation-linter ./cmd/grpc-federation-linter

build/grpc-federation-language-server:
	go build -ldflags "$(LDFLAGS)" -o $(GOBIN)/grpc-federation-language-server ./cmd/grpc-federation-language-server

build/grpc-federation-generator:
	go build -ldflags "$(LDFLAGS)" -o $(GOBIN)/grpc-federation-generator ./cmd/grpc-federation-generator

.PHONY: build/vscode-extension
build/vscode-extension: versioning/vscode-extension install/vscode-dependencies
	cd lsp/client/vscode && npx vsce package -o grpc-federation-$(VERSION).vsix

.PHONY: install/vscode-dependencies
install/vscode-dependencies:
	cd lsp/client/vscode && npm install

.PHONY: versioning/vscode-extension
versioning/vscode-extension:
	cd lsp/client/vscode && npm version $(VERSION)

.PHONY: test
test: test/examples
	go test -race -coverpkg=$(COVERPKG_OPT) -covermode=atomic -coverprofile=cover.out.tmp `go list ./...`
	cat cover.out.tmp |grep -v "pb.go" > cover.out && rm cover.out.tmp

test/examples: $(foreach var,$(EXAMPLES),test/examples/$(var))

test/examples/%:
	$(MAKE) -C $* test

.PHONY: cover-html
cover-html: test
	go tool cover -html=cover.out


================================================
FILE: README.md
================================================
# gRPC Federation

<img width="500px" src="https://github.com/mercari/grpc-federation/blob/main/images/logo.png?raw=true"/>

[![Test](https://github.com/mercari/grpc-federation/actions/workflows/test.yml/badge.svg)](https://github.com/mercari/grpc-federation/actions/workflows/test.yml)
[![GoDoc](https://godoc.org/github.com/mercari/grpc-federation?status.svg)](https://pkg.go.dev/github.com/mercari/grpc-federation?tab=doc)
[![Buf](https://img.shields.io/badge/Buf-docs-blue)](https://buf.build/mercari/grpc-federation)

gRPC Federation auto-generates a BFF (Backend for Frontend) server, aggregating and returning results from microservices using the gRPC protocol, configured through Protocol Buffer options.

[Public Roadmap is here](https://github.com/orgs/mercari/projects/1).

# Motivation

Imagine a system with a backend of multiple microservices. Instead of the client directly communicating with each microservice, it's more efficient to use a dedicated service (BFF - Backend for Frontend) to aggregate information and send it back to the client. However, as the system grows, determining which team should handle the BFF service becomes unclear. This is where Federated Architecture, like [GraphQL (Apollo) Federation](https://www.apollographql.com/docs/federation/), comes in.

With GraphQL Federation, each microservice has its own GraphQL server, and the BFF focuses on aggregating resources. However, integrating a new GraphQL server into a large system is challenging, especially in systems developed with the gRPC protocol.

To streamline, we're exploring the idea of automatically generating a BFF using the gRPC protocol with simple custom options. By leveraging existing Protocol Buffers schema for the BFF, we aim to keep using gRPC while drastically reducing maintenance costs.

# Why Choose gRPC Federation?

## 1. Reduce the Boilerplate Implementation Required to Create a BFF

### 1.1. Automate Type Conversions for the Same Message Across Different Packages

Consider defining a BFF using a proto, assuming the BFF acts as a proxy calling multiple microservices and aggregating results. In this scenario, it's necessary to redefine the same messages to handle microservices responses on the BFF. Without defining these messages on the BFF, the BFF client must be aware of different packages, which is not ideal.

Redefining messages on the BFF results in a considerable number of type conversions for the same messages across different packages.

Using gRPC Federation removes the need for tedious type conversions. Just define custom options in the proto, and gRPC Federation will automatically handle these conversions.

### 1.2. Optimize gRPC Method Calls

When making multiple gRPC method calls, it is crucial to enhance performance by analyzing dependencies between method calls and processing requests in parallel whenever possible. However, identifying dependencies becomes more challenging as the number of method calls increases.

gRPC Federation simplifies this process by automatically analyzing dependencies and generating code to optimize request flows. It removes the need for manual consideration.

### 1.3. Simplify Retries and Timeouts on gRPC Method Calls

Setting timeouts or retry counts for gRPC method calls in dependent services can be complicated. However, gRPC Federation allows for a declarative approach to implementing retries and timeouts.

These are just a few examples of how gRPC Federation simplifies work. By creating a BFF with minimal proto definitions, you can significantly reduce the development cost of BFFs.

## 2. Explicitly Declare Dependencies on Services

Using gRPC Federation enables a clear understanding of the services the BFF depends on by reading the proto file. It uncovers a relationship between each microservice and BFF.

Furthermore, gRPC Federation offers functionality to extract dependencies as a Go library, enabling the extraction of service dependencies through static analysis of the proto file. This capability proves valuable for various types of analysis and automation.

# Features

## 1. Code Generation Assistance Tools

gRPC Federation automatically generates a gRPC server by adding custom options to Protocol Buffers. It supports the `protoc-gen-grpc-federation` CLI, accessible through `protoc`. Various other tools are available to assist in code generation:

- `protoc-gen-grpc-federation`: protoc's plugin for gRPC Federation
- `grpc-federation-linter`: Linter for gRPC Federation
- `grpc-federation-language-server`: Language server for gRPC Federation
- `grpc-federation-generator`: Standalone code generation tool, which monitors proto changes and interactively generates codes

## 2. CEL Support for Complex Operations

gRPC Federation integrates [CEL](https://github.com/google/cel-spec) to enable support for more advanced operations on BFFs.  

[gRPC Federation CEL API References](./docs/cel.md)

## 3. Extensible System with WebAssembly

gRPC Federation features three extension points:

1. Code generation pipeline
2. Complex processes not expressible by Protocol Buffers
3. CEL API

We plan to make all three extension points available through WebAssembly in the future. Currently, the code generation pipeline and the CEL API are extensible.

### 3.1 Code Generation Pipeline

This feature allows you to run a custom auto-generated process using the results from gRPC Federation.

[How to Run Your Own Code Generation Process](./docs/code_generation_plugin.md)

### 3.2 Complex Processes Not Expressible by Protocol Buffers

gRPC Federation uses a hybrid system, with logic in Go managing operations that can't be expressed in Protocol Buffers. We plan to add support for WebAssembly in the future.

[How to Extend the API with the Go](./docs/references.md#grpcfederationmessagecustom_resolver)

### 3.3 CEL API

While gRPC Federation inherently supports various CEL APIs, users can use this functionality to use internal domain logic as a CEL API.

[How to Extend the CEL API](./docs/cel_plugin.md)

# Installation

Currently, there are three ways to use gRPC Federation:

1. Use `buf generate`
2. Use `protoc-gen-grpc-federation`
3. Use `grpc-federation-generator`

For detailed information on each method, please refer to [Installation Documentation](./docs/installation.md).

# Usage

- [`Getting Started`](./docs/getting_started.md)
- [`DEMO Application`](./demo/README.md)
- [`Examples`](./_examples/)

# Documents

- [Feature References](./docs/references.md)
- [CEL API References](./docs/cel.md)

# Contribution

Please read the CLA carefully before submitting your contribution to Mercari. Under any circumstances, by submitting your contribution, you are deemed to accept and agree to be bound by the terms and conditions of the CLA.

https://www.mercari.com/cla/

# License

Copyright 2023 Mercari, Inc.

Licensed under the MIT License.


================================================
FILE: _examples/01_minimum/.gitignore
================================================
grpc/federation



================================================
FILE: _examples/01_minimum/.vscode/settings.json
================================================
{
    "protoc": {
        "options": [
            "--proto_path=proto",
            "--proto_path=proto_deps"
        ]
    },
    "grpc-federation": {
        "path": "../../bin/grpc-federation-language-server",
        "import-paths": [
            "proto",
            "proto_deps"
        ]
    }
}


================================================
FILE: _examples/01_minimum/Makefile
================================================
MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
GOBIN := $(MAKEFILE_DIR)/../../bin
PATH := $(GOBIN):$(PATH)

JAEGER_IMAGE := jaegertracing/all-in-one:latest

.PHONY: generate
generate:
	$(GOBIN)/buf generate

.PHONY: lint
lint:
	@$(GOBIN)/grpc-federation-linter -Iproto -Iproto_deps ./proto/federation/federation.proto

.PHONY: test
test:
	go test -race ./ -count=1

.PHONY: grpc-federation/generate
grpc-federation/generate:
	@$(GOBIN)/grpc-federation-generator ./proto/federation/federation.proto

.PHONY: grpc-federation/watch
grpc-federation/watch:
	@$(GOBIN)/grpc-federation-generator -w

.PHONY: jaeger/start
jaeger/start:
	@docker run \
		-e COLLECTOR_OTLP_ENABLED=true \
		-p 16686:16686 \
		-p 4317:4317 \
		-p 4318:4318 \
		-d \
		$(JAEGER_IMAGE)

.PHONY: jaeger/stop
jaeger/stop:
	@docker stop $(shell docker ps -q  --filter ancestor=$(JAEGER_IMAGE))


================================================
FILE: _examples/01_minimum/buf.gen.yaml
================================================
version: v1
managed:
  enabled: true
plugins:
  - plugin: go
    out: .
    opt: paths=source_relative
  - plugin: go-grpc
    out: .
    opt: paths=source_relative
  - plugin: grpc-federation
    out: .
    opt:
      - paths=source_relative


================================================
FILE: _examples/01_minimum/buf.work.yaml
================================================
version: v1
directories:
  - proto
  - proto_deps


================================================
FILE: _examples/01_minimum/federation/federation.pb.go
================================================
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.33.0
// 	protoc        (unknown)
// source: federation/federation.proto

package federation

import (
	_ "github.com/mercari/grpc-federation/grpc/federation"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type GetPostRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *GetPostRequest) Reset() {
	*x = GetPostRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPostRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPostRequest) ProtoMessage() {}

func (x *GetPostRequest) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetPostRequest.ProtoReflect.Descriptor instead.
func (*GetPostRequest) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{0}
}

func (x *GetPostRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type GetPostResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Post *Post `protobuf:"bytes,1,opt,name=post,proto3" json:"post,omitempty"`
}

func (x *GetPostResponse) Reset() {
	*x = GetPostResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPostResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPostResponse) ProtoMessage() {}

func (x *GetPostResponse) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetPostResponse.ProtoReflect.Descriptor instead.
func (*GetPostResponse) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{1}
}

func (x *GetPostResponse) GetPost() *Post {
	if x != nil {
		return x.Post
	}
	return nil
}

type Post struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id      string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Title   string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	User    *User  `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"`
}

func (x *Post) Reset() {
	*x = Post{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Post) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Post) ProtoMessage() {}

func (x *Post) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Post.ProtoReflect.Descriptor instead.
func (*Post) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{2}
}

func (x *Post) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Post) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *Post) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *Post) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

type User struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id   string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *User) Reset() {
	*x = User{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *User) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*User) ProtoMessage() {}

func (x *User) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use User.ProtoReflect.Descriptor instead.
func (*User) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{3}
}

func (x *User) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *User) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

var File_federation_federation_proto protoreflect.FileDescriptor

var file_federation_federation_proto_rawDesc = []byte{
	0x0a, 0x1b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x65, 0x64,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x66,
	0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x20, 0x67, 0x72, 0x70, 0x63, 0x2f,
	0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x20, 0x0a, 0x0e, 0x47,
	0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3e, 0x0a,
	0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x24, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
	0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x3a, 0x05, 0x9a, 0x4a, 0x02, 0x10, 0x01, 0x22, 0x6c, 0x0a,
	0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x2a, 0x0a, 0x04, 0x55,
	0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0x5e, 0x0a, 0x11, 0x46, 0x65, 0x64, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x07,
	0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x00, 0x1a, 0x03, 0x9a, 0x4a, 0x00, 0x42, 0x88, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e,
	0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1d, 0x65,
	0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x46,
	0x58, 0x58, 0xaa, 0x02, 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca,
	0x02, 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x16, 0x46,
	0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_federation_federation_proto_rawDescOnce sync.Once
	file_federation_federation_proto_rawDescData = file_federation_federation_proto_rawDesc
)

func file_federation_federation_proto_rawDescGZIP() []byte {
	file_federation_federation_proto_rawDescOnce.Do(func() {
		file_federation_federation_proto_rawDescData = protoimpl.X.CompressGZIP(file_federation_federation_proto_rawDescData)
	})
	return file_federation_federation_proto_rawDescData
}

var file_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_federation_federation_proto_goTypes = []interface{}{
	(*GetPostRequest)(nil),  // 0: federation.GetPostRequest
	(*GetPostResponse)(nil), // 1: federation.GetPostResponse
	(*Post)(nil),            // 2: federation.Post
	(*User)(nil),            // 3: federation.User
}
var file_federation_federation_proto_depIdxs = []int32{
	2, // 0: federation.GetPostResponse.post:type_name -> federation.Post
	3, // 1: federation.Post.user:type_name -> federation.User
	0, // 2: federation.FederationService.GetPost:input_type -> federation.GetPostRequest
	1, // 3: federation.FederationService.GetPost:output_type -> federation.GetPostResponse
	3, // [3:4] is the sub-list for method output_type
	2, // [2:3] is the sub-list for method input_type
	2, // [2:2] is the sub-list for extension type_name
	2, // [2:2] is the sub-list for extension extendee
	0, // [0:2] is the sub-list for field type_name
}

func init() { file_federation_federation_proto_init() }
func file_federation_federation_proto_init() {
	if File_federation_federation_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_federation_federation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPostRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPostResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Post); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*User); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_federation_federation_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   4,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_federation_federation_proto_goTypes,
		DependencyIndexes: file_federation_federation_proto_depIdxs,
		MessageInfos:      file_federation_federation_proto_msgTypes,
	}.Build()
	File_federation_federation_proto = out.File
	file_federation_federation_proto_rawDesc = nil
	file_federation_federation_proto_goTypes = nil
	file_federation_federation_proto_depIdxs = nil
}


================================================
FILE: _examples/01_minimum/federation/federation_grpc.pb.go
================================================
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc             (unknown)
// source: federation/federation.proto

package federation

import (
	context "context"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7

const (
	FederationService_GetPost_FullMethodName = "/federation.FederationService/GetPost"
)

// FederationServiceClient is the client API for FederationService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type FederationServiceClient interface {
	GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc.CallOption) (*GetPostResponse, error)
}

type federationServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewFederationServiceClient(cc grpc.ClientConnInterface) FederationServiceClient {
	return &federationServiceClient{cc}
}

func (c *federationServiceClient) GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc.CallOption) (*GetPostResponse, error) {
	out := new(GetPostResponse)
	err := c.cc.Invoke(ctx, FederationService_GetPost_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// FederationServiceServer is the server API for FederationService service.
// All implementations must embed UnimplementedFederationServiceServer
// for forward compatibility
type FederationServiceServer interface {
	GetPost(context.Context, *GetPostRequest) (*GetPostResponse, error)
	mustEmbedUnimplementedFederationServiceServer()
}

// UnimplementedFederationServiceServer must be embedded to have forward compatible implementations.
type UnimplementedFederationServiceServer struct {
}

func (UnimplementedFederationServiceServer) GetPost(context.Context, *GetPostRequest) (*GetPostResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPost not implemented")
}
func (UnimplementedFederationServiceServer) mustEmbedUnimplementedFederationServiceServer() {}

// UnsafeFederationServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to FederationServiceServer will
// result in compilation errors.
type UnsafeFederationServiceServer interface {
	mustEmbedUnimplementedFederationServiceServer()
}

func RegisterFederationServiceServer(s grpc.ServiceRegistrar, srv FederationServiceServer) {
	s.RegisterService(&FederationService_ServiceDesc, srv)
}

func _FederationService_GetPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPostRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FederationServiceServer).GetPost(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: FederationService_GetPost_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FederationServiceServer).GetPost(ctx, req.(*GetPostRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// FederationService_ServiceDesc is the grpc.ServiceDesc for FederationService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var FederationService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "federation.FederationService",
	HandlerType: (*FederationServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetPost",
			Handler:    _FederationService_GetPost_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "federation/federation.proto",
}


================================================
FILE: _examples/01_minimum/federation/federation_grpc_federation.pb.go
================================================
// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!
// versions:
//
//	protoc-gen-grpc-federation: (devel)
//
// source: federation/federation.proto
package federation

import (
	"context"
	"io"
	"log/slog"
	"reflect"

	grpcfed "github.com/mercari/grpc-federation/grpc/federation"
	grpcfedcel "github.com/mercari/grpc-federation/grpc/federation/cel"
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/trace"
)

var (
	_ = reflect.Invalid // to avoid "imported and not used error"
)

// Federation_GetPostResponseVariable represents variable definitions in "federation.GetPostResponse".
type FederationService_Federation_GetPostResponseVariable struct {
}

// Federation_GetPostResponseArgument is argument for "federation.GetPostResponse" message.
type FederationService_Federation_GetPostResponseArgument struct {
	Id string
	FederationService_Federation_GetPostResponseVariable
}

// FederationServiceConfig configuration required to initialize the service that use GRPC Federation.
type FederationServiceConfig struct {
	// Resolver provides an interface to directly implement message resolver and field resolver not defined in Protocol Buffers.
	// If this interface is not provided, an error is returned during initialization.
	Resolver FederationServiceResolver // required
	// ErrorHandler Federation Service often needs to convert errors received from downstream services.
	// If an error occurs during method execution in the Federation Service, this error handler is called and the returned error is treated as a final error.
	ErrorHandler grpcfed.ErrorHandler
	// Logger sets the logger used to output Debug/Info/Error information.
	Logger *slog.Logger
}

// FederationServiceClientFactory provides a factory that creates the gRPC Client needed to invoke methods of the gRPC Service on which the Federation Service depends.
type FederationServiceClientFactory interface {
}

// FederationServiceClientConfig helper to create gRPC client.
// Hints for creating a gRPC Client.
type FederationServiceClientConfig struct {
	// Service FQDN ( `<package-name>.<service-name>` ) of the service on Protocol Buffers.
	Service string
}

// FederationServiceDependentClientSet has a gRPC client for all services on which the federation service depends.
// This is provided as an argument when implementing the custom resolver.
type FederationServiceDependentClientSet struct {
}

// FederationServiceResolver provides an interface to directly implement message resolver and field resolver not defined in Protocol Buffers.
type FederationServiceResolver interface {
	// Resolve_Federation_GetPostResponse implements resolver for "federation.GetPostResponse".
	Resolve_Federation_GetPostResponse(context.Context, *FederationService_Federation_GetPostResponseArgument) (*GetPostResponse, error)
}

// FederationServiceCELPluginWasmConfig type alias for grpcfedcel.WasmConfig.
type FederationServiceCELPluginWasmConfig = grpcfedcel.WasmConfig

// FederationServiceCELPluginConfig hints for loading a WebAssembly based plugin.
type FederationServiceCELPluginConfig struct {
	CacheDir string
}

// FederationServiceUnimplementedResolver a structure implemented to satisfy the Resolver interface.
// An Unimplemented error is always returned.
// This is intended for use when there are many Resolver interfaces that do not need to be implemented,
// by embedding them in a resolver structure that you have created.
type FederationServiceUnimplementedResolver struct{}

// Resolve_Federation_GetPostResponse resolve "federation.GetPostResponse".
// This method always returns Unimplemented error.
func (FederationServiceUnimplementedResolver) Resolve_Federation_GetPostResponse(context.Context, *FederationService_Federation_GetPostResponseArgument) (ret *GetPostResponse, e error) {
	e = grpcfed.GRPCErrorf(grpcfed.UnimplementedCode, "method Resolve_Federation_GetPostResponse not implemented")
	return
}

// FederationService represents Federation Service.
type FederationService struct {
	UnimplementedFederationServiceServer
	cfg             FederationServiceConfig
	logger          *slog.Logger
	isLogLevelDebug bool
	errorHandler    grpcfed.ErrorHandler
	celCacheMap     *grpcfed.CELCacheMap
	tracer          trace.Tracer
	resolver        FederationServiceResolver
	celTypeHelper   *grpcfed.CELTypeHelper
	celEnvOpts      []grpcfed.CELEnvOption
	celPlugins      []*grpcfedcel.CELPlugin
	client          *FederationServiceDependentClientSet
}

// NewFederationService creates FederationService instance by FederationServiceConfig.
func NewFederationService(cfg FederationServiceConfig) (*FederationService, error) {
	if cfg.Resolver == nil {
		return nil, grpcfed.ErrResolverConfig
	}
	logger := cfg.Logger
	if logger == nil {
		logger = slog.New(slog.NewJSONHandler(io.Discard, nil))
	}
	tracer := otel.Tracer("federation.FederationService")
	ctx := grpcfed.WithLogger(context.Background(), logger)
	ctx = grpcfed.WithTracer(ctx, tracer)
	errorHandler := cfg.ErrorHandler
	if errorHandler == nil {
		errorHandler = func(ctx context.Context, methodName string, err error) error { return err }
	}
	celTypeHelperFieldMap := grpcfed.CELTypeHelperFieldMap{
		"grpc.federation.private.federation.GetPostResponseArgument": {
			"id": grpcfed.NewCELFieldType(grpcfed.CELStringType, "Id"),
		},
	}
	celTypeHelper := grpcfed.NewCELTypeHelper("federation", celTypeHelperFieldMap)
	var celEnvOpts []grpcfed.CELEnvOption
	celEnvOpts = append(celEnvOpts, grpcfed.NewDefaultEnvOptions(celTypeHelper)...)
	svc := &FederationService{
		cfg:             cfg,
		logger:          logger,
		isLogLevelDebug: logger.Enabled(context.Background(), slog.LevelDebug),
		errorHandler:    errorHandler,
		celEnvOpts:      celEnvOpts,
		celTypeHelper:   celTypeHelper,
		celCacheMap:     grpcfed.NewCELCacheMap(),
		tracer:          tracer,
		resolver:        cfg.Resolver,
		client:          &FederationServiceDependentClientSet{},
	}
	if resolver, ok := cfg.Resolver.(grpcfed.CustomResolverInitializer); ok {
		ctx := context.Background()
		if err := resolver.Init(ctx); err != nil {
			return nil, err
		}
	}
	return svc, nil
}

// CleanupFederationService cleanup all resources to prevent goroutine leaks.
func CleanupFederationService(ctx context.Context, svc *FederationService) {
	svc.cleanup(ctx)
}

func (s *FederationService) cleanup(ctx context.Context) {
	for _, plugin := range s.celPlugins {
		plugin.Close()
	}
}

// GetPost implements "federation.FederationService/GetPost" method.
func (s *FederationService) GetPost(ctx context.Context, req *GetPostRequest) (res *GetPostResponse, e error) {
	ctx, span := s.tracer.Start(ctx, "federation.FederationService/GetPost")
	defer span.End()
	ctx = grpcfed.WithLogger(ctx, s.logger)
	ctx = grpcfed.WithCELCacheMap(ctx, s.celCacheMap)
	defer func() {
		if r := recover(); r != nil {
			e = grpcfed.RecoverError(r, grpcfed.StackTrace())
			grpcfed.OutputErrorLog(ctx, e)
		}
	}()
	defer func() {
		for _, celPlugin := range s.celPlugins {
			celPlugin.Cleanup()
		}
	}()
	res, err := s.resolve_Federation_GetPostResponse(ctx, &FederationService_Federation_GetPostResponseArgument{
		Id: req.GetId(),
	})
	if err != nil {
		grpcfed.RecordErrorToSpan(ctx, err)
		grpcfed.OutputErrorLog(ctx, err)
		return nil, err
	}
	return res, nil
}

// resolve_Federation_GetPostResponse resolve "federation.GetPostResponse" message.
func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Context, req *FederationService_Federation_GetPostResponseArgument) (*GetPostResponse, error) {
	ctx, span := s.tracer.Start(ctx, "federation.GetPostResponse")
	defer span.End()
	ctx = grpcfed.WithLogger(ctx, grpcfed.Logger(ctx), grpcfed.LogAttrs(ctx)...)

	grpcfed.Logger(ctx).DebugContext(ctx, "resolve federation.GetPostResponse", slog.Any("message_args", s.logvalue_Federation_GetPostResponseArgument(req)))

	// create a message value to be returned.
	// `custom_resolver = true` in "grpc.federation.message" option.
	ctx = grpcfed.WithLogger(ctx, grpcfed.Logger(ctx)) // create a new reference to logger.
	ret, err := s.resolver.Resolve_Federation_GetPostResponse(ctx, req)
	if err != nil {
		grpcfed.RecordErrorToSpan(ctx, err)
		return nil, err
	}

	grpcfed.Logger(ctx).DebugContext(ctx, "resolved federation.GetPostResponse", slog.Any("federation.GetPostResponse", s.logvalue_Federation_GetPostResponse(ret)))
	return ret, nil
}

func (s *FederationService) logvalue_Federation_GetPostResponse(v *GetPostResponse) slog.Value {
	if !s.isLogLevelDebug {
		return slog.GroupValue()
	}
	if v == nil {
		return slog.GroupValue()
	}
	return slog.GroupValue(
		slog.Any("post", s.logvalue_Federation_Post(v.GetPost())),
	)
}

func (s *FederationService) logvalue_Federation_GetPostResponseArgument(v *FederationService_Federation_GetPostResponseArgument) slog.Value {
	if !s.isLogLevelDebug {
		return slog.GroupValue()
	}
	if v == nil {
		return slog.GroupValue()
	}
	return slog.GroupValue(
		slog.String("id", v.Id),
	)
}

func (s *FederationService) logvalue_Federation_Post(v *Post) slog.Value {
	if !s.isLogLevelDebug {
		return slog.GroupValue()
	}
	if v == nil {
		return slog.GroupValue()
	}
	return slog.GroupValue(
		slog.String("id", v.GetId()),
		slog.String("title", v.GetTitle()),
		slog.String("content", v.GetContent()),
		slog.Any("user", s.logvalue_Federation_User(v.GetUser())),
	)
}

func (s *FederationService) logvalue_Federation_User(v *User) slog.Value {
	if !s.isLogLevelDebug {
		return slog.GroupValue()
	}
	if v == nil {
		return slog.GroupValue()
	}
	return slog.GroupValue(
		slog.String("id", v.GetId()),
		slog.String("name", v.GetName()),
	)
}


================================================
FILE: _examples/01_minimum/go.mod
================================================
module example

go 1.24.0

replace github.com/mercari/grpc-federation => ../../

require (
	github.com/google/go-cmp v0.7.0
	github.com/mercari/grpc-federation v0.0.0-00010101000000-000000000000
	go.opentelemetry.io/otel v1.24.0
	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0
	go.opentelemetry.io/otel/sdk v1.24.0
	go.opentelemetry.io/otel/trace v1.24.0
	go.uber.org/goleak v1.3.0
	google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7
	google.golang.org/grpc v1.65.0
	google.golang.org/protobuf v1.34.2
)

require (
	cel.dev/expr v0.19.1 // indirect
	github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
	github.com/cenkalti/backoff/v4 v4.2.1 // indirect
	github.com/go-logr/logr v1.4.1 // indirect
	github.com/go-logr/stdr v1.2.2 // indirect
	github.com/goccy/wasi-go v0.3.2 // indirect
	github.com/google/cel-go v0.23.1 // indirect
	github.com/google/uuid v1.6.0 // indirect
	github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
	github.com/kelseyhightower/envconfig v1.4.0 // indirect
	github.com/stealthrocket/wazergo v0.19.1 // indirect
	github.com/stoewer/go-strcase v1.3.0 // indirect
	github.com/tetratelabs/wazero v1.10.1 // indirect
	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect
	go.opentelemetry.io/otel/metric v1.24.0 // indirect
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
	golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 // indirect
	golang.org/x/net v0.38.0 // indirect
	golang.org/x/sync v0.14.0 // indirect
	golang.org/x/sys v0.37.0 // indirect
	golang.org/x/text v0.23.0 // indirect
	google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 // indirect
)


================================================
FILE: _examples/01_minimum/go.sum
================================================
cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=
cel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/goccy/wasi-go v0.3.2 h1:wAvGXmqCkfcp0B0AwIp5Ya53hzDwkKm9W8iuT3nCCz0=
github.com/goccy/wasi-go v0.3.2/go.mod h1:nIKD204n9xa4Z20UV+XA483kIr9TAl2vXr+X5qVAO5M=
github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4=
github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/google/cel-go v0.23.1 h1:91ThhEZlBcE5rB2adBVXqvDoqdL8BG2oyhd0bK1I/r4=
github.com/google/cel-go v0.23.1/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx1J5Wwo=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stealthrocket/wazergo v0.19.1 h1:BPrITETPgSFwiytwmToO0MbUC/+RGC39JScz1JmmG6c=
github.com/stealthrocket/wazergo v0.19.1/go.mod h1:riI0hxw4ndZA5e6z7PesHg2BtTftcZaMxRcoiGGipTs=
github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/tetratelabs/wazero v1.10.1 h1:2DugeJf6VVk58KTPszlNfeeN8AhhpwcZqkJj2wwFuH8=
github.com/tetratelabs/wazero v1.10.1/go.mod h1:DRm5twOQ5Gr1AoEdSi0CLjDQF1J9ZAuyqFIjl1KKfQU=
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0=
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI=
golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ=
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ=
golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 h1:YcyjlL1PRr2Q17/I0dPk2JmYS5CDXfcdb2Z3YRioEbw=
google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 h1:2035KHhUv+EpyB+hWgJnaWKJOdX1E95w2S8Rr4uWKTs=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=


================================================
FILE: _examples/01_minimum/grpc-federation.yaml
================================================
imports:
  - proto
src:
  - proto
out: .
plugins:
  - plugin: go
    opt: paths=source_relative
  - plugin: go-grpc
    opt: paths=source_relative
  - plugin: grpc-federation
    opt: paths=source_relative


================================================
FILE: _examples/01_minimum/main_test.go
================================================
package main_test

import (
	"context"
	"log/slog"
	"os"
	"testing"

	"github.com/google/go-cmp/cmp"
	"github.com/google/go-cmp/cmp/cmpopts"
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
	"go.opentelemetry.io/otel/propagation"
	"go.opentelemetry.io/otel/sdk/resource"
	sdktrace "go.opentelemetry.io/otel/sdk/trace"
	semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
	"go.uber.org/goleak"

	"example/federation"
)

type Resolver struct {
	*federation.FederationServiceUnimplementedResolver
}

var (
	requestID    = "foo"
	testResponse = &federation.GetPostResponse{
		Post: &federation.Post{
			Id:      requestID,
			Title:   "xxx",
			Content: "yyy",
			User: &federation.User{
				Id:   requestID,
				Name: "zzz",
			},
		},
	}
)

func (r *Resolver) Resolve_Federation_GetPostResponse(ctx context.Context, arg *federation.FederationService_Federation_GetPostResponseArgument) (*federation.GetPostResponse, error) {
	return testResponse, nil
}

func TestFederation(t *testing.T) {
	defer goleak.VerifyNone(t)
	ctx := context.Background()

	if os.Getenv("ENABLE_JAEGER") != "" {
		exporter, err := otlptracegrpc.New(ctx, otlptracegrpc.WithInsecure())
		if err != nil {
			t.Fatal(err)
		}
		tp := sdktrace.NewTracerProvider(
			sdktrace.WithBatcher(exporter),
			sdktrace.WithResource(
				resource.NewWithAttributes(
					semconv.SchemaURL,
					semconv.ServiceNameKey.String("example01/minimum"),
					semconv.ServiceVersionKey.String("1.0.0"),
					attribute.String("environment", "dev"),
				),
			),
			sdktrace.WithSampler(sdktrace.AlwaysSample()),
		)
		defer tp.Shutdown(ctx)
		otel.SetTextMapPropagator(propagation.TraceContext{})
		otel.SetTracerProvider(tp)
	}

	logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
		Level: slog.LevelDebug,
	}))
	svc, err := federation.NewFederationService(federation.FederationServiceConfig{
		Resolver: new(Resolver),
		Logger:   logger,
	})
	if err != nil {
		t.Fatal(err)
	}
	res, err := svc.GetPost(ctx, &federation.GetPostRequest{Id: requestID})
	if err != nil {
		t.Fatal(err)
	}
	if diff := cmp.Diff(
		testResponse, res,
		cmpopts.IgnoreUnexported(federation.GetPostResponse{}, federation.Post{}, federation.User{}),
	); diff != "" {
		t.Errorf("(-got, +want)\n%s", diff)
	}
}


================================================
FILE: _examples/01_minimum/proto/buf.yaml
================================================
version: v1
breaking:
  use:
    - FILE
lint:
  use:
    - DEFAULT


================================================
FILE: _examples/01_minimum/proto/federation/federation.proto
================================================
syntax = "proto3";

package federation;

import "grpc/federation/federation.proto";

option go_package = "example/federation;federation";

service FederationService {
  option (grpc.federation.service) = {};
  rpc GetPost(GetPostRequest) returns (GetPostResponse) {};
}

message GetPostRequest {
  string id = 1;
}

message GetPostResponse {
  option (grpc.federation.message).custom_resolver = true;
  Post post = 1;
}

message Post {
  string id = 1;
  string title = 2;
  string content = 3;
  User user = 4;
}

message User {
  string id = 1;
  string name = 2;
}


================================================
FILE: _examples/02_simple/.gitignore
================================================
grpc/federation


================================================
FILE: _examples/02_simple/.vscode/settings.json
================================================
{
    "protoc": {
        "options": [
            "--proto_path=proto",
            "--proto_path=proto_deps"
        ]
    },
    "grpc-federation": {
        "path": "../../bin/grpc-federation-language-server",
        "import-paths": [
            "proto",
            "proto_deps"
        ]
    }
}


================================================
FILE: _examples/02_simple/Makefile
================================================
MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
GOBIN := $(MAKEFILE_DIR)/../../bin
PATH := $(GOBIN):$(PATH)

JAEGER_IMAGE := jaegertracing/all-in-one:latest

.PHONY: generate
generate:
	$(GOBIN)/buf generate

.PHONY: lint
lint:
	@$(GOBIN)/grpc-federation-linter -Iproto -Iproto_deps ./proto/federation/federation.proto

.PHONY: test
test:
	go test -race ./ -count=1

.PHONY: grpc-federation/generate
grpc-federation/generate:
	@$(GOBIN)/grpc-federation-generator ./proto/federation/federation.proto

.PHONY: grpc-federation/watch
grpc-federation/watch:
	@$(GOBIN)/grpc-federation-generator -w

.PHONY: jaeger/start
jaeger/start:
	@docker run \
		-e COLLECTOR_OTLP_ENABLED=true \
		-p 16686:16686 \
		-p 4317:4317 \
		-p 4318:4318 \
		-d \
		$(JAEGER_IMAGE)

.PHONY: jaeger/stop
jaeger/stop:
	@docker stop $(shell docker ps -q  --filter ancestor=$(JAEGER_IMAGE))


================================================
FILE: _examples/02_simple/buf.gen.yaml
================================================
version: v1
managed:
  enabled: true
plugins:
  - plugin: go
    out: .
    opt: paths=source_relative
  - plugin: go-grpc
    out: .
    opt: paths=source_relative
  - plugin: grpc-federation
    out: .
    opt:
    - paths=source_relative
    - import_paths=proto


================================================
FILE: _examples/02_simple/buf.work.yaml
================================================
version: v1
directories:
  - proto
  - proto_deps


================================================
FILE: _examples/02_simple/federation/federation.pb.go
================================================
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.33.0
// 	protoc        (unknown)
// source: federation/federation.proto

package federation

import (
	_ "github.com/mercari/grpc-federation/grpc/federation"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	anypb "google.golang.org/protobuf/types/known/anypb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type Item_ItemType int32

const (
	Item_ITEM_TYPE_UNSPECIFIED Item_ItemType = 0
	Item_ITEM_TYPE_1           Item_ItemType = 1
	Item_ITEM_TYPE_2           Item_ItemType = 2
	Item_ITEM_TYPE_3           Item_ItemType = 3
)

// Enum value maps for Item_ItemType.
var (
	Item_ItemType_name = map[int32]string{
		0: "ITEM_TYPE_UNSPECIFIED",
		1: "ITEM_TYPE_1",
		2: "ITEM_TYPE_2",
		3: "ITEM_TYPE_3",
	}
	Item_ItemType_value = map[string]int32{
		"ITEM_TYPE_UNSPECIFIED": 0,
		"ITEM_TYPE_1":           1,
		"ITEM_TYPE_2":           2,
		"ITEM_TYPE_3":           3,
	}
)

func (x Item_ItemType) Enum() *Item_ItemType {
	p := new(Item_ItemType)
	*p = x
	return p
}

func (x Item_ItemType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Item_ItemType) Descriptor() protoreflect.EnumDescriptor {
	return file_federation_federation_proto_enumTypes[0].Descriptor()
}

func (Item_ItemType) Type() protoreflect.EnumType {
	return &file_federation_federation_proto_enumTypes[0]
}

func (x Item_ItemType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Item_ItemType.Descriptor instead.
func (Item_ItemType) EnumDescriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{5, 0}
}

type Item_Location_LocationType int32

const (
	Item_Location_LOCATION_TYPE_0 Item_Location_LocationType = 0
	Item_Location_LOCATION_TYPE_1 Item_Location_LocationType = 1
)

// Enum value maps for Item_Location_LocationType.
var (
	Item_Location_LocationType_name = map[int32]string{
		0: "LOCATION_TYPE_0",
		1: "LOCATION_TYPE_1",
	}
	Item_Location_LocationType_value = map[string]int32{
		"LOCATION_TYPE_0": 0,
		"LOCATION_TYPE_1": 1,
	}
)

func (x Item_Location_LocationType) Enum() *Item_Location_LocationType {
	p := new(Item_Location_LocationType)
	*p = x
	return p
}

func (x Item_Location_LocationType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Item_Location_LocationType) Descriptor() protoreflect.EnumDescriptor {
	return file_federation_federation_proto_enumTypes[1].Descriptor()
}

func (Item_Location_LocationType) Type() protoreflect.EnumType {
	return &file_federation_federation_proto_enumTypes[1]
}

func (x Item_Location_LocationType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Item_Location_LocationType.Descriptor instead.
func (Item_Location_LocationType) EnumDescriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{5, 0, 0}
}

type GetPostRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *GetPostRequest) Reset() {
	*x = GetPostRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPostRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPostRequest) ProtoMessage() {}

func (x *GetPostRequest) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetPostRequest.ProtoReflect.Descriptor instead.
func (*GetPostRequest) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{0}
}

func (x *GetPostRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type GetPostResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Post               *Post                   `protobuf:"bytes,1,opt,name=post,proto3" json:"post,omitempty"`
	Str                string                  `protobuf:"bytes,2,opt,name=str,proto3" json:"str,omitempty"`
	Uuid               string                  `protobuf:"bytes,3,opt,name=uuid,proto3" json:"uuid,omitempty"`
	Loc                string                  `protobuf:"bytes,4,opt,name=loc,proto3" json:"loc,omitempty"`
	Value1             string                  `protobuf:"bytes,5,opt,name=value1,proto3" json:"value1,omitempty"`
	ItemTypeName       string                  `protobuf:"bytes,6,opt,name=item_type_name,json=itemTypeName,proto3" json:"item_type_name,omitempty"`
	LocationTypeName   string                  `protobuf:"bytes,7,opt,name=location_type_name,json=locationTypeName,proto3" json:"location_type_name,omitempty"`
	UserItemTypeName   string                  `protobuf:"bytes,8,opt,name=user_item_type_name,json=userItemTypeName,proto3" json:"user_item_type_name,omitempty"`
	ItemTypeValueEnum  Item_ItemType           `protobuf:"varint,9,opt,name=item_type_value_enum,json=itemTypeValueEnum,proto3,enum=federation.Item_ItemType" json:"item_type_value_enum,omitempty"`
	ItemTypeValueInt   int32                   `protobuf:"varint,10,opt,name=item_type_value_int,json=itemTypeValueInt,proto3" json:"item_type_value_int,omitempty"`
	ItemTypeValueCast  Item_ItemType           `protobuf:"varint,11,opt,name=item_type_value_cast,json=itemTypeValueCast,proto3,enum=federation.Item_ItemType" json:"item_type_value_cast,omitempty"`
	LocationTypeValue  int32                   `protobuf:"varint,12,opt,name=location_type_value,json=locationTypeValue,proto3" json:"location_type_value,omitempty"`
	UserItemTypeValue  int32                   `protobuf:"varint,13,opt,name=user_item_type_value,json=userItemTypeValue,proto3" json:"user_item_type_value,omitempty"`
	A                  *A                      `protobuf:"bytes,14,opt,name=a,proto3" json:"a,omitempty"`
	SortedValues       []int32                 `protobuf:"varint,15,rep,packed,name=sorted_values,json=sortedValues,proto3" json:"sorted_values,omitempty"`
	SortedItems        []*Item                 `protobuf:"bytes,16,rep,name=sorted_items,json=sortedItems,proto3" json:"sorted_items,omitempty"`
	MapValue           map[int32]string        `protobuf:"bytes,17,rep,name=map_value,json=mapValue,proto3" json:"map_value,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	DoubleWrapperValue *wrapperspb.DoubleValue `protobuf:"bytes,18,opt,name=double_wrapper_value,json=doubleWrapperValue,proto3" json:"double_wrapper_value,omitempty"`
	FloatWrapperValue  *wrapperspb.FloatValue  `protobuf:"bytes,19,opt,name=float_wrapper_value,json=floatWrapperValue,proto3" json:"float_wrapper_value,omitempty"`
	I64WrapperValue    *wrapperspb.Int64Value  `protobuf:"bytes,20,opt,name=i64_wrapper_value,json=i64WrapperValue,proto3" json:"i64_wrapper_value,omitempty"`
	U64WrapperValue    *wrapperspb.UInt64Value `protobuf:"bytes,21,opt,name=u64_wrapper_value,json=u64WrapperValue,proto3" json:"u64_wrapper_value,omitempty"`
	I32WrapperValue    *wrapperspb.Int32Value  `protobuf:"bytes,22,opt,name=i32_wrapper_value,json=i32WrapperValue,proto3" json:"i32_wrapper_value,omitempty"`
	U32WrapperValue    *wrapperspb.UInt32Value `protobuf:"bytes,23,opt,name=u32_wrapper_value,json=u32WrapperValue,proto3" json:"u32_wrapper_value,omitempty"`
	BoolWrapperValue   *wrapperspb.BoolValue   `protobuf:"bytes,24,opt,name=bool_wrapper_value,json=boolWrapperValue,proto3" json:"bool_wrapper_value,omitempty"`
	StringWrapperValue *wrapperspb.StringValue `protobuf:"bytes,25,opt,name=string_wrapper_value,json=stringWrapperValue,proto3" json:"string_wrapper_value,omitempty"`
	BytesWrapperValue  *wrapperspb.BytesValue  `protobuf:"bytes,26,opt,name=bytes_wrapper_value,json=bytesWrapperValue,proto3" json:"bytes_wrapper_value,omitempty"`
	Hello              string                  `protobuf:"bytes,27,opt,name=hello,proto3" json:"hello,omitempty"`
	NullTimestamp      *timestamppb.Timestamp  `protobuf:"bytes,28,opt,name=null_timestamp,json=nullTimestamp,proto3" json:"null_timestamp,omitempty"`
	NullTimestamp2     *timestamppb.Timestamp  `protobuf:"bytes,29,opt,name=null_timestamp2,json=nullTimestamp2,proto3" json:"null_timestamp2,omitempty"`
	NullTimestamp3     *timestamppb.Timestamp  `protobuf:"bytes,30,opt,name=null_timestamp3,json=nullTimestamp3,proto3" json:"null_timestamp3,omitempty"`
	JpLoc              string                  `protobuf:"bytes,31,opt,name=jp_loc,json=jpLoc,proto3" json:"jp_loc,omitempty"`
	StringsJoin        string                  `protobuf:"bytes,32,opt,name=strings_join,json=stringsJoin,proto3" json:"strings_join,omitempty"`
	ParseFloat         float64                 `protobuf:"fixed64,33,opt,name=parse_float,json=parseFloat,proto3" json:"parse_float,omitempty"`
	UrlUserName        string                  `protobuf:"bytes,34,opt,name=url_user_name,json=urlUserName,proto3" json:"url_user_name,omitempty"`
	EnumValue          Item_ItemType           `protobuf:"varint,35,opt,name=enum_value,json=enumValue,proto3,enum=federation.Item_ItemType" json:"enum_value,omitempty"`
	EnumValueStr       string                  `protobuf:"bytes,36,opt,name=enum_value_str,json=enumValueStr,proto3" json:"enum_value_str,omitempty"`
	SqrtDouble         float64                 `protobuf:"fixed64,37,opt,name=sqrt_double,json=sqrtDouble,proto3" json:"sqrt_double,omitempty"`
	SqrtInt            float64                 `protobuf:"fixed64,38,opt,name=sqrt_int,json=sqrtInt,proto3" json:"sqrt_int,omitempty"`
	Pow                float64                 `protobuf:"fixed64,39,opt,name=pow,proto3" json:"pow,omitempty"`
	Floor              float64                 `protobuf:"fixed64,40,opt,name=floor,proto3" json:"floor,omitempty"`
	Flatten            []int64                 `protobuf:"varint,41,rep,packed,name=flatten,proto3" json:"flatten,omitempty"`
	Round              float64                 `protobuf:"fixed64,42,opt,name=round,proto3" json:"round,omitempty"`
	Any                *anypb.Any              `protobuf:"bytes,43,opt,name=any,proto3" json:"any,omitempty"`
	Replaced           string                  `protobuf:"bytes,44,opt,name=replaced,proto3" json:"replaced,omitempty"`
	ListToMap          map[int32]int32         `protobuf:"bytes,45,rep,name=list_to_map,json=listToMap,proto3" json:"list_to_map,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
	UuidParse          string                  `protobuf:"bytes,46,opt,name=uuid_parse,json=uuidParse,proto3" json:"uuid_parse,omitempty"`
	UuidValidate       bool                    `protobuf:"varint,47,opt,name=uuid_validate,json=uuidValidate,proto3" json:"uuid_validate,omitempty"`
	Compile            string                  `protobuf:"bytes,48,opt,name=compile,proto3" json:"compile,omitempty"`
	MustCompile        string                  `protobuf:"bytes,49,opt,name=must_compile,json=mustCompile,proto3" json:"must_compile,omitempty"`
	QuoteMeta          string                  `protobuf:"bytes,50,opt,name=quote_meta,json=quoteMeta,proto3" json:"quote_meta,omitempty"`
	FindStringSubmatch []string                `protobuf:"bytes,51,rep,name=find_string_submatch,json=findStringSubmatch,proto3" json:"find_string_submatch,omitempty"`
	MatchString        bool                    `protobuf:"varint,52,opt,name=match_string,json=matchString,proto3" json:"match_string,omitempty"`
	ReplaceAllString   string                  `protobuf:"bytes,53,opt,name=replace_all_string,json=replaceAllString,proto3" json:"replace_all_string,omitempty"`
}

func (x *GetPostResponse) Reset() {
	*x = GetPostResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPostResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPostResponse) ProtoMessage() {}

func (x *GetPostResponse) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetPostResponse.ProtoReflect.Descriptor instead.
func (*GetPostResponse) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{1}
}

func (x *GetPostResponse) GetPost() *Post {
	if x != nil {
		return x.Post
	}
	return nil
}

func (x *GetPostResponse) GetStr() string {
	if x != nil {
		return x.Str
	}
	return ""
}

func (x *GetPostResponse) GetUuid() string {
	if x != nil {
		return x.Uuid
	}
	return ""
}

func (x *GetPostResponse) GetLoc() string {
	if x != nil {
		return x.Loc
	}
	return ""
}

func (x *GetPostResponse) GetValue1() string {
	if x != nil {
		return x.Value1
	}
	return ""
}

func (x *GetPostResponse) GetItemTypeName() string {
	if x != nil {
		return x.ItemTypeName
	}
	return ""
}

func (x *GetPostResponse) GetLocationTypeName() string {
	if x != nil {
		return x.LocationTypeName
	}
	return ""
}

func (x *GetPostResponse) GetUserItemTypeName() string {
	if x != nil {
		return x.UserItemTypeName
	}
	return ""
}

func (x *GetPostResponse) GetItemTypeValueEnum() Item_ItemType {
	if x != nil {
		return x.ItemTypeValueEnum
	}
	return Item_ITEM_TYPE_UNSPECIFIED
}

func (x *GetPostResponse) GetItemTypeValueInt() int32 {
	if x != nil {
		return x.ItemTypeValueInt
	}
	return 0
}

func (x *GetPostResponse) GetItemTypeValueCast() Item_ItemType {
	if x != nil {
		return x.ItemTypeValueCast
	}
	return Item_ITEM_TYPE_UNSPECIFIED
}

func (x *GetPostResponse) GetLocationTypeValue() int32 {
	if x != nil {
		return x.LocationTypeValue
	}
	return 0
}

func (x *GetPostResponse) GetUserItemTypeValue() int32 {
	if x != nil {
		return x.UserItemTypeValue
	}
	return 0
}

func (x *GetPostResponse) GetA() *A {
	if x != nil {
		return x.A
	}
	return nil
}

func (x *GetPostResponse) GetSortedValues() []int32 {
	if x != nil {
		return x.SortedValues
	}
	return nil
}

func (x *GetPostResponse) GetSortedItems() []*Item {
	if x != nil {
		return x.SortedItems
	}
	return nil
}

func (x *GetPostResponse) GetMapValue() map[int32]string {
	if x != nil {
		return x.MapValue
	}
	return nil
}

func (x *GetPostResponse) GetDoubleWrapperValue() *wrapperspb.DoubleValue {
	if x != nil {
		return x.DoubleWrapperValue
	}
	return nil
}

func (x *GetPostResponse) GetFloatWrapperValue() *wrapperspb.FloatValue {
	if x != nil {
		return x.FloatWrapperValue
	}
	return nil
}

func (x *GetPostResponse) GetI64WrapperValue() *wrapperspb.Int64Value {
	if x != nil {
		return x.I64WrapperValue
	}
	return nil
}

func (x *GetPostResponse) GetU64WrapperValue() *wrapperspb.UInt64Value {
	if x != nil {
		return x.U64WrapperValue
	}
	return nil
}

func (x *GetPostResponse) GetI32WrapperValue() *wrapperspb.Int32Value {
	if x != nil {
		return x.I32WrapperValue
	}
	return nil
}

func (x *GetPostResponse) GetU32WrapperValue() *wrapperspb.UInt32Value {
	if x != nil {
		return x.U32WrapperValue
	}
	return nil
}

func (x *GetPostResponse) GetBoolWrapperValue() *wrapperspb.BoolValue {
	if x != nil {
		return x.BoolWrapperValue
	}
	return nil
}

func (x *GetPostResponse) GetStringWrapperValue() *wrapperspb.StringValue {
	if x != nil {
		return x.StringWrapperValue
	}
	return nil
}

func (x *GetPostResponse) GetBytesWrapperValue() *wrapperspb.BytesValue {
	if x != nil {
		return x.BytesWrapperValue
	}
	return nil
}

func (x *GetPostResponse) GetHello() string {
	if x != nil {
		return x.Hello
	}
	return ""
}

func (x *GetPostResponse) GetNullTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.NullTimestamp
	}
	return nil
}

func (x *GetPostResponse) GetNullTimestamp2() *timestamppb.Timestamp {
	if x != nil {
		return x.NullTimestamp2
	}
	return nil
}

func (x *GetPostResponse) GetNullTimestamp3() *timestamppb.Timestamp {
	if x != nil {
		return x.NullTimestamp3
	}
	return nil
}

func (x *GetPostResponse) GetJpLoc() string {
	if x != nil {
		return x.JpLoc
	}
	return ""
}

func (x *GetPostResponse) GetStringsJoin() string {
	if x != nil {
		return x.StringsJoin
	}
	return ""
}

func (x *GetPostResponse) GetParseFloat() float64 {
	if x != nil {
		return x.ParseFloat
	}
	return 0
}

func (x *GetPostResponse) GetUrlUserName() string {
	if x != nil {
		return x.UrlUserName
	}
	return ""
}

func (x *GetPostResponse) GetEnumValue() Item_ItemType {
	if x != nil {
		return x.EnumValue
	}
	return Item_ITEM_TYPE_UNSPECIFIED
}

func (x *GetPostResponse) GetEnumValueStr() string {
	if x != nil {
		return x.EnumValueStr
	}
	return ""
}

func (x *GetPostResponse) GetSqrtDouble() float64 {
	if x != nil {
		return x.SqrtDouble
	}
	return 0
}

func (x *GetPostResponse) GetSqrtInt() float64 {
	if x != nil {
		return x.SqrtInt
	}
	return 0
}

func (x *GetPostResponse) GetPow() float64 {
	if x != nil {
		return x.Pow
	}
	return 0
}

func (x *GetPostResponse) GetFloor() float64 {
	if x != nil {
		return x.Floor
	}
	return 0
}

func (x *GetPostResponse) GetFlatten() []int64 {
	if x != nil {
		return x.Flatten
	}
	return nil
}

func (x *GetPostResponse) GetRound() float64 {
	if x != nil {
		return x.Round
	}
	return 0
}

func (x *GetPostResponse) GetAny() *anypb.Any {
	if x != nil {
		return x.Any
	}
	return nil
}

func (x *GetPostResponse) GetReplaced() string {
	if x != nil {
		return x.Replaced
	}
	return ""
}

func (x *GetPostResponse) GetListToMap() map[int32]int32 {
	if x != nil {
		return x.ListToMap
	}
	return nil
}

func (x *GetPostResponse) GetUuidParse() string {
	if x != nil {
		return x.UuidParse
	}
	return ""
}

func (x *GetPostResponse) GetUuidValidate() bool {
	if x != nil {
		return x.UuidValidate
	}
	return false
}

func (x *GetPostResponse) GetCompile() string {
	if x != nil {
		return x.Compile
	}
	return ""
}

func (x *GetPostResponse) GetMustCompile() string {
	if x != nil {
		return x.MustCompile
	}
	return ""
}

func (x *GetPostResponse) GetQuoteMeta() string {
	if x != nil {
		return x.QuoteMeta
	}
	return ""
}

func (x *GetPostResponse) GetFindStringSubmatch() []string {
	if x != nil {
		return x.FindStringSubmatch
	}
	return nil
}

func (x *GetPostResponse) GetMatchString() bool {
	if x != nil {
		return x.MatchString
	}
	return false
}

func (x *GetPostResponse) GetReplaceAllString() string {
	if x != nil {
		return x.ReplaceAllString
	}
	return ""
}

type A struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	B *A_B `protobuf:"bytes,1,opt,name=b,proto3" json:"b,omitempty"`
	// Types that are assignable to Opt:
	//
	//	*A_OptC
	Opt isA_Opt `protobuf_oneof:"opt"`
}

func (x *A) Reset() {
	*x = A{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *A) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*A) ProtoMessage() {}

func (x *A) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use A.ProtoReflect.Descriptor instead.
func (*A) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{2}
}

func (x *A) GetB() *A_B {
	if x != nil {
		return x.B
	}
	return nil
}

func (m *A) GetOpt() isA_Opt {
	if m != nil {
		return m.Opt
	}
	return nil
}

func (x *A) GetOptC() *A_B_C {
	if x, ok := x.GetOpt().(*A_OptC); ok {
		return x.OptC
	}
	return nil
}

type isA_Opt interface {
	isA_Opt()
}

type A_OptC struct {
	OptC *A_B_C `protobuf:"bytes,2,opt,name=opt_c,json=optC,proto3,oneof"`
}

func (*A_OptC) isA_Opt() {}

type Post struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id      string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Title   string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	User    *User  `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"`
}

func (x *Post) Reset() {
	*x = Post{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Post) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Post) ProtoMessage() {}

func (x *Post) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Post.ProtoReflect.Descriptor instead.
func (*Post) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{3}
}

func (x *Post) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Post) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *Post) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *Post) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

type User struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id      string                `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name    string                `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Items   []*Item               `protobuf:"bytes,3,rep,name=items,proto3" json:"items,omitempty"`
	Profile map[string]*anypb.Any `protobuf:"bytes,4,rep,name=profile,proto3" json:"profile,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Types that are assignable to Attr:
	//
	//	*User_AttrA_
	//	*User_B
	Attr isUser_Attr `protobuf_oneof:"attr"`
}

func (x *User) Reset() {
	*x = User{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *User) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*User) ProtoMessage() {}

func (x *User) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use User.ProtoReflect.Descriptor instead.
func (*User) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{4}
}

func (x *User) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *User) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *User) GetItems() []*Item {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *User) GetProfile() map[string]*anypb.Any {
	if x != nil {
		return x.Profile
	}
	return nil
}

func (m *User) GetAttr() isUser_Attr {
	if m != nil {
		return m.Attr
	}
	return nil
}

func (x *User) GetAttrA() *User_AttrA {
	if x, ok := x.GetAttr().(*User_AttrA_); ok {
		return x.AttrA
	}
	return nil
}

func (x *User) GetB() *User_AttrB {
	if x, ok := x.GetAttr().(*User_B); ok {
		return x.B
	}
	return nil
}

type isUser_Attr interface {
	isUser_Attr()
}

type User_AttrA_ struct {
	AttrA *User_AttrA `protobuf:"bytes,5,opt,name=attr_a,json=attrA,proto3,oneof"`
}

type User_B struct {
	B *User_AttrB `protobuf:"bytes,6,opt,name=b,proto3,oneof"`
}

func (*User_AttrA_) isUser_Attr() {}

func (*User_B) isUser_Attr() {}

type Item struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name     string         `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Type     Item_ItemType  `protobuf:"varint,2,opt,name=type,proto3,enum=federation.Item_ItemType" json:"type,omitempty"`
	Value    int64          `protobuf:"varint,3,opt,name=value,proto3" json:"value,omitempty"`
	Location *Item_Location `protobuf:"bytes,4,opt,name=location,proto3" json:"location,omitempty"`
}

func (x *Item) Reset() {
	*x = Item{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Item) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Item) ProtoMessage() {}

func (x *Item) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Item.ProtoReflect.Descriptor instead.
func (*Item) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{5}
}

func (x *Item) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Item) GetType() Item_ItemType {
	if x != nil {
		return x.Type
	}
	return Item_ITEM_TYPE_UNSPECIFIED
}

func (x *Item) GetValue() int64 {
	if x != nil {
		return x.Value
	}
	return 0
}

func (x *Item) GetLocation() *Item_Location {
	if x != nil {
		return x.Location
	}
	return nil
}

type A_B struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Foo *A_B_C `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
	Bar *A_B_C `protobuf:"bytes,2,opt,name=bar,proto3" json:"bar,omitempty"`
}

func (x *A_B) Reset() {
	*x = A_B{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *A_B) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*A_B) ProtoMessage() {}

func (x *A_B) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use A_B.ProtoReflect.Descriptor instead.
func (*A_B) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{2, 0}
}

func (x *A_B) GetFoo() *A_B_C {
	if x != nil {
		return x.Foo
	}
	return nil
}

func (x *A_B) GetBar() *A_B_C {
	if x != nil {
		return x.Bar
	}
	return nil
}

type A_B_C struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
}

func (x *A_B_C) Reset() {
	*x = A_B_C{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *A_B_C) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*A_B_C) ProtoMessage() {}

func (x *A_B_C) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use A_B_C.ProtoReflect.Descriptor instead.
func (*A_B_C) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{2, 0, 0}
}

func (x *A_B_C) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

type User_AttrA struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Foo string `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
}

func (x *User_AttrA) Reset() {
	*x = User_AttrA{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *User_AttrA) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*User_AttrA) ProtoMessage() {}

func (x *User_AttrA) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use User_AttrA.ProtoReflect.Descriptor instead.
func (*User_AttrA) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{4, 1}
}

func (x *User_AttrA) GetFoo() string {
	if x != nil {
		return x.Foo
	}
	return ""
}

type User_AttrB struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Bar bool `protobuf:"varint,2,opt,name=bar,proto3" json:"bar,omitempty"`
}

func (x *User_AttrB) Reset() {
	*x = User_AttrB{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *User_AttrB) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*User_AttrB) ProtoMessage() {}

func (x *User_AttrB) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use User_AttrB.ProtoReflect.Descriptor instead.
func (*User_AttrB) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{4, 2}
}

func (x *User_AttrB) GetBar() bool {
	if x != nil {
		return x.Bar
	}
	return false
}

type Item_Location struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr1 string `protobuf:"bytes,1,opt,name=addr1,proto3" json:"addr1,omitempty"`
	Addr2 string `protobuf:"bytes,2,opt,name=addr2,proto3" json:"addr2,omitempty"`
	// Types that are assignable to Addr3:
	//
	//	*Item_Location_AddrA_
	//	*Item_Location_B
	//	*Item_Location_C
	Addr3 isItem_Location_Addr3 `protobuf_oneof:"addr3"`
}

func (x *Item_Location) Reset() {
	*x = Item_Location{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Item_Location) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Item_Location) ProtoMessage() {}

func (x *Item_Location) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Item_Location.ProtoReflect.Descriptor instead.
func (*Item_Location) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{5, 0}
}

func (x *Item_Location) GetAddr1() string {
	if x != nil {
		return x.Addr1
	}
	return ""
}

func (x *Item_Location) GetAddr2() string {
	if x != nil {
		return x.Addr2
	}
	return ""
}

func (m *Item_Location) GetAddr3() isItem_Location_Addr3 {
	if m != nil {
		return m.Addr3
	}
	return nil
}

func (x *Item_Location) GetAddrA() *Item_Location_AddrA {
	if x, ok := x.GetAddr3().(*Item_Location_AddrA_); ok {
		return x.AddrA
	}
	return nil
}

func (x *Item_Location) GetB() *Item_Location_AddrB {
	if x, ok := x.GetAddr3().(*Item_Location_B); ok {
		return x.B
	}
	return nil
}

func (x *Item_Location) GetC() string {
	if x, ok := x.GetAddr3().(*Item_Location_C); ok {
		return x.C
	}
	return ""
}

type isItem_Location_Addr3 interface {
	isItem_Location_Addr3()
}

type Item_Location_AddrA_ struct {
	AddrA *Item_Location_AddrA `protobuf:"bytes,3,opt,name=addr_a,json=addrA,proto3,oneof"`
}

type Item_Location_B struct {
	B *Item_Location_AddrB `protobuf:"bytes,4,opt,name=b,proto3,oneof"`
}

type Item_Location_C struct {
	C string `protobuf:"bytes,5,opt,name=c,proto3,oneof"`
}

func (*Item_Location_AddrA_) isItem_Location_Addr3() {}

func (*Item_Location_B) isItem_Location_Addr3() {}

func (*Item_Location_C) isItem_Location_Addr3() {}

type Item_Location_AddrA struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Foo string `protobuf:"bytes,1,opt,name=foo,proto3" json:"foo,omitempty"`
}

func (x *Item_Location_AddrA) Reset() {
	*x = Item_Location_AddrA{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Item_Location_AddrA) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Item_Location_AddrA) ProtoMessage() {}

func (x *Item_Location_AddrA) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Item_Location_AddrA.ProtoReflect.Descriptor instead.
func (*Item_Location_AddrA) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{5, 0, 0}
}

func (x *Item_Location_AddrA) GetFoo() string {
	if x != nil {
		return x.Foo
	}
	return ""
}

type Item_Location_AddrB struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Bar int64 `protobuf:"varint,1,opt,name=bar,proto3" json:"bar,omitempty"`
}

func (x *Item_Location_AddrB) Reset() {
	*x = Item_Location_AddrB{}
	if protoimpl.UnsafeEnabled {
		mi := &file_federation_federation_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Item_Location_AddrB) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Item_Location_AddrB) ProtoMessage() {}

func (x *Item_Location_AddrB) ProtoReflect() protoreflect.Message {
	mi := &file_federation_federation_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Item_Location_AddrB.ProtoReflect.Descriptor instead.
func (*Item_Location_AddrB) Descriptor() ([]byte, []int) {
	return file_federation_federation_proto_rawDescGZIP(), []int{5, 0, 1}
}

func (x *Item_Location_AddrB) GetBar() int64 {
	if x != nil {
		return x.Bar
	}
	return 0
}

var File_federation_federation_proto protoreflect.FileDescriptor

var file_federation_federation_proto_rawDesc = []byte{
	0x0a, 0x1b, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x65, 0x64,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x66,
	0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x66, 0x65, 0x64, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x20, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f,
	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xd8, 0x31, 0x0a, 0x0f, 0x47, 0x65,
	0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a,
	0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65,
	0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x09, 0x9a,
	0x4a, 0x06, 0x12, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x1e,
	0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0x9a, 0x4a, 0x09,
	0x12, 0x07, 0x27, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x27, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x26,
	0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0x9a, 0x4a,
	0x0f, 0x12, 0x0d, 0x75, 0x75, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x29,
	0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x03, 0x6c, 0x6f, 0x63, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x11, 0x9a, 0x4a, 0x0e, 0x12, 0x0c, 0x6c, 0x6f, 0x63, 0x2e, 0x73, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x52, 0x03, 0x6c, 0x6f, 0x63, 0x12, 0x23, 0x0a, 0x06, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0x9a, 0x4a, 0x08,
	0x12, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x31,
	0x12, 0x58, 0x0a, 0x0e, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0x9a, 0x4a, 0x2f, 0x12, 0x2d, 0x49,
	0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x6e, 0x61, 0x6d,
	0x65, 0x28, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e,
	0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x29, 0x52, 0x0c, 0x69, 0x74,
	0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x7e, 0x0a, 0x12, 0x6c, 0x6f,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0x9a, 0x4a, 0x4d, 0x12, 0x4b, 0x49, 0x74, 0x65,
	0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x49, 0x74, 0x65,
	0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e,
	0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x29, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6b, 0x0a, 0x13, 0x75, 0x73,
	0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0x9a, 0x4a, 0x39, 0x12, 0x37, 0x75, 0x73,
	0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65,
	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e,
	0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59,
	0x50, 0x45, 0x5f, 0x32, 0x29, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x54,
	0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x78, 0x0a, 0x14, 0x69, 0x74, 0x65, 0x6d, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65,
	0x42, 0x2c, 0x9a, 0x4a, 0x29, 0x12, 0x27, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d,
	0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x28,
	0x27, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x27, 0x29, 0x52, 0x11,
	0x69, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x75,
	0x6d, 0x12, 0x5b, 0x0a, 0x13, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x2c,
	0x9a, 0x4a, 0x29, 0x12, 0x27, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49,
	0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x28, 0x27, 0x49,
	0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x27, 0x29, 0x52, 0x10, 0x69, 0x74,
	0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x6e, 0x74, 0x12, 0x6b,
	0x0a, 0x14, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x66,
	0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49,
	0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x1f, 0x9a, 0x4a, 0x1c, 0x12, 0x1a, 0x75, 0x73,
	0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65,
	0x2e, 0x66, 0x72, 0x6f, 0x6d, 0x28, 0x31, 0x29, 0x52, 0x11, 0x69, 0x74, 0x65, 0x6d, 0x54, 0x79,
	0x70, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x61, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x13, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x42, 0x38, 0x9a, 0x4a, 0x35, 0x12, 0x33, 0x49,
	0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x28,
	0x27, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31,
	0x27, 0x29, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x5d, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x74,
	0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0d, 0x20,
	0x01, 0x28, 0x05, 0x42, 0x2c, 0x9a, 0x4a, 0x29, 0x12, 0x27, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49,
	0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x28, 0x27, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x32, 0x27,
	0x29, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x01, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0d, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x42, 0x06,
	0x9a, 0x4a, 0x03, 0x12, 0x01, 0x61, 0x52, 0x01, 0x61, 0x12, 0x37, 0x0a, 0x0d, 0x73, 0x6f, 0x72,
	0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05,
	0x42, 0x12, 0x9a, 0x4a, 0x0f, 0x12, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x73, 0x52, 0x0c, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x73, 0x12, 0x46, 0x0a, 0x0c, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x74, 0x65,
	0x6d, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x11, 0x9a, 0x4a, 0x0e, 0x12,
	0x0c, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x0b, 0x73,
	0x6f, 0x72, 0x74, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x6d, 0x61,
	0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e,
	0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f,
	0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0e, 0x9a, 0x4a, 0x0b, 0x12, 0x09, 0x6d,
	0x61, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x12, 0x7d, 0x0a, 0x14, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x72, 0x61,
	0x70, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2d,
	0x9a, 0x4a, 0x2a, 0x12, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x7b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x33, 0x7d, 0x52, 0x12, 0x64,
	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x12, 0x79, 0x0a, 0x13, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70,
	0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2c, 0x9a, 0x4a, 0x29,
	0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x7b, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x35, 0x7d, 0x52, 0x11, 0x66, 0x6c, 0x6f, 0x61, 0x74,
	0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x72, 0x0a, 0x11,
	0x69, 0x36, 0x34, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x42, 0x29, 0x9a, 0x4a, 0x26, 0x12, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x7b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x31, 0x7d, 0x52,
	0x0f, 0x69, 0x36, 0x34, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x12, 0x7a, 0x0a, 0x11, 0x75, 0x36, 0x34, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x5f,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49,
	0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x30, 0x9a, 0x4a, 0x2d, 0x12, 0x2b,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x7b, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x32, 0x29, 0x7d, 0x52, 0x0f, 0x75, 0x36, 0x34,
	0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x72, 0x0a, 0x11,
	0x69, 0x33, 0x32, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x42, 0x29, 0x9a, 0x4a, 0x26, 0x12, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x7b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x33, 0x7d, 0x52,
	0x0f, 0x69, 0x33, 0x32, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x12, 0x7a, 0x0a, 0x11, 0x75, 0x33, 0x32, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x5f,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49,
	0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x30, 0x9a, 0x4a, 0x2d, 0x12, 0x2b,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x7b, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x34, 0x29, 0x7d, 0x52, 0x0f, 0x75, 0x33, 0x32,
	0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x75, 0x0a, 0x12,
	0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x42, 0x2b, 0x9a, 0x4a, 0x28, 0x12, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x7b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65,
	0x7d, 0x52, 0x10, 0x62, 0x6f, 0x6f, 0x6c, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x14, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x77,
	0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x19, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x42, 0x30, 0x9a, 0x4a, 0x2d, 0x12, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x7b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x27, 0x68, 0x65, 0x6c, 0x6c, 0x6f,
	0x27, 0x7d, 0x52, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65,
	0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x13, 0x62, 0x79, 0x74, 0x65, 0x73,
	0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1a,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x42, 0x36, 0x9a, 0x4a, 0x33, 0x12, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x7b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x28,
	0x27, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x27, 0x29, 0x7d, 0x52, 0x11, 0x62, 0x79, 0x74, 0x65, 0x73,
	0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x29, 0x0a, 0x05,
	0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, 0x9a, 0x4a, 0x10,
	0x12, 0x0e, 0x27, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x5c, 0x6e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x27,
	0x52, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x4c, 0x0a, 0x0e, 0x6e, 0x75, 0x6c, 0x6c, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x1c, 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, 0x09, 0x9a, 0x4a, 0x06,
	0x12, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x52, 0x0d, 0x6e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x54, 0x0a, 0x0f, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0x18, 0x1d, 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, 0x0f, 0x9a, 0x4a, 0x0c, 0x12,
	0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6e, 0x75, 0x6c,
	0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0x12, 0x73, 0x0a, 0x0f, 0x6e,
	0x75, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x33, 0x18, 0x1e,
	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, 0x2e, 0x9a, 0x4a, 0x2b, 0x12, 0x29, 0x74, 0x72, 0x75, 0x65, 0x20, 0x3f, 0x20, 0x6e, 0x75,
	0x6c, 0x6c, 0x20, 0x3a, 0x20, 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, 0x7b, 0x7d,
	0x52, 0x0e, 0x6e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x33,
	0x12, 0x37, 0x0a, 0x06, 0x6a, 0x70, 0x5f, 0x6c, 0x6f, 0x63, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x20, 0x9a, 0x4a, 0x1d, 0x12, 0x1b, 0x6a, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x2e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x28, 0x29, 0x52, 0x05, 0x6a, 0x70, 0x4c, 0x6f, 0x63, 0x12, 0x34, 0x0a, 0x0c, 0x73, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x11, 0x9a, 0x4a, 0x0e, 0x12, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6a, 0x6f,
	0x69, 0x6e, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x12,
	0x31, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x21,
	0x20, 0x01, 0x28, 0x01, 0x42, 0x10, 0x9a, 0x4a, 0x0d, 0x12, 0x0b, 0x70, 0x61, 0x72, 0x73, 0x65,
	0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46, 0x6c, 0x6f,
	0x61, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x75, 0x72, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0x9a, 0x4a, 0x1b, 0x12, 0x19,
	0x75, 0x72, 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x28, 0x29, 0x2e, 0x75,
	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x29, 0x52, 0x0b, 0x75, 0x72, 0x6c, 0x55, 0x73,
	0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x66, 0x65, 0x64,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65,
	0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0x9a, 0x4a, 0x03, 0x12, 0x01, 0x65, 0x52, 0x09, 0x65,
	0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x65, 0x6e, 0x75, 0x6d,
	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x20, 0x9a, 0x4a, 0x1d, 0x12, 0x1b, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d,
	0x54, 0x79, 0x70, 0x65, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x28, 0x65, 0x2c, 0x20, 0x27, 0x65, 0x6e,
	0x27, 0x29, 0x52, 0x0c, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x74, 0x72,
	0x12, 0x31, 0x0a, 0x0b, 0x73, 0x71, 0x72, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18,
	0x25, 0x20, 0x01, 0x28, 0x01, 0x42, 0x10, 0x9a, 0x4a, 0x0d, 0x12, 0x0b, 0x73, 0x71, 0x72, 0x74,
	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x52, 0x0a, 0x73, 0x71, 0x72, 0x74, 0x44, 0x6f, 0x75,
	0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x08, 0x73, 0x71, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x18,
	0x26, 0x20, 0x01, 0x28, 0x01, 0x42, 0x0d, 0x9a, 0x4a, 0x0a, 0x12, 0x08, 0x73, 0x71, 0x72, 0x74,
	0x5f, 0x69, 0x6e, 0x74, 0x52, 0x07, 0x73, 0x71, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x12, 0x1a, 0x0a,
	0x03, 0x70, 0x6f, 0x77, 0x18, 0x27, 0x20, 0x01, 0x28, 0x01, 0x42, 0x08, 0x9a, 0x4a, 0x05, 0x12,
	0x03, 0x70, 0x6f, 0x77, 0x52, 0x03, 0x70, 0x6f, 0x77, 0x12, 0x20, 0x0a, 0x05, 0x66, 0x6c, 0x6f,
	0x6f, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x01, 0x42, 0x0a, 0x9a, 0x4a, 0x07, 0x12, 0x05, 0x66,
	0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x07, 0x66,
	0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x18, 0x29, 0x20, 0x03, 0x28, 0x03, 0x42, 0x0c, 0x9a, 0x4a,
	0x09, 0x12, 0x07, 0x66, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x52, 0x07, 0x66, 0x6c, 0x61, 0x74,
	0x74, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x2a, 0x20, 0x01,
	0x28, 0x01, 0x42, 0x0a, 0x9a, 0x4a, 0x07, 0x12, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x05,
	0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x2b, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x08, 0x9a, 0x4a, 0x05, 0x12, 0x03, 0x61,
	0x6e, 0x79, 0x52, 0x03, 0x61, 0x6e, 0x79, 0x12, 0x29, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x61,
	0x63, 0x65, 0x64, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0x9a, 0x4a, 0x0a, 0x12, 0x08,
	0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63,
	0x65, 0x64, 0x12, 0x5c, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61,
	0x70, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x4d, 0x61, 0x70, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x42, 0x10, 0x9a, 0x4a, 0x0d, 0x12, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74,
	0x6f, 0x5f, 0x6d, 0x61, 0x70, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x4d, 0x61, 0x70,
	0x12, 0x37, 0x0a, 0x0a, 0x75, 0x75, 0x69, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x2e,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0x9a, 0x4a, 0x15, 0x12, 0x13, 0x75, 0x75, 0x69, 0x64, 0x5f,
	0x70, 0x61, 0x72, 0x73, 0x65, 0x2e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x52, 0x09,
	0x75, 0x75, 0x69, 0x64, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0d, 0x75, 0x75, 0x69,
	0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x08,
	0x42, 0x12, 0x9a, 0x4a, 0x0f, 0x12, 0x0d, 0x75, 0x75, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x75, 0x75, 0x69, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x18, 0x30, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x15, 0x9a, 0x4a, 0x12, 0x12, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c,
	0x65, 0x2e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70,
	0x69, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70,
	0x69, 0x6c, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x9a, 0x4a, 0x17, 0x12, 0x15,
	0x6d, 0x75, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x73, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x28, 0x29, 0x52, 0x0b, 0x6d, 0x75, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69,
	0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0x9a, 0x4a, 0x0c, 0x12, 0x0a, 0x71, 0x75, 0x6f,
	0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x52, 0x09, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x4d, 0x65,
	0x74, 0x61, 0x12, 0x4b, 0x0a, 0x14, 0x66, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x33, 0x20, 0x03, 0x28, 0x09,
	0x42, 0x19, 0x9a, 0x4a, 0x16, 0x12, 0x14, 0x66, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x12, 0x66, 0x69, 0x6e,
	0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12,
	0x34, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18,
	0x34, 0x20, 0x01, 0x28, 0x08, 0x42, 0x11, 0x9a, 0x4a, 0x0e, 0x12, 0x0c, 0x6d, 0x61, 0x74, 0x63,
	0x68, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x53,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x45, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
	0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x35, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x17, 0x9a, 0x4a, 0x14, 0x12, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f,
	0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6c,
	0x61, 0x63, 0x65, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x1a, 0x3b, 0x0a, 0x0d,
	0x4d, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 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, 0x1a, 0x3c, 0x0a, 0x0e, 0x4c, 0x69, 0x73,
	0x74, 0x54, 0x6f, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xaa, 0x11, 0x9a, 0x4a, 0xa6, 0x11, 0x0a, 0x1a,
	0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x6a, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0a,
	0x0a, 0x02, 0x69, 0x64, 0x12, 0x04, 0x24, 0x2e, 0x69, 0x64, 0x0a, 0x53, 0x0a, 0x0c, 0x73, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5a, 0x43, 0x67, 0x72, 0x70, 0x63,
	0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x73, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x73, 0x2e, 0x6a, 0x6f, 0x69, 0x6e, 0x28, 0x5b, 0x27, 0x31, 0x32, 0x33, 0x34, 0x35,
	0x36, 0x37, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x31, 0x2c,
	0x20, 0x33, 0x29, 0x2c, 0x20, 0x27, 0x32, 0x27, 0x5d, 0x2c, 0x20, 0x27, 0x2e, 0x27, 0x29, 0x0a,
	0x43, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5a, 0x34,
	0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46, 0x6c, 0x6f,
	0x61, 0x74, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x2c,
	0x20, 0x36, 0x34, 0x29, 0x0a, 0x4f, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x5a, 0x48, 0x67, 0x72, 0x70,
	0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x75, 0x72, 0x6c,
	0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x28, 0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
	0x74, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
	0x72, 0x64, 0x40, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70,
	0x61, 0x74, 0x68, 0x27, 0x29, 0x0a, 0x59, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x5a, 0x51, 0x67,
	0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x74,
	0x69, 0x6d, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x65, 0x28, 0x32, 0x30, 0x32, 0x33, 0x2c, 0x20, 0x31,
	0x32, 0x2c, 0x20, 0x32, 0x35, 0x2c, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x31, 0x30, 0x2c, 0x20, 0x35,
	0x2c, 0x20, 0x30, 0x2c, 0x20, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x55, 0x54, 0x43, 0x28, 0x29, 0x29,
	0x0a, 0x3a, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5a,
	0x2b, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x72, 0x61, 0x6e, 0x64, 0x2e, 0x6e, 0x65, 0x77, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x28,
	0x64, 0x61, 0x74, 0x65, 0x2e, 0x75, 0x6e, 0x69, 0x78, 0x28, 0x29, 0x29, 0x0a, 0x33, 0x0a, 0x0a,
	0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x5a, 0x25, 0x67, 0x72, 0x70, 0x63,
	0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x61, 0x6e, 0x64,
	0x2e, 0x6e, 0x65, 0x77, 0x28, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x29, 0x0a, 0x3b, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x5a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63,
	0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x75, 0x75, 0x69, 0x64,
	0x2e, 0x6e, 0x65, 0x77, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x61,
	0x6e, 0x64, 0x28, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x29, 0x0a, 0x36,
	0x0a, 0x03, 0x6c, 0x6f, 0x63, 0x5a, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64,
	0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x27, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54,
	0x6f, 0x6b, 0x79, 0x6f, 0x27, 0x29, 0x0a, 0x45, 0x0a, 0x07, 0x6a, 0x70, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x5a, 0x3a, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x65, 0x28, 0x32, 0x30, 0x32,
	0x33, 0x2c, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x32, 0x35, 0x2c, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x31,
	0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x6c, 0x6f, 0x63, 0x29, 0x0a, 0x38, 0x0a,
	0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x5a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65,
	0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x5b, 0x27, 0x6b, 0x65,
	0x79, 0x31, 0x27, 0x5d, 0x5b, 0x30, 0x5d, 0x0a, 0x08, 0x0a, 0x01, 0x61, 0x6a, 0x03, 0x0a, 0x01,
	0x41, 0x0a, 0x2b, 0x0a, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x73, 0x5a, 0x1a, 0x5b, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x5d,
	0x2e, 0x73, 0x6f, 0x72, 0x74, 0x41, 0x73, 0x63, 0x28, 0x76, 0x2c, 0x20, 0x76, 0x29, 0x0a, 0x95,
	0x01, 0x0a, 0x0c, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x5a,
	0x84, 0x01, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x7b, 0x6c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e,
	0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7b, 0x61, 0x64, 0x64, 0x72, 0x31, 0x3a, 0x27,
	0x61, 0x27, 0x7d, 0x7d, 0x2c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x7b,
	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74,
	0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7b, 0x61, 0x64, 0x64, 0x72,
	0x31, 0x3a, 0x27, 0x62, 0x27, 0x7d, 0x7d, 0x5d, 0x2e, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73,
	0x63, 0x28, 0x76, 0x2c, 0x20, 0x76, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x61, 0x64, 0x64, 0x72, 0x31, 0x29, 0x0a, 0x25, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x5a, 0x18, 0x7b, 0x31, 0x3a, 0x20, 0x27, 0x61, 0x27, 0x2c, 0x20, 0x32, 0x3a,
	0x20, 0x27, 0x62, 0x27, 0x2c, 0x20, 0x33, 0x3a, 0x20, 0x27, 0x63, 0x27, 0x7d, 0x0a, 0x12, 0x0a,
	0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5a, 0x04, 0x6e, 0x75, 0x6c,
	0x6c, 0x0a, 0x4b, 0x5a, 0x49, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x28, 0x27, 0x6f,
	0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x20, 0x6c, 0x6f, 0x67, 0x27, 0x2c, 0x20, 0x7b, 0x27, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x27, 0x3a, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x7d, 0x29, 0x0a, 0x62,
	0x0a, 0x01, 0x65, 0x82, 0x01, 0x5c, 0x0a, 0x0d, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65,
	0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x74, 0x72, 0x75, 0x65, 0x20, 0x3f, 0x20, 0x75, 0x73,
	0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65,
	0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x28, 0x27, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x5f, 0x32, 0x27, 0x29, 0x20, 0x3a, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65,
	0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x66, 0x72, 0x6f, 0x6d, 0x28,
	0x31, 0x29, 0x0a, 0x39, 0x0a, 0x0b, 0x73, 0x71, 0x72, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c,
	0x65, 0x5a, 0x2a, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x73, 0x71, 0x72, 0x74, 0x28, 0x33, 0x2e, 0x30,
	0x2a, 0x33, 0x2e, 0x30, 0x2b, 0x34, 0x2e, 0x30, 0x2a, 0x34, 0x2e, 0x30, 0x29, 0x0a, 0x2e, 0x0a,
	0x08, 0x73, 0x71, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x5a, 0x22, 0x67, 0x72, 0x70, 0x63, 0x2e,
	0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x2e,
	0x73, 0x71, 0x72, 0x74, 0x28, 0x33, 0x2a, 0x33, 0x2b, 0x34, 0x2a, 0x34, 0x29, 0x0a, 0x29, 0x0a,
	0x03, 0x70, 0x6f, 0x77, 0x5a, 0x22, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x70, 0x6f, 0x77, 0x28, 0x32,
	0x2e, 0x30, 0x2c, 0x20, 0x33, 0x2e, 0x30, 0x29, 0x0a, 0x29, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x6f,
	0x72, 0x5a, 0x20, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x28, 0x31, 0x2e,
	0x35, 0x31, 0x29, 0x0a, 0x24, 0x0a, 0x07, 0x66, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x5a, 0x19,
	0x5b, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x5b, 0x33, 0x5d, 0x5d, 0x2e,
	0x66, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x28, 0x29, 0x0a, 0x28, 0x0a, 0x05, 0x72, 0x6f, 0x75,
	0x6e, 0x64, 0x5a, 0x1f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x31,
	0x2e, 0x35, 0x29, 0x0a, 0x2d, 0x0a, 0x03, 0x64, 0x75, 0x70, 0x5a, 0x26, 0x5b, 0x31, 0x2c, 0x20,
	0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x34, 0x5d, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x28,
	0x64, 0x75, 0x70, 0x2c, 0x20, 0x64, 0x75, 0x70, 0x20, 0x25, 0x20, 0x32, 0x20, 0x3d, 0x3d, 0x20,
	0x30, 0x29, 0x0a, 0x24, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x5a, 0x1d, 0x67, 0x72, 0x70, 0x63, 0x2e,
	0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x6e, 0x79, 0x2e, 0x6e,
	0x65, 0x77, 0x28, 0x70, 0x6f, 0x73, 0x74, 0x29, 0x0a, 0x29, 0x0a, 0x03, 0x66, 0x6d, 0x74, 0x5a,
	0x22, 0x27, 0x25, 0x64, 0x2d, 0x25, 0x64, 0x2d, 0x25, 0x64, 0x2d, 0x77, 0x6f, 0x72, 0x6c, 0x64,
	0x27, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x5b, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20,
	0x33, 0x5d, 0x29, 0x0a, 0x28, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x5a,
	0x1c, 0x66, 0x6d, 0x74, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x28, 0x27, 0x77, 0x6f,
	0x72, 0x6c, 0x64, 0x27, 0x2c, 0x20, 0x27, 0x67, 0x72, 0x70, 0x63, 0x27, 0x29, 0x0a, 0x4a, 0x0a,
	0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x70, 0x5a, 0x3b, 0x5b, 0x31,
	0x2c, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72,
	0x6d, 0x4d, 0x61, 0x70, 0x28, 0x69, 0x64, 0x78, 0x2c, 0x20, 0x76, 0x2c, 0x20, 0x69, 0x64, 0x78,
	0x20, 0x25, 0x20, 0x32, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x28, 0x69, 0x64, 0x78, 0x20,
	0x2a, 0x20, 0x76, 0x29, 0x20, 0x2b, 0x20, 0x76, 0x29, 0x0a, 0x37, 0x0a, 0x0a, 0x75, 0x75, 0x69,
	0x64, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5a, 0x29, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65,
	0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x75, 0x75, 0x69, 0x64, 0x2e, 0x70, 0x61,
	0x72, 0x73, 0x65, 0x28, 0x75, 0x75, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28,
	0x29, 0x29, 0x0a, 0x3d, 0x0a, 0x0d, 0x75, 0x75, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x65, 0x5a, 0x2c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x75, 0x75, 0x69, 0x64, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x65, 0x28, 0x75, 0x75, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x29,
	0x29, 0x0a, 0x39, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x5a, 0x2e, 0x67, 0x72,
	0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x65,
	0x67, 0x65, 0x78, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x28, 0x27, 0x5b, 0x61,
	0x2d, 0x7a, 0x5d, 0x2b, 0x5c, 0x5c, 0x64, 0x5c, 0x5c, 0x64, 0x27, 0x29, 0x0a, 0x46, 0x0a, 0x0c,
	0x6d, 0x75, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x5a, 0x36, 0x67, 0x72,
	0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x65,
	0x67, 0x65, 0x78, 0x70, 0x2e, 0x6d, 0x75, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
	0x28, 0x27, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x2b, 0x29, 0x5c, 0x5c, 0x64, 0x28, 0x5c, 0x5c,
	0x64, 0x29, 0x27, 0x29, 0x0a, 0x3b, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x65,
	0x74, 0x61, 0x5a, 0x2d, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x2e, 0x71, 0x75, 0x6f, 0x74, 0x65,
	0x4d, 0x65, 0x74, 0x61, 0x28, 0x27, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x2b, 0x5c, 0x5c, 0x64, 0x27,
	0x29, 0x0a, 0x41, 0x0a, 0x14, 0x66, 0x69, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x5f, 0x73, 0x75, 0x62, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5a, 0x29, 0x6d, 0x75, 0x73, 0x74, 0x5f,
	0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x66, 0x69, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x27, 0x61, 0x62, 0x63, 0x31,
	0x32, 0x33, 0x27, 0x29, 0x0a, 0x2c, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x5a, 0x1c, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2e, 0x6d, 0x61,
	0x74, 0x63, 0x68, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x27, 0x61, 0x62, 0x63, 0x31, 0x32,
	0x27, 0x29, 0x0a, 0x70, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c,
	0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5a, 0x5a, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66,
	0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70,
	0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x28, 0x27, 0x6d, 0x61, 0x63, 0x6b, 0x65, 0x72,
	0x65, 0x6c, 0x27, 0x29, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x41, 0x6c, 0x6c, 0x53,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x27, 0x6d, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x65, 0x6c, 0x20,
	0x69, 0x73, 0x20, 0x74, 0x61, 0x73, 0x74, 0x79, 0x27, 0x2c, 0x20, 0x27, 0x73, 0x61, 0x6c, 0x6d,
	0x6f, 0x6e, 0x27, 0x29, 0x22, 0xa6, 0x04, 0x0a, 0x01, 0x41, 0x12, 0x25, 0x0a, 0x01, 0x62, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x41, 0x2e, 0x42, 0x42, 0x06, 0x9a, 0x4a, 0x03, 0x12, 0x01, 0x62, 0x52, 0x01,
	0x62, 0x12, 0x3e, 0x0a, 0x05, 0x6f, 0x70, 0x74, 0x5f, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x11, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x2e,
	0x42, 0x2e, 0x43, 0x42, 0x14, 0x9a, 0x4a, 0x11, 0x22, 0x0f, 0x22, 0x07, 0x41, 0x2e, 0x42, 0x2e,
	0x43, 0x7b, 0x7d, 0x0a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6f, 0x70, 0x74,
	0x43, 0x1a, 0xa1, 0x03, 0x0a, 0x01, 0x42, 0x12, 0x2d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x41, 0x2e, 0x42, 0x2e, 0x43, 0x42, 0x08, 0x9a, 0x4a, 0x05, 0x12, 0x03, 0x66, 0x6f,
	0x6f, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x2d, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x41, 0x2e, 0x42, 0x2e, 0x43, 0x42, 0x08, 0x9a, 0x4a, 0x05, 0x12, 0x03, 0x62, 0x61, 0x72,
	0x52, 0x03, 0x62, 0x61, 0x72, 0x1a, 0x24, 0x0a, 0x01, 0x43, 0x12, 0x1f, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0x9a, 0x4a, 0x08, 0x12, 0x06, 0x24,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x97, 0x02, 0x9a, 0x4a,
	0x93, 0x02, 0x0a, 0x1d, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x6a, 0x16, 0x0a, 0x05, 0x41, 0x2e, 0x42,
	0x2e, 0x43, 0x12, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0x27, 0x66, 0x6f, 0x6f,
	0x27, 0x0a, 0x1d, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x6a, 0x16, 0x0a, 0x05, 0x41, 0x2e, 0x42, 0x2e,
	0x43, 0x12, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0x27, 0x62, 0x61, 0x72, 0x27,
	0x0a, 0x89, 0x01, 0x12, 0x11, 0x66, 0x6f, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x3d,
	0x20, 0x27, 0x66, 0x6f, 0x6f, 0x27, 0x5a, 0x74, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x69, 0x6e, 0x66, 0x6f,
	0x28, 0x27, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x67, 0x27, 0x2c, 0x20, 0x7b, 0x27, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x73, 0x27, 0x3a, 0x20, 0x5b, 0x66, 0x6f, 0x6f, 0x2c, 0x20, 0x62, 0x61, 0x72,
	0x5d, 0x2c, 0x20, 0x27, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x27,
	0x3a, 0x20, 0x7b, 0x27, 0x66, 0x6f, 0x6f, 0x27, 0x3a, 0x20, 0x66, 0x6f, 0x6f, 0x2c, 0x20, 0x27,
	0x62, 0x61, 0x72, 0x27, 0x3a, 0x20, 0x62, 0x61, 0x72, 0x7d, 0x7d, 0x29, 0x0a, 0x47, 0x5a, 0x45,
	0x67, 0x72, 0x70, 0x63, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x6c, 0x6f, 0x67, 0x2e, 0x61, 0x64, 0x64, 0x28, 0x7b, 0x27, 0x66, 0x6f, 0x6f, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x27, 0x3a, 0x20, 0x66, 0x6f, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x27,
	0x62, 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x27, 0x3a, 0x20, 0x62, 0x61, 0x72, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x7d, 0x29, 0x3a, 0x0f, 0x9a, 0x4a, 0x0c, 0x0a, 0x0a, 0x0a, 0x01, 0x62, 0x6a,
	0x05, 0x0a, 0x03, 0x41, 0x2e, 0x42, 0x42, 0x05, 0x0a, 0x03, 0x6f, 0x70, 0x74, 0x22, 0xe6, 0x01,
	0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x09, 0x9a, 0x4a, 0x06, 0x12, 0x04, 0x75, 0x73, 0x65,
	0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x6d, 0x9a, 0x4a, 0x6a, 0x0a, 0x3c, 0x0a, 0x03,
	0x72, 0x65, 0x73, 0x72, 0x35, 0x0a, 0x18, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x12,
	0x0a, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x04, 0x24, 0x2e, 0x69, 0x64, 0x1a, 0x03, 0x31, 0x30, 0x73,
	0x22, 0x08, 0x0a, 0x06, 0x0a, 0x02, 0x32, 0x73, 0x10, 0x03, 0x0a, 0x12, 0x0a, 0x04, 0x70, 0x6f,
	0x73, 0x74, 0x18, 0x01, 0x5a, 0x08, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x0a, 0x16,
	0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x6a, 0x0e, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x06,
	0x1a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x22, 0xc8, 0x04, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x10, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x70,
	0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66,
	0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x50,
	0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x72, 0x6f,
	0x66, 0x69, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x61, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x41, 0x48, 0x00, 0x52, 0x05,
	0x61, 0x74, 0x74, 0x72, 0x41, 0x12, 0x26, 0x0a, 0x01, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x16, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73,
	0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x42, 0x48, 0x00, 0x52, 0x01, 0x62, 0x1a, 0x50, 0x0a,
	0x0c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x2f, 0x0a, 0x05, 0x41, 0x74, 0x74, 0x72, 0x41, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x3a, 0x14, 0x9a, 0x4a, 0x11, 0x1a,
	0x0f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x41,
	0x1a, 0x2f, 0x0a, 0x05, 0x41, 0x74, 0x74, 0x72, 0x42, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x62, 0x61, 0x72, 0x3a, 0x14, 0x9a, 0x4a, 0x11,
	0x1a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72,
	0x42, 0x3a, 0xa5, 0x01, 0x9a, 0x4a, 0xa1, 0x01, 0x0a, 0x8a, 0x01, 0x0a, 0x03, 0x72, 0x65, 0x73,
	0x72, 0x82, 0x01, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65,
	0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0f, 0x0a,
	0x02, 0x69, 0x64, 0x12, 0x09, 0x24, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x12, 0x2f,
	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65,
	0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x28, 0x27, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x27, 0x29, 0x1a,
	0x03, 0x32, 0x30, 0x73, 0x22, 0x1f, 0x12, 0x1d, 0x0a, 0x02, 0x31, 0x73, 0x11, 0x66, 0x66, 0x66,
	0x66, 0x66, 0x66, 0xe6, 0x3f, 0x19, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xfb, 0x3f, 0x22, 0x03,
	0x33, 0x30, 0x73, 0x28, 0x03, 0x0a, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x5a,
	0x08, 0x72, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x61, 0x74, 0x74,
	0x72, 0x22, 0xb7, 0x06, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d,
	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x66,
	0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49,
	0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x81, 0x03, 0x0a, 0x08, 0x4c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x31,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x31, 0x12, 0x14, 0x0a,
	0x05, 0x61, 0x64, 0x64, 0x72, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64,
	0x64, 0x72, 0x32, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x61, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41,
	0x64, 0x64, 0x72, 0x41, 0x48, 0x00, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x41, 0x12, 0x2f, 0x0a,
	0x01, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x42, 0x48, 0x00, 0x52, 0x01, 0x62, 0x12, 0x0e,
	0x0a, 0x01, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x01, 0x63, 0x1a, 0x38,
	0x0a, 0x05, 0x41, 0x64, 0x64, 0x72, 0x41, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x3a, 0x1d, 0x9a, 0x4a, 0x1a, 0x1a, 0x18,
	0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x41, 0x1a, 0x38, 0x0a, 0x05, 0x41, 0x64, 0x64, 0x72,
	0x42, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
	0x62, 0x61, 0x72, 0x3a, 0x1d, 0x9a, 0x4a, 0x1a, 0x1a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49,
	0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64,
	0x72, 0x42, 0x22, 0x38, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x43, 0x41, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x10, 0x01, 0x3a, 0x17, 0x9a, 0x4a,
	0x14, 0x1a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x33, 0x22, 0x8a,
	0x02, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x15, 0x49,
	0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
	0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x1e, 0x9a, 0x4a, 0x1b, 0x1a, 0x12, 0x0a, 0x02, 0x65,
	0x6e, 0x12, 0x0c, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x1a,
	0x05, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x12, 0x37, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x31, 0x10, 0x01, 0x1a, 0x26, 0x9a, 0x4a, 0x23, 0x1a, 0x15, 0x0a, 0x02,
	0x65, 0x6e, 0x12, 0x0f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x20, 0x74,
	0x79, 0x70, 0x65, 0x1a, 0x0a, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x12, 0x03, 0x78, 0x78, 0x78, 0x12,
	0x38, 0x0a, 0x0b, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x32, 0x10, 0x02,
	0x1a, 0x27, 0x9a, 0x4a, 0x24, 0x1a, 0x16, 0x0a, 0x02, 0x65, 0x6e, 0x12, 0x10, 0x73, 0x65, 0x63,
	0x6f, 0x6e, 0x64, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x20, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x0a, 0x0a,
	0x03, 0x73, 0x75, 0x62, 0x12, 0x03, 0x79, 0x79, 0x79, 0x12, 0x37, 0x0a, 0x0b, 0x49, 0x54, 0x45,
	0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x33, 0x10, 0x03, 0x1a, 0x26, 0x9a, 0x4a, 0x23, 0x1a,
	0x15, 0x0a, 0x02, 0x65, 0x6e, 0x12, 0x0f, 0x74, 0x68, 0x69, 0x72, 0x64, 0x20, 0x69, 0x74, 0x65,
	0x6d, 0x20, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x0a, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x12, 0x03, 0x7a,
	0x7a, 0x7a, 0x1a, 0x17, 0x9a, 0x4a, 0x14, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74,
	0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x0e, 0x9a, 0x4a, 0x0b,
	0x1a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x32, 0x5e, 0x0a, 0x11, 0x46,
	0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
	0x12, 0x44, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x66, 0x65,
	0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x1a, 0x03, 0x9a, 0x4a, 0x00, 0x42, 0xad, 0x01, 0x9a, 0x4a,
	0x22, 0x12, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x12, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2f,
	0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x66, 0x65, 0x64, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x46, 0x65,
	0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x0a, 0x46, 0x65, 0x64, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x16, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,
	0x0a, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x33,
}

var (
	file_federation_federation_proto_rawDescOnce sync.Once
	file_federation_federation_proto_rawDescData = file_federation_federation_proto_rawDesc
)

func file_federation_federation_proto_rawDescGZIP() []byte {
	file_federation_federation_proto_rawDescOnce.Do(func() {
		file_federation_federation_proto_rawDescData = protoimpl.X.CompressGZIP(file_federation_federation_proto_rawDescData)
	})
	return file_federation_federation_proto_rawDescData
}

var file_federation_federation_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_federation_federation_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
var file_federation_federation_proto_goTypes = []interface{}{
	(Item_ItemType)(0),              // 0: federation.Item.ItemType
	(Item_Location_LocationType)(0), // 1: federation.Item.Location.LocationType
	(*GetPostRequest)(nil),          // 2: federation.GetPostRequest
	(*GetPostResponse)(nil),         // 3: federation.GetPostResponse
	(*A)(nil),                       // 4: federation.A
	(*Post)(nil),                    // 5: federation.Post
	(*User)(nil),                    // 6: federation.User
	(*Item)(nil),                    // 7: federation.Item
	nil,                             // 8: federation.GetPostResponse.MapValueEntry
	nil,                             // 9: federation.GetPostResponse.ListToMapEntry
	(*A_B)(nil),                     // 10: federation.A.B
	(*A_B_C)(nil),                   // 11: federation.A.B.C
	nil,                             // 12: federation.User.ProfileEntry
	(*User_AttrA)(nil),              // 13: federation.User.AttrA
	(*User_AttrB)(nil),              // 14: federation.User.AttrB
	(*Item_Location)(nil),           // 15: federation.Item.Location
	(*Item_Location_AddrA)(nil),     // 16: federation.Item.Location.AddrA
	(*Item_Location_AddrB)(nil),     // 17: federation.Item.Location.AddrB
	(*wrapperspb.DoubleValue)(nil),  // 18: google.protobuf.DoubleValue
	(*wrapperspb.FloatValue)(nil),   // 19: google.protobuf.FloatValue
	(*wrapperspb.Int64Value)(nil),   // 20: google.protobuf.Int64Value
	(*wrapperspb.UInt64Value)(nil),  // 21: google.protobuf.UInt64Value
	(*wrapperspb.Int32Value)(nil),   // 22: google.protobuf.Int32Value
	(*wrapperspb.UInt32Value)(nil),  // 23: google.protobuf.UInt32Value
	(*wrapperspb.BoolValue)(nil),    // 24: google.protobuf.BoolValue
	(*wrapperspb.StringValue)(nil),  // 25: google.protobuf.StringValue
	(*wrapperspb.BytesValue)(nil),   // 26: google.protobuf.BytesValue
	(*timestamppb.Timestamp)(nil),   // 27: google.protobuf.Timestamp
	(*anypb.Any)(nil),               // 28: google.protobuf.Any
}
var file_federation_federation_proto_depIdxs = []int32{
	5,  // 0: federation.GetPostResponse.post:type_name -> federation.Post
	0,  // 1: federation.GetPostResponse.item_type_value_enum:type_name -> federation.Item.ItemType
	0,  // 2: federation.GetPostResponse.item_type_value_cast:type_name -> federation.Item.ItemType
	4,  // 3: federation.GetPostResponse.a:type_name -> federation.A
	7,  // 4: federation.GetPostResponse.sorted_items:type_name -> federation.Item
	8,  // 5: federation.GetPostResponse.map_value:type_name -> federation.GetPostResponse.MapValueEntry
	18, // 6: federation.GetPostResponse.double_wrapper_value:type_name -> google.protobuf.DoubleValue
	19, // 7: federation.GetPostResponse.float_wrapper_value:type_name -> google.protobuf.FloatValue
	20, // 8: federation.GetPostResponse.i64_wrapper_value:type_name -> google.protobuf.Int64Value
	21, // 9: federation.GetPostResponse.u64_wrapper_value:type_name -> google.protobuf.UInt64Value
	22, // 10: federation.GetPostResponse.i32_wrapper_value:type_name -> google.protobuf.Int32Value
	23, // 11: federation.GetPostResponse.u32_wrapper_value:type_name -> google.protobuf.UInt32Value
	24, // 12: federation.GetPostResponse.bool_wrapper_value:type_name -> google.protobuf.BoolValue
	25, // 13: federation.GetPostResponse.string_wrapper_value:type_name -> google.protobuf.StringValue
	26, // 14: federation.GetPostResponse.bytes_wrapper_value:type_name -> google.protobuf.BytesValue
	27, // 15: federation.GetPostResponse.null_timestamp:type_name -> google.protobuf.Timestamp
	27, // 16: federation.GetPostResponse.null_timestamp2:type_name -> google.protobuf.Timestamp
	27, // 17: federation.GetPostResponse.null_timestamp3:type_name -> google.protobuf.Timestamp
	0,  // 18: federation.GetPostResponse.enum_value:type_name -> federation.Item.ItemType
	28, // 19: federation.GetPostResponse.any:type_name -> google.protobuf.Any
	9,  // 20: federation.GetPostResponse.list_to_map:type_name -> federation.GetPostResponse.ListToMapEntry
	10, // 21: federation.A.b:type_name -> federation.A.B
	11, // 22: federation.A.opt_c:type_name -> federation.A.B.C
	6,  // 23: federation.Post.user:type_name -> federation.User
	7,  // 24: federation.User.items:type_name -> federation.Item
	12, // 25: federation.User.profile:type_name -> federation.User.ProfileEntry
	13, // 26: federation.User.attr_a:type_name -> federation.User.AttrA
	14, // 27: federation.User.b:type_name -> federation.User.AttrB
	0,  // 28: federation.Item.type:type_name -> federation.Item.ItemType
	15, // 29: federation.Item.location:type_name -> federation.Item.Location
	11, // 30: federation.A.B.foo:type_name -> federation.A.B.C
	11, // 31: federation.A.B.bar:type_name -> federation.A.B.C
	28, // 32: federation.User.ProfileEntry.value:type_name -> google.protobuf.Any
	16, // 33: federation.Item.Location.addr_a:type_name -> federation.Item.Location.AddrA
	17, // 34: federation.Item.Location.b:type_name -> federation.Item.Location.AddrB
	2,  // 35: federation.FederationService.GetPost:input_type -> federation.GetPostRequest
	3,  // 36: federation.FederationService.GetPost:output_type -> federation.GetPostResponse
	36, // [36:37] is the sub-list for method output_type
	35, // [35:36] is the sub-list for method input_type
	35, // [35:35] is the sub-list for extension type_name
	35, // [35:35] is the sub-list for extension extendee
	0,  // [0:35] is the sub-list for field type_name
}

func init() { file_federation_federation_proto_init() }
func file_federation_federation_proto_init() {
	if File_federation_federation_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_federation_federation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPostRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPostResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*A); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Post); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*User); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Item); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*A_B); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*A_B_C); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*User_AttrA); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*User_AttrB); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Item_Location); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Item_Location_AddrA); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_federation_federation_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Item_Location_AddrB); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_federation_federation_proto_msgTypes[2].OneofWrappers = []interface{}{
		(*A_OptC)(nil),
	}
	file_federation_federation_proto_msgTypes[4].OneofWrappers = []interface{}{
		(*User_AttrA_)(nil),
		(*User_B)(nil),
	}
	file_federation_federation_proto_msgTypes[13].OneofWrappers = []interface{}{
		(*Item_Location_AddrA_)(nil),
		(*Item_Location_B)(nil),
		(*Item_Location_C)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_federation_federation_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   16,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_federation_federation_proto_goTypes,
		DependencyIndexes: file_federation_federation_proto_depIdxs,
		EnumInfos:         file_federation_federation_proto_enumTypes,
		MessageInfos:      file_federation_federation_proto_msgTypes,
	}.Build()
	File_federation_federation_proto = out.File
	file_federation_federation_proto_rawDesc = nil
	file_federation_federation_proto_goTypes = nil
	file_federation_federation_proto_depIdxs = nil
}


================================================
FILE: _examples/02_simple/federation/federation_grpc.pb.go
================================================
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc             (unknown)
// source: federation/federation.proto

package federation

import (
	context "context"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7

const (
	FederationService_GetPost_FullMethodName = "/federation.FederationService/GetPost"
)

// FederationServiceClient is the client API for FederationService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type FederationServiceClient interface {
	GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc.CallOption) (*GetPostResponse, error)
}

type federationServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewFederationServiceClient(cc grpc.ClientConnInterface) FederationServiceClient {
	return &federationServiceClient{cc}
}

func (c *federationServiceClient) GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc.CallOption) (*GetPostResponse, error) {
	out := new(GetPostResponse)
	err := c.cc.Invoke(ctx, FederationService_GetPost_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// FederationServiceServer is the server API for FederationService service.
// All implementations must embed UnimplementedFederationServiceServer
// for forward compatibility
type FederationServiceServer interface {
	GetPost(context.Context, *GetPostRequest) (*GetPostResponse, error)
	mustEmbedUnimplementedFederationServiceServer()
}

// UnimplementedFederationServiceServer must be embedded to have forward compatible implementations.
type UnimplementedFederationServiceServer struct {
}

func (UnimplementedFederationServiceServer) GetPost(context.Context, *GetPostRequest) (*GetPostResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPost not implemented")
}
func (UnimplementedFederationServiceServer) mustEmbedUnimplementedFederationServiceServer() {}

// UnsafeFederationServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to FederationServiceServer will
// result in compilation errors.
type UnsafeFederationServiceServer interface {
	mustEmbedUnimplementedFederationServiceServer()
}

func RegisterFederationServiceServer(s grpc.ServiceRegistrar, srv FederationServiceServer) {
	s.RegisterService(&FederationService_ServiceDesc, srv)
}

func _FederationService_GetPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPostRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FederationServiceServer).GetPost(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: FederationService_GetPost_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FederationServiceServer).GetPost(ctx, req.(*GetPostRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// FederationService_ServiceDesc is the grpc.ServiceDesc for FederationService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var FederationService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "federation.FederationService",
	HandlerType: (*FederationServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetPost",
			Handler:    _FederationService_GetPost_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "federation/federation.proto",
}


================================================
FILE: _examples/02_simple/federation/federation_grpc_federation.pb.go
================================================
// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!
// versions:
//
//	protoc-gen-grpc-federation: (devel)
//
// source: federation/federation.proto
package federation

import (
	"context"
	"io"
	"log/slog"
	"reflect"

	grpcfed "github.com/mercari/grpc-federation/grpc/federation"
	grpcfedcel "github.com/mercari/grpc-federation/grpc/federation/cel"
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/trace"
	"google.golang.org/protobuf/types/known/anypb"
	"google.golang.org/protobuf/types/known/timestamppb"

	post "example/post"
	user "example/user"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
)

var (
	_ = reflect.Invalid // to avoid "imported and not used error"
)

var Item_ItemType_attrMap = grpcfed.EnumAttributeMap[Item_ItemType]{
	Item_ITEM_TYPE_UNSPECIFIED: grpcfed.EnumValueAttributeMap{
		`en`:  `unknown item`,
		`sub`: ``,
	},
	Item_ITEM_TYPE_1: grpcfed.EnumValueAttributeMap{
		`en`:  `first item type`,
		`sub`: `xxx`,
	},
	Item_ITEM_TYPE_2: grpcfed.EnumValueAttributeMap{
		`en`:  `second item type`,
		`sub`: `yyy`,
	},
	Item_ITEM_TYPE_3: grpcfed.EnumValueAttributeMap{
		`en`:  `third item type`,
		`sub`: `zzz`,
	},
}

// Federation_AVariable represents variable definitions in "federation.A".
type FederationService_Federation_AVariable struct {
	B *A_B
}

// Federation_AArgument is argument for "federation.A" message.
type FederationService_Federation_AArgument struct {
	FederationService_Federation_AVariable
}

// Federation_A_BVariable represents variable definitions in "federation.B".
type FederationService_Federation_A_BVariable struct {
	Bar *A_B_C
	Foo *A_B_C
}

// Federation_A_BArgument is argument for "federation.B" message.
type FederationService_Federation_A_BArgument struct {
	FederationService_Federation_A_BVariable
}

// Federation_A_B_CVariable represents variable definitions in "federation.C".
type FederationService_Federation_A_B_CVariable struct {
}

// Federation_A_B_CArgument is argument for "federation.C" message.
type FederationService_Federation_A_B_CArgument struct {
	Type string
	FederationService_Federation_A_B_CVariable
}

// Federation_GetPostResponseVariable represents variable definitions in "federation.GetPostResponse".
type FederationService_Federation_GetPostResponseVariable struct {
	A                  *A
	Any                *anypb.Any
	Compile            *grpcfedcel.Regexp
	Date               *grpcfedcel.Time
	E                  Item_ItemType
	FindStringSubmatch []string
	FixedRand          *grpcfedcel.Rand
	Flatten            []int64
	Floor              float64
	Fmt                string
	JpTime             *grpcfedcel.Time
	ListToMap          map[int64]int64
	Loc                *grpcfedcel.Location
	MapValue           map[int64]string
	MatchString        bool
	MustCompile        *grpcfedcel.Regexp
	NullValue          any
	ParseFloat         float64
	Post               *Post
	Pow                float64
	QuoteMeta          string
	RandSource         *grpcfedcel.Source
	ReplaceAllString   string
	Replaced           string
	Round              float64
	SortedItems        []*user.Item
	SortedValues       []int64
	SqrtDouble         float64
	SqrtInt            float64
	StringsJoin        string
	Url                *grpcfedcel.URL
	Uuid               *grpcfedcel.UUID
	UuidParse          *grpcfedcel.UUID
	UuidValidate       bool
	Value1             string
}

// Federation_GetPostResponseArgument is argument for "federation.GetPostResponse" message.
type FederationService_Federation_GetPostResponseArgument struct {
	Id string
	FederationService_Federation_GetPostResponseVariable
}

// Federation_PostVariable represents variable definitions in "federation.Post".
type FederationService_Federation_PostVariable struct {
	Post *post.Post
	Res  *post.GetPostResponse
	User *User
}

// Federation_PostArgument is argument for "federation.Post" message.
type FederationService_Federation_PostArgument struct {
	Id string
	FederationService_Federation_PostVariable
}

// Federation_UserVariable represents variable definitions in "federation.User".
type FederationService_Federation_UserVariable struct {
	Res  *user.GetUserResponse
	User *user.User
}

// Federation_UserArgument is argument for "federation.User" message.
type FederationService_Federation_UserArgument struct {
	Content string
	Id      string
	Title   string
	UserId  string
	FederationService_Federation_UserVariable
}

// FederationServiceConfig configuration required to initialize the service that use GRPC Federation.
type FederationServiceConfig struct {
	// Client provides a factory that creates the gRPC Client needed to invoke methods of the gRPC Service on which the Federation Service depends.
	// If this interface is not provided, an error is returned during initialization.
	Client FederationServiceClientFactory // required
	// ErrorHandler Federation Service often needs to convert errors received from downstream services.
	// If an error occurs during method execution in the Federation Service, this error handler is called and the returned error is treated as a final error.
	ErrorHandler grpcfed.ErrorHandler
	// Logger sets the logger used to output Debug/Info/Error information.
	Logger *slog.Logger
}

// FederationServiceClientFactory provides a factory that creates the gRPC Client needed to invoke methods of the gRPC Service on which the Federation Service depends.
type FederationServiceClientFactory interface {
	// Post_PostServiceClient create a gRPC Client to be used to call methods in post.PostService.
	Post_PostServiceClient(FederationServiceClientConfig) (post.PostServiceClient, error)
	// User_UserServiceClient create a gRPC Client to be used to call methods in user.UserService.
	User_UserServiceClient(FederationServiceClientConfig) (user.UserServiceClient, error)
}

// FederationServiceClientConfig helper to create gRPC client.
// Hints for creating a gRPC Client.
type FederationServiceClientConfig struct {
	// Service FQDN ( `<package-name>.<service-name>` ) of the service on Protocol Buffers.
	Service string
}

// FederationServiceDependentClientSet has a gRPC client for all services on which the federation service depends.
// This is provided as an argument when implementing the custom resolver.
type FederationServiceDependentClientSet struct {
	Post_PostServiceClient post.PostServiceClient
	User_UserServiceClient user.UserServiceClient
}

// FederationServiceResolver provides an interface to directly implement message resolver and field resolver not defined in Protocol Buffers.
type FederationServiceResolver interface {
}

// FederationServiceCELPluginWasmConfig type alias for grpcfedcel.WasmConfig.
type FederationServiceCELPluginWasmConfig = grpcfedcel.WasmConfig

// FederationServiceCELPluginConfig hints for loading a WebAssembly based plugin.
type FederationServiceCELPluginConfig struct {
	CacheDir string
}

// FederationServiceUnimplementedResolver a structure implemented to satisfy the Resolver interface.
// An Unimplemented error is always returned.
// This is intended for use when there are many Resolver interfaces that do not need to be implemented,
// by embedding them in a resolver structure that you have created.
type FederationServiceUnimplementedResolver struct{}

const (
	FederationService_DependentMethod_Post_PostService_GetPost = "/post.PostService/GetPost"
	FederationService_DependentMethod_User_UserService_GetUser = "/user.UserService/GetUser"
)

// FederationService represents Federation Service.
type FederationService struct {
	UnimplementedFederationServiceServer
	cfg             FederationServiceConfig
	logger          *slog.Logger
	isLogLevelDebug bool
	errorHandler    grpcfed.ErrorHandler
	celCacheMap     *grpcfed.CELCacheMap
	tracer          trace.Tracer
	celTypeHelper   *grpcfed.CELTypeHelper
	celEnvOpts      []grpcfed.CELEnvOption
	celPlugins      []*grpcfedcel.CELPlugin
	client          *FederationServiceDependentClientSet
}

// NewFederationService creates FederationService instance by FederationServiceConfig.
func NewFederationService(cfg FederationServiceConfig) (*FederationService, error) {
	if cfg.Client == nil {
		return nil, grpcfed.ErrClientConfig
	}
	Post_PostServiceClient, err := cfg.Client.Post_PostServiceClient(FederationServiceClientConfig{
		Service: "post.PostService",
	})
	if err != nil {
		return nil, err
	}
	User_UserServiceClient, err := cfg.Client.User_UserServiceClient(FederationServiceClientConfig{
		Service: "user.UserService",
	})
	if err != nil {
		return nil, err
	}
	logger := cfg.Logger
	if logger == nil {
		logger = slog.New(slog.NewJSONHandler(io.Discard, nil))
	}
	tracer := otel.Tracer("federation.FederationService")
	ctx := grpcfed.WithLogger(context.Background(), logger)
	ctx = grpcfed.WithTracer(ctx, tracer)
	errorHandler := cfg.ErrorHandler
	if errorHandler == nil {
		errorHandler = func(ctx context.Context, methodName string, err error) error { return err }
	}
	celTypeHelperFieldMap := grpcfed.CELTypeHelperFieldMap{
		"grpc.federation.private.federation.AArgument":   {},
		"grpc.federation.private.federation.A_BArgument": {},
		"grpc.federation.private.federation.A_B_CArgument": {
			"type": grpcfed.NewCELFieldType(grpcfed.CELStringType, "Type"),
		},
		"grpc.federation.private.federation.GetPostResponseArgument": {
			"id": grpcfed.NewCELFieldType(grpcfed.CELStringType, "Id"),
		},
		"grpc.federation.private.federation.PostArgument": {
			"id": grpcfed.NewCELFieldType(grpcfed.CELStringType, "Id"),
		},
		"grpc.federation.private.federation.UserArgument": {
			"id":      grpcfed.NewCELFieldType(grpcfed.CELStringType, "Id"),
			"title":   grpcfed.NewCELFieldType(grpcfed.CELStringType, "Title"),
			"content": grpcfed.NewCELFieldType(grpcfed.CELStringType, "Content"),
			"user_id": grpcfed.NewCELFieldType(grpcfed.CELStringType, "UserId"),
		},
		"federation.A": {
			"opt": grpcfed.NewOneofSelectorFieldType(
				grpcfed.NewCELObjectType("federation.A.B.C"), "Opt",
				[]reflect.Type{reflect.TypeOf((*A_OptC)(nil))},
				[]string{"GetOptC"},
				reflect.Zero(reflect.TypeOf((*A_B_C)(nil))),
			),
		},
	}
	celTypeHelper := grpcfed.NewCELTypeHelper("federation", celTypeHelperFieldMap)
	var celEnvOpts []grpcfed.CELEnvOption
	celEnvOpts = append(celEnvOpts, grpcfed.NewDefaultEnvOptions(celTypeHelper)...)
	celEnvOpts = append(celEnvOpts, grpcfed.GRPCErrorAccessorOptions(celTypeHelper, "post.GetPostResponse")...)
	celEnvOpts = append(celEnvOpts, grpcfed.GRPCErrorAccessorOptions(celTypeHelper, "user.GetUserResponse")...)
	celEnvOpts = append(celEnvOpts, grpcfed.EnumAccessorOptions("federation.Item.ItemType", Item_ItemType_value, Item_ItemType_name)...)
	celEnvOpts = append(celEnvOpts, grpcfed.EnumAttrOption[Item_ItemType]("federation.Item.ItemType", Item_ItemType_attrMap))
	celEnvOpts = append(celEnvOpts, grpcfed.EnumAccessorOptions("federation.Item.Location.LocationType", Item_Location_LocationType_value, Item_Location_LocationType_name)...)
	celEnvOpts = append(celEnvOpts, grpcfed.EnumAccessorOptions("user.Item.ItemType", user.Item_ItemType_value, user.Item_ItemType_name)...)
	svc := &FederationService{
		cfg:             cfg,
		logger:          logger,
		isLogLevelDebug: logger.Enabled(context.Background(), slog.LevelDebug),
		errorHandler:    errorHandler,
		celEnvOpts:      celEnvOpts,
		celTypeHelper:   celTypeHelper,
		celCacheMap:     grpcfed.NewCELCacheMap(),
		tracer:          tracer,
		client: &FederationServiceDependentClientSet{
			Post_PostServiceClient: Post_PostServiceClient,
			User_UserServiceClient: User_UserServiceClient,
		},
	}
	return svc, nil
}

// CleanupFederationService cleanup all resources to prevent goroutine leaks.
func CleanupFederationService(ctx context.Context, svc *FederationService) {
	svc.cleanup(ctx)
}

func (s *FederationService) cleanup(ctx context.Context) {
	for _, plugin := range s.celPlugins {
		plugin.Close()
	}
}

// GetPost implements "federation.FederationService/GetPost" method.
func (s *FederationService) GetPost(ctx context.Context, req *GetPostRequest) (res *GetPostResponse, e error) {
	ctx, span := s.tracer.Start(ctx, "federation.FederationService/GetPost")
	defer span.End()
	ctx = grpcfed.WithLogger(ctx, s.logger)
	ctx = grpcfed.WithCELCacheMap(ctx, s.celCacheMap)
	defer func() {
		if r := recover(); r != nil {
			e = grpcfed.RecoverError(r, grpcfed.StackTrace())
			grpcfed.OutputErrorLog(ctx, e)
		}
	}()
	defer func() {
		for _, celPlugin := range s.celPlugins {
			celPlugin.Cleanup()
		}
	}()
	res, err := s.resolve_Federation_GetPostResponse(ctx, &FederationService_Federation_GetPostResponseArgument{
		Id: req.GetId(),
	})
	if err != nil {
		grpcfed.RecordErrorToSpan(ctx, err)
		grpcfed.OutputErrorLog(ctx, err)
		return nil, err
	}
	return res, nil
}

// resolve_Federation_A resolve "federation.A" message.
func (s *FederationService) resolve_Federation_A(ctx context.Context, req *FederationService_Federation_AArgument) (*A, error) {
	ctx, span := s.tracer.Start(ctx, "federation.A")
	defer span.End()
	ctx = grpcfed.WithLogger(ctx, grpcfed.Logger(ctx), grpcfed.LogAttrs(ctx)...)

	grpcfed.Logger(ctx).DebugContext(ctx, "resolve federation.A", slog.Any("message_args", s.logvalue_Federation_AArgument(req)))
	type localValueType struct {
		*grpcfed.LocalValue
		vars struct {
			B *A_B
		}
	}
	value := &localValueType{LocalValue: grpcfed.NewLocalValue(ctx, s.celEnvOpts, "grpc.federation.private.federation.AArgument", req)}
	ctx = grpcfed.WithLocalValue(ctx, value.LocalValue)
	/*
		def {
		  name: "b"
		  message {
		    name: "B"
		  }
		}
	*/
	def_b := func(ctx context.Context) error {
		return grpcfed.EvalDef(ctx, value, grpcfed.Def[*A_B, *localValueType]{
			Name: `b`,
			Type: grpcfed.CELObjectType("federation.A.B"),
			Setter: func(value *localValueType, v *A_B) error {
				value.vars.B = v
				return nil
			},
			Message: func(ctx context.Context, value *localValueType) (any, error) {
				args := &FederationService_Federation_A_BArgument{}
				ret, err := s.resolve_Federation_A_B(ctx, args)
				if err != nil {
					return nil, err
				}
				return ret, nil
			},
		})
	}

	if err := def_b(ctx); err != nil {
		grpcfed.RecordErrorToSpan(ctx, err)
		return nil, err
	}

	// assign named parameters to message arguments to pass to the custom resolver.
	req.FederationService_Federation_AVariable.B = value.vars.B

	// create a message value to be returned.
	ret := &A{}

	// field binding section.
	// (grpc.federation.field).by = "b"
	if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*A_B]{
		Value:      value,
		Expr:       `b`,
		CacheIndex: 1,
		Setter: func(v *A_B) error {
			ret.B = v
			return nil
		},
	}); err != nil {
		grpcfed.RecordErrorToSpan(ctx, err)
		return nil, err
	}
	oneof_OptC, err := grpcfed.EvalCEL(ctx, &grpcfed.EvalCELRequest{
		Value:      value,
		Expr:       `true`,
		OutType:    reflect.TypeOf(true),
		CacheIndex: 2,
	})
	if err != nil {
		grpcfed.RecordErrorToSpan(ctx, err)
		return nil, err
	}
	if false {
		// For code generation reasons, we're using a loop to generate the oneof conditional branches,
		// so to avoid treating the first element specially, we always generate if branch with false condition.
	} else if oneof_OptC.(bool) {

		if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*A_B_C]{
			Value:      value,
			Expr:       `A.B.C{}`,
			CacheIndex: 3,
			Setter: func(v *A_B_C) error {
				optValue, err := s.cast_Federation_A_B_C__to__Federation_A_OptC(v)
				if err != nil {
					return err
				}
				ret.Opt = optValue
				return nil
			},
		}); err != nil {
			grpcfed.RecordErrorToSpan(ctx, err)
			return nil, err
		}
	}

	grpcfed.Logger(ctx).DebugContext(ctx, "resolved federation.A", slog.Any("federation.A", s.logvalue_Federation_A(ret)))
	return ret, nil
}

// resolve_Federation_A_B resolve "federation.A.B" message.
func (s *FederationService) resolve_Federation_A_B(ctx context.Context, req *FederationService_Federation_A_BArgument) (*A_B, error) {
	ctx, span := s.tracer.Start(ctx, "federation.A.B")
	defer span.End()
	ctx = grpcfed.WithLogger(ctx, grpcfed.Logger(ctx), grpcfed.LogAttrs(ctx)...)

	grpcfed.Logger(ctx).DebugContext(ctx, "resolve federation.A.B", slog.Any("message_args", s.logvalue_Federation_A_BArgument(req)))
	type localValueType struct {
		*grpcfed.LocalValue
		vars struct {
			Bar   *A_B_C
			Foo   *A_B_C
			XDef2 bool
			XDef3 bool
		}
	}
	value := &localValueType{LocalValue: grpcfed.NewLocalValue(ctx, s.celEnvOpts, "grpc.federation.private.federation.A_BArgument", req)}
	ctx = grpcfed.WithLocalValue(ctx, value.LocalValue)
	/*
		def {
		  name: "foo"
		  message {
		    name: "C"
		    args { name: "type", by: "'foo'" }
		  }
		}
	*/
	def_foo := func(ctx context.Context) error {
		return grpcfed.EvalDef(ctx, value, grpcfed.Def[*A_B_C, *localValueType]{
			Name: `foo`,
			Type: grpcfed.CELObjectType("federation.A.B.C"),
			Setter: func(value *localValueType, v *A_B_C) error {
				value.vars.Foo = v
				return nil
			},
			Message: func(ctx context.Context, value *localValueType) (any, error) {
				args := &FederationService_Federation_A_B_CArgument{}
				// { name: "type", by: "'foo'" }
				if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{
					Value:      value,
					Expr:       `'foo'`,
					CacheIndex: 4,
					Setter: func(v string) error {
						args.Type = v
						return nil
					},
				}); err != nil {
					return nil, err
				}
				ret, err := s.resolve_Federation_A_B_C(ctx, args)
				if err != nil {
					return nil, err
				}
				return ret, nil
			},
		})
	}

	/*
		def {
		  name: "bar"
		  message {
		    name: "C"
		    args { name: "type", by: "'bar'" }
		  }
		}
	*/
	def_bar := func(ctx context.Context) error {
		return grpcfed.EvalDef(ctx, value, grpcfed.Def[*A_B_C, *localValueType]{
			Name: `bar`,
			Type: grpcfed.CELObjectType("federation.A.B.C"),
			Setter: func(value *localValueType, v *A_B_C) error {
				value.vars.Bar = v
				return nil
			},
			Message: func(ctx context.Context, value *localValueType) (any, error) {
				args := &FederationService_Federation_A_B_CArgument{}
				// { name: "type", by: "'bar'" }
				if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{
					Value:      value,
					Expr:       `'bar'`,
					CacheIndex: 5,
					Setter: func(v string) error {
						args.Type = v
						return nil
					},
				}); err != nil {
					return nil, err
				}
				ret, err := s.resolve_Federation_A_B_C(ctx, args)
				if err != nil {
					return nil, err
				}
				return ret, nil
			},
		})
	}

	/*
		def {
		  name: "_def2"
		  if: "foo.type == 'foo'"
		  by: "grpc.federation.log.info('output federation log', {'messages': [foo, bar], 'message_map': {'foo': foo, 'bar': bar}})"
		}
	*/
	def__def2 := func(ctx context.Context) error {
		return grpcfed.EvalDef(ctx, value, grpcfed.Def[bool, *localValueType]{
			If:           `foo.type == 'foo'`,
			IfCacheIndex: 6,
			Name:         `_def2`,
			Type:         grpcfed.CELBoolType,
			Setter: func(value *localValueType, v bool) error {
				value.vars.XDef2 = v
				return nil
			},
			By:           `grpc.federation.log.info('output federation log', {'messages': [foo, bar], 'message_map': {'foo': foo, 'bar': bar}})`,
			ByCacheIndex: 7,
		})
	}

	/*
		def {
		  name: "_def3"
		  by: "grpc.federation.log.add({'foo_type': foo.type, 'bar_type': bar.type})"
		}
	*/
	def__def3 := func(ctx context.Context) error {
		return grpcfed.EvalDef(ctx, value, grpcfed.Def[bool, *localValueType]{
			Name: `_def3`,
			Type: grpcfed.CELBoolType,
			Setter: func(value *localValueType, v bool) error {
				value.vars.XDef3 = v
				return nil
			},
			By:           `grpc.federation.log.add({'foo_type': foo.type, 'bar_type': bar.type})`,
			ByCacheIndex: 8,
		})
	}

	// A tree view of message dependencies is shown below.
	/*
	   bar ─┐
	   foo ─┤
	        _def2 ─┐
	   bar ─┐      │
	   foo ─┤      │
	        _def3 ─┤
	*/
	eg, ctx1 := grpcfed.ErrorGroupWithContext(ctx)

	grpcfed.GoWithRecover(eg, func() (any, error) {
		eg, ctx2 := grpcfed.ErrorGroupWithContext(ctx1)
		grpcfed.GoWithRecover(eg, func() (any, error) {
			if err := def_bar(ctx2); err != nil {
				grpcfed.RecordErrorToSpan(ctx2, err)
				return nil, err
			}
			return nil, nil
		})
		grpcfed.GoWithRecover(eg, func() (any, error) {
			if err := def_foo(ctx2); err != nil {
				grpcfed.RecordErrorToSpan(ctx2, err)
				return nil, err
			}
			return nil, nil
		})
		if err := eg.Wait(); err != nil {
			return nil, err
		}
		if err := def__def2(ctx1); err != nil {
			grpcfed.RecordErrorToSpan(ctx1, err)
			return nil, err
		}
		return nil, nil
	})

	grpcfed.GoWithRecover(eg, func() (any, error) {
		eg, ctx2 := grpcfed.ErrorGroupWithContext(ctx1)
		grpcfed.GoWithRecover(eg, func() (any, error) {
			if err := def_bar(ctx2); err != nil {
				grpcfed.RecordErrorToSpan(ctx2, err)
				return nil, err
			}
			return nil, nil
		})
		grpcfed.GoWithRecover(eg, func() (any, error) {
			if err := def_foo(ctx2); err != nil {
				grpcfed.RecordErrorToSpan(ctx2, err)
				return nil, err
			}
			return nil, nil
		})
		if err := eg.Wait(); err != nil {
			return nil, err
		}
		if err := def__def3(ctx1); err != nil {
			grpcfed.RecordErrorToSpan(ctx1, err)
			return nil, err
		}
		return nil, nil
	})

	if err := eg.Wait(); err != nil {
		return nil, err
	}

	// assign named parameters to message arguments to pass to the custom resolver.
	req.FederationService_Federation_A_BVariable.Bar = value.vars.Bar
	req.FederationService_Federation_A_BVariable.Foo = value.vars.Foo

	// create a message value to be returned.
	ret := &A_B{}

	// field binding section.
	// (grpc.federation.field).by = "foo"
	if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*A_B_C]{
		Value:      value,
		Expr:       `foo`,
		CacheIndex: 9,
		Setter: func(v *A_B_C) error {
			ret.Foo = v
			return nil
		},
	}); err != nil {
		grpcfed.RecordErrorToSpan(ctx, err)
		return nil, err
	}
	// (grpc.federation.field).by = "bar"
	if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[*A_B_C]{
		Value:      value,
		Expr:       `bar`,
		CacheIndex: 10,
		Setter: func(v *A_B_C) error {
			ret.Bar = v
			return nil
		},
	}); err != nil {
		grpcfed.RecordErrorToSpan(ctx, err)
		return nil, err
	}

	grpcfed.Logger(ctx).DebugContext(ctx, "resolved federation.A.B", slog.Any("federation.A.B", s.logvalue_Federation_A_B(ret)))
	return ret, nil
}

// resolve_Federation_A_B_C resolve "federation.A.B.C" message.
func (s *FederationService) resolve_Federation_A_B_C(ctx context.Context, req *FederationService_Federation_A_B_CArgument) (*A_B_C, error) {
	ctx, span := s.tracer.Start(ctx, "federation.A.B.C")
	defer span.End()
	ctx = grpcfed.WithLogger(ctx, grpcfed.Logger(ctx), grpcfed.LogAttrs(ctx)...)

	grpcfed.Logger(ctx).DebugContext(ctx, "resolve federation.A.B.C", slog.Any("message_args", s.logvalue_Federation_A_B_CArgument(req)))
	type localValueType struct {
		*grpcfed.LocalValue
		vars struct {
		}
	}
	value := &localValueType{LocalValue: grpcfed.NewLocalValue(ctx, s.celEnvOpts, "grpc.federation.private.federation.A_B_CArgument", req)}
	ctx = grpcfed.WithLocalValue(ctx, value.LocalValue)

	// create a message value to be returned.
	ret := &A_B_C{}

	// field binding section.
	// (grpc.federation.field).by = "$.type"
	if err := grpcfed.SetCELValue(ctx, &grpcfed.SetCELValueParam[string]{
		Value:      value,
		Expr:       `$.type`,
		CacheIndex: 11,
		Setter: func(v string) error {
			ret.Type = v
			return nil
		},
	}); err != nil {
		grpcfed.RecordErrorToSpan(ctx, err)
		return nil, err
	}

	grpcfed.Logger(ctx).DebugContext(ctx, "resolved federation.A.B.C", slog.Any("federation.A.B.C", s.logvalue_Federation_A_B_C(ret)))
	return ret, nil
}

// resolve_Federation_GetPostResponse resolve "federation.GetPostResponse" message.
func (s *FederationService) resolve_Federation_GetPostResponse(ctx context.Context, req *FederationService_Federation_GetPostResponseArgument) (*GetPostResponse, error) {
	ctx, span := s.tracer.Start(ctx, "federation.GetPostResponse")
	defer span.End()
	ctx = grpcfed.WithLogger(ctx, grpcfed.Logger(ctx), grpcfed.LogAttrs(ctx)...)

	grpcfed.Logger(ctx).DebugContext(ctx, "resolve federation.GetPostResponse", slog.Any("message_args", s.logvalue_Federation_GetPostResponseArgument(req)))
	type localValueType struct {
		*grpcfed.LocalValue
		vars struct {
			A                  *A
			Any                *anypb.Any
			Compile            *grpcfedcel.Regexp
			Date               *grpcfedcel.Time
			Dup                []int64
			E                  Item_ItemType
			FindStringSubmatch []string
			FixedRand          *grpcfedcel.Rand
			Flatten            []int64
	
Download .txt
gitextract_vzvj21ua/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── pull_request_template.md
│   └── workflows/
│       ├── buf.yml
│       ├── lint.yml
│       ├── release-jetbrains.yml
│       ├── release-vscode.yml
│       └── test.yml
├── .gitignore
├── .golangci.yml
├── .goreleaser.yaml
├── .octocov.yml
├── .vscode/
│   └── settings.json
├── LICENSE
├── Makefile
├── README.md
├── _examples/
│   ├── 01_minimum/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc-federation.yaml
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       └── federation/
│   │           └── federation.proto
│   ├── 02_simple/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc-federation.yaml
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   └── federation.proto
│   │   │   ├── post/
│   │   │   │   └── post.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 03_custom_resolver/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   ├── federation_grpc_federation.pb.go
│   │   │   ├── other.pb.go
│   │   │   └── other_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   ├── federation.proto
│   │   │   │   └── other.proto
│   │   │   ├── post/
│   │   │   │   └── post.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 04_timeout/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── grpc-federation.yaml
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 05_async/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       └── federation/
│   │           └── federation.proto
│   ├── 06_alias/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   ├── post_grpc.pb.go
│   │   │   └── v2/
│   │   │       ├── extra.pb.go
│   │   │       ├── post.pb.go
│   │   │       └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           ├── post.proto
│   │           └── v2/
│   │               ├── extra.proto
│   │               └── post.proto
│   ├── 07_autobind/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 08_literal/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── content/
│   │   │   ├── content.pb.go
│   │   │   └── content_grpc.pb.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── content/
│   │       │   └── content.proto
│   │       └── federation/
│   │           └── federation.proto
│   ├── 09_multi_user/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   └── federation.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 10_oneof/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   └── federation.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 11_multi_service/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── comment/
│   │   │   └── comment.pb.go
│   │   ├── favorite/
│   │   │   └── favorite.pb.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   ├── federation_grpc_federation.pb.go
│   │   │   ├── other.pb.go
│   │   │   ├── other_grpc.pb.go
│   │   │   ├── other_grpc_federation.pb.go
│   │   │   ├── ping.pb.go
│   │   │   ├── ping_grpc_federation.pb.go
│   │   │   ├── reaction.pb.go
│   │   │   └── reaction_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── grpc-federation.yaml
│   │   ├── like/
│   │   │   └── like.pb.go
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── comment/
│   │       │   └── comment.proto
│   │       ├── favorite/
│   │       │   └── favorite.proto
│   │       └── federation/
│   │           ├── federation.proto
│   │           ├── other.proto
│   │           └── reaction.proto
│   ├── 12_validation/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       └── federation/
│   │           └── federation.proto
│   ├── 13_map/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   ├── federation/
│   │   │   │   └── federation.proto
│   │   │   ├── post/
│   │   │   │   └── post.proto
│   │   │   └── user/
│   │   │       └── user.proto
│   │   └── user/
│   │       ├── user.pb.go
│   │       └── user_grpc.pb.go
│   ├── 14_condition/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       └── federation.pb.go
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 15_cel_plugin/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── cmd/
│   │   │   └── plugin/
│   │   │       └── main.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── plugin/
│   │   │   ├── plugin.pb.go
│   │   │   └── plugin_grpc_federation.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── plugin/
│   │           └── plugin.proto
│   ├── 16_code_gen_plugin/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.work.yaml
│   │   ├── cmd/
│   │   │   ├── config/
│   │   │   │   └── main.go
│   │   │   └── plugin/
│   │   │       ├── main.go
│   │   │       └── resolver.go.tmpl
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── proto/
│   │   │   ├── buf.yaml
│   │   │   └── federation/
│   │   │       └── federation.proto
│   │   └── resolver_test.go
│   ├── 17_error_handler/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc/
│   │   │   └── federation/
│   │   │       ├── federation.pb.go
│   │   │       ├── generator.pb.go
│   │   │       └── plugin.pb.go
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 18_load/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── cmd/
│   │   │   └── plugin/
│   │   │       └── main.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── plugin/
│   │   │   ├── plugin.pb.go
│   │   │   └── plugin_grpc_federation.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── plugin/
│   │           └── plugin.proto
│   ├── 19_retry/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 20_callopt/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── grpc-federation.yaml
│   │   ├── main_test.go
│   │   ├── post/
│   │   │   ├── post.pb.go
│   │   │   └── post_grpc.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── post/
│   │           └── post.proto
│   ├── 21_wasm_net/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── buf.gen.yaml
│   │   ├── buf.work.yaml
│   │   ├── cmd/
│   │   │   └── plugin/
│   │   │       └── main.go
│   │   ├── federation/
│   │   │   ├── federation.pb.go
│   │   │   ├── federation_grpc.pb.go
│   │   │   └── federation_grpc_federation.pb.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── main_test.go
│   │   ├── plugin/
│   │   │   ├── plugin.pb.go
│   │   │   └── plugin_grpc_federation.pb.go
│   │   └── proto/
│   │       ├── buf.yaml
│   │       ├── federation/
│   │       │   └── federation.proto
│   │       └── plugin/
│   │           └── plugin.proto
│   └── 22_switch/
│       ├── .gitignore
│       ├── Makefile
│       ├── buf.gen.yaml
│       ├── buf.work.yaml
│       ├── federation/
│       │   ├── federation.pb.go
│       │   ├── federation_grpc.pb.go
│       │   └── federation_grpc_federation.pb.go
│       ├── go.mod
│       ├── go.sum
│       ├── grpc/
│       │   └── federation/
│       │       └── federation.pb.go
│       ├── grpc-federation.yaml
│       ├── main_test.go
│       └── proto/
│           ├── buf.yaml
│           └── federation/
│               └── federation.proto
├── buf.gen.yaml
├── buf.work.yaml
├── cmd/
│   ├── grpc-federation-generator/
│   │   └── main.go
│   ├── grpc-federation-language-server/
│   │   ├── README.md
│   │   └── main.go
│   ├── grpc-federation-linter/
│   │   └── main.go
│   ├── grpc-federation-mcp-server/
│   │   ├── assets/
│   │   │   └── docs.md
│   │   └── main.go
│   ├── grpcfedctl/
│   │   ├── main.go
│   │   ├── plugin.go
│   │   └── version.go
│   └── protoc-gen-grpc-federation/
│       └── main.go
├── compiler/
│   ├── compiler.go
│   ├── compiler_test.go
│   └── testdata/
│       ├── post.proto
│       ├── service.proto
│       └── user.proto
├── demo/
│   ├── Makefile
│   ├── README.md
│   ├── buf.gen.yaml
│   ├── buf.work.yaml
│   ├── cmd/
│   │   ├── film/
│   │   │   └── main.go
│   │   ├── person/
│   │   │   └── main.go
│   │   ├── planet/
│   │   │   └── main.go
│   │   ├── species/
│   │   │   └── main.go
│   │   ├── starship/
│   │   │   └── main.go
│   │   ├── swapi/
│   │   │   └── main.go
│   │   └── vehicle/
│   │       └── main.go
│   ├── compose.yaml
│   ├── go.mod
│   ├── go.sum
│   ├── proto/
│   │   ├── buf.yaml
│   │   ├── film/
│   │   │   └── film.proto
│   │   ├── person/
│   │   │   └── person.proto
│   │   ├── planet/
│   │   │   └── planet.proto
│   │   ├── species/
│   │   │   └── species.proto
│   │   ├── starship/
│   │   │   └── starship.proto
│   │   ├── swapi.proto
│   │   └── vehicle/
│   │       └── vehicle.proto
│   ├── services/
│   │   ├── film/
│   │   │   ├── film.go
│   │   │   └── film_test.go
│   │   ├── person/
│   │   │   ├── person.go
│   │   │   └── person_test.go
│   │   ├── planet/
│   │   │   ├── planet.go
│   │   │   └── planet_test.go
│   │   ├── species/
│   │   │   ├── species.go
│   │   │   └── species_test.go
│   │   ├── starship/
│   │   │   ├── starship.go
│   │   │   └── starship_test.go
│   │   └── vehicle/
│   │       ├── vehicle.go
│   │       └── vehicle_test.go
│   ├── swapi/
│   │   ├── film/
│   │   │   ├── film.pb.go
│   │   │   └── film_grpc.pb.go
│   │   ├── person/
│   │   │   ├── person.pb.go
│   │   │   └── person_grpc.pb.go
│   │   ├── planet/
│   │   │   ├── planet.pb.go
│   │   │   └── planet_grpc.pb.go
│   │   ├── species/
│   │   │   ├── species.pb.go
│   │   │   └── species_grpc.pb.go
│   │   ├── starship/
│   │   │   ├── starship.pb.go
│   │   │   └── starship_grpc.pb.go
│   │   ├── swapi/
│   │   │   ├── swapi.pb.go
│   │   │   ├── swapi_grpc.pb.go
│   │   │   └── swapi_grpc_federation.pb.go
│   │   └── vehicle/
│   │       ├── vehicle.pb.go
│   │       └── vehicle_grpc.pb.go
│   └── util/
│       └── util.go
├── docs/
│   ├── cel/
│   │   ├── any.md
│   │   ├── enum.md
│   │   ├── list.md
│   │   ├── log.md
│   │   ├── math.md
│   │   ├── metadata.md
│   │   ├── rand.md
│   │   ├── regexp.md
│   │   ├── strings.md
│   │   ├── time.md
│   │   ├── url.md
│   │   └── uuid.md
│   ├── cel.md
│   ├── cel_plugin.md
│   ├── code_generation_plugin.md
│   ├── getting_started.md
│   ├── installation.md
│   └── references.md
├── generator/
│   ├── code_generator.go
│   ├── code_generator_test.go
│   ├── config.go
│   ├── funcs.go
│   ├── funcs_test.go
│   ├── generator.go
│   ├── generator_test.go
│   ├── plugin_option_test.go
│   ├── protoc_gen_go_grpc.go
│   ├── templates/
│   │   ├── cast.go.tmpl
│   │   ├── error_handler.go.tmpl
│   │   ├── eval.go.tmpl
│   │   ├── plugin.go.tmpl
│   │   ├── retry.go.tmpl
│   │   ├── server.go.tmpl
│   │   ├── switch.go.tmpl
│   │   └── validation.go.tmpl
│   ├── testdata/
│   │   ├── expected_alias.go
│   │   ├── expected_alias_multifile.go
│   │   ├── expected_async.go
│   │   ├── expected_autobind.go
│   │   ├── expected_condition.go
│   │   ├── expected_create_post.go
│   │   ├── expected_custom_resolver.go
│   │   ├── expected_env.go
│   │   ├── expected_error_handler.go
│   │   ├── expected_inline_env.go
│   │   ├── expected_map.go
│   │   ├── expected_minimum.go
│   │   ├── expected_multi_user.go
│   │   ├── expected_oneof.go
│   │   ├── expected_ref_env.go
│   │   ├── expected_resolver_overlaps.go
│   │   ├── expected_simple_aggregation.go
│   │   ├── expected_switch.go
│   │   └── expected_validation.go
│   ├── wasm.go
│   └── watcher.go
├── go.mod
├── go.sum
├── grpc/
│   └── federation/
│       ├── alias.go
│       ├── cast.go
│       ├── cel/
│       │   ├── any.go
│       │   ├── any_test.go
│       │   ├── bind.go
│       │   ├── bind_test.go
│       │   ├── cast.go
│       │   ├── cast_test.go
│       │   ├── context.go
│       │   ├── conv.go
│       │   ├── enum.go
│       │   ├── lib.go
│       │   ├── list.go
│       │   ├── list_test.go
│       │   ├── log.go
│       │   ├── log_test.go
│       │   ├── math.go
│       │   ├── math_test.go
│       │   ├── metadata.go
│       │   ├── metadata_test.go
│       │   ├── plugin/
│       │   │   └── plugin.pb.go
│       │   ├── plugin.go
│       │   ├── plugin_test.go
│       │   ├── private.pb.go
│       │   ├── rand.go
│       │   ├── rand_test.go
│       │   ├── regexp.go
│       │   ├── regexp_test.go
│       │   ├── strings.go
│       │   ├── strings_test.go
│       │   ├── testdata/
│       │   │   ├── Makefile
│       │   │   ├── plugin/
│       │   │   │   └── main.go
│       │   │   ├── test.proto
│       │   │   └── testpb/
│       │   │       └── test.pb.go
│       │   ├── time.go
│       │   ├── time.pb.go
│       │   ├── time_test.go
│       │   ├── url.go
│       │   ├── url.pb.go
│       │   ├── url_test.go
│       │   ├── uuid.go
│       │   └── uuid_test.go
│       ├── cel.go
│       ├── cel_plugin.go
│       ├── const.go
│       ├── context.go
│       ├── custom_resolver.go
│       ├── error.go
│       ├── federation.pb.go
│       ├── generator/
│       │   ├── decode.go
│       │   ├── encode.go
│       │   ├── generator_test.go
│       │   ├── plugin/
│       │   │   └── generator.pb.go
│       │   └── types.go
│       ├── lib.go
│       ├── log/
│       │   └── context.go
│       ├── net/
│       │   ├── net.go
│       │   └── other.go
│       ├── otel.go
│       ├── plugin.go
│       ├── plugin_wasip1.go
│       ├── trace/
│       │   ├── alias.go
│       │   └── context.go
│       ├── validation.go
│       ├── version.go
│       └── version_test.go
├── internal/
│   └── testutil/
│       ├── builder.go
│       ├── cmpopt.go
│       └── compiler.go
├── lsp/
│   ├── client/
│   │   ├── jetbrains/
│   │   │   ├── .gitignore
│   │   │   ├── .run/
│   │   │   │   ├── Run IDE for UI Tests.run.xml
│   │   │   │   ├── Run Plugin.run.xml
│   │   │   │   ├── Run Qodana.run.xml
│   │   │   │   ├── Run Tests.run.xml
│   │   │   │   └── Run Verifications.run.xml
│   │   │   ├── CHANGELOG.md
│   │   │   ├── README.md
│   │   │   ├── build.gradle.kts
│   │   │   ├── gradle/
│   │   │   │   ├── libs.versions.toml
│   │   │   │   └── wrapper/
│   │   │   │       ├── gradle-wrapper.jar
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   ├── gradlew
│   │   │   ├── gradlew.bat
│   │   │   ├── qodana.yml
│   │   │   ├── settings.gradle.kts
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── kotlin/
│   │   │           │   └── com/
│   │   │           │       └── github/
│   │   │           │           └── mercari/
│   │   │           │               └── grpcfederation/
│   │   │           │                   ├── GrpcFederationBundle.kt
│   │   │           │                   ├── lsp/
│   │   │           │                   │   └── GrpcFederationLspServerSupportProvider.kt
│   │   │           │                   └── settings/
│   │   │           │                       ├── ImportPathTableModel.kt
│   │   │           │                       ├── PathUtils.kt
│   │   │           │                       ├── ProjectSettingsConfigurable.kt
│   │   │           │                       ├── ProjectSettingsService.kt
│   │   │           │                       └── impl/
│   │   │           │                           └── ProjectSettingsServiceImpl.kt
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── plugin.xml
│   │   │               └── messages/
│   │   │                   └── GrpcFederationBundle.properties
│   │   └── vscode/
│   │       ├── .eslintignore
│   │       ├── .eslintrc.js
│   │       ├── .gitignore
│   │       ├── .vscode/
│   │       │   ├── extensions.json
│   │       │   ├── launch.json
│   │       │   ├── settings.json
│   │       │   └── tasks.json
│   │       ├── .vscodeignore
│   │       ├── LICENSE
│   │       ├── README.md
│   │       ├── package.json
│   │       ├── src/
│   │       │   ├── constants.ts
│   │       │   └── extension.ts
│   │       └── tsconfig.json
│   └── server/
│       ├── completion.go
│       ├── completion_test.go
│       ├── definition.go
│       ├── general.go
│       ├── handler.go
│       ├── handler_test.go
│       ├── semantic_tokens.go
│       ├── semantic_tokens_test.go
│       ├── server.go
│       ├── testdata/
│       │   ├── completion.proto
│       │   ├── post.proto
│       │   ├── service.proto
│       │   └── user.proto
│       ├── text_document_sync.go
│       ├── util.go
│       └── validator.go
├── proto/
│   ├── buf.yaml
│   └── grpc/
│       └── federation/
│           ├── embed.go
│           ├── federation.proto
│           ├── generator.proto
│           ├── plugin.proto
│           ├── private.proto
│           ├── time.proto
│           └── url.proto
├── proto_deps/
│   └── google/
│       ├── api/
│       │   └── expr/
│       │       └── v1alpha1/
│       │           ├── checked.proto
│       │           └── syntax.proto
│       └── rpc/
│           ├── code.proto
│           ├── embed.go
│           └── error_details.proto
├── resolver/
│   ├── candidates.go
│   ├── candidates_test.go
│   ├── cel.go
│   ├── cel_test.go
│   ├── context.go
│   ├── def.go
│   ├── enum.go
│   ├── error.go
│   ├── extension.go
│   ├── field.go
│   ├── file.go
│   ├── file_test.go
│   ├── format.go
│   ├── format_test.go
│   ├── fqdn.go
│   ├── graph.go
│   ├── message.go
│   ├── method.go
│   ├── oneof.go
│   ├── resolver.go
│   ├── resolver_test.go
│   ├── service.go
│   ├── std_fd.go
│   ├── type_conversion.go
│   ├── types.go
│   ├── value.go
│   └── wellknown_types.go
├── source/
│   ├── clone.go
│   ├── file.go
│   ├── file_test.go
│   ├── location.go
│   ├── location_builder.go
│   ├── location_test.go
│   ├── testdata/
│   │   ├── coverage.proto
│   │   ├── post.proto
│   │   ├── service.proto
│   │   ├── switch.proto
│   │   └── user.proto
│   ├── type_helper.go
│   └── type_helper_test.go
├── testdata/
│   ├── alias.proto
│   ├── alias_multifile.proto
│   ├── async.proto
│   ├── autobind.proto
│   ├── condition.proto
│   ├── content.proto
│   ├── create_post.proto
│   ├── custom_resolver.proto
│   ├── dependency_base_message.proto
│   ├── dependency_child_message.proto
│   ├── dependency_message_argument.proto
│   ├── dependency_method_response.proto
│   ├── dependency_oneof.proto
│   ├── dependency_service_variable.proto
│   ├── error_handler.proto
│   ├── inline_env.proto
│   ├── map.proto
│   ├── minimum.proto
│   ├── multi_user.proto
│   ├── nested_post.proto
│   ├── oneof.proto
│   ├── post.proto
│   ├── post_v2.proto
│   ├── post_v2_extra.proto
│   ├── ref_env.proto
│   ├── resolver_overlaps.proto
│   ├── simple_aggregation.proto
│   ├── switch.proto
│   ├── user.proto
│   └── validation.proto
├── types/
│   └── types.go
├── util/
│   └── name.go
└── validator/
    ├── testdata/
    │   ├── conflict_service_variable.proto
    │   ├── conflict_switch_case_variable.proto
    │   ├── conflict_switch_default_variable.proto
    │   ├── different_message_argument_type.proto
    │   ├── duplicated_variable_name.proto
    │   ├── echo.proto
    │   ├── empty_response_field.proto
    │   ├── invalid_autobind.proto
    │   ├── invalid_call_error_handler.proto
    │   ├── invalid_call_metadata.proto
    │   ├── invalid_call_option.proto
    │   ├── invalid_condition_type.proto
    │   ├── invalid_enum_alias_target.proto
    │   ├── invalid_enum_attribute.proto
    │   ├── invalid_enum_conversion.proto
    │   ├── invalid_enum_selector.proto
    │   ├── invalid_enum_value_noalias.proto
    │   ├── invalid_env.proto
    │   ├── invalid_error_variable.proto
    │   ├── invalid_field_option.proto
    │   ├── invalid_field_type.proto
    │   ├── invalid_field_type_by_switch.proto
    │   ├── invalid_file_import.proto
    │   ├── invalid_go_package.proto
    │   ├── invalid_list_sort.proto
    │   ├── invalid_map_iterator_src.proto
    │   ├── invalid_map_iterator_src_type.proto
    │   ├── invalid_message_alias.proto
    │   ├── invalid_message_alias_target.proto
    │   ├── invalid_message_argument.proto
    │   ├── invalid_message_field_alias.proto
    │   ├── invalid_message_map.proto
    │   ├── invalid_message_map_alias.proto
    │   ├── invalid_message_name.proto
    │   ├── invalid_method.proto
    │   ├── invalid_method_name.proto
    │   ├── invalid_method_request.proto
    │   ├── invalid_method_response.proto
    │   ├── invalid_method_response_option.proto
    │   ├── invalid_method_service_name.proto
    │   ├── invalid_method_timeout_format.proto
    │   ├── invalid_multi_alias.proto
    │   ├── invalid_multiple_env.proto
    │   ├── invalid_nested_message_field.proto
    │   ├── invalid_nested_message_name.proto
    │   ├── invalid_oneof.proto
    │   ├── invalid_oneof_selection.proto
    │   ├── invalid_retry.proto
    │   ├── invalid_service_variable_switch.proto
    │   ├── invalid_switch_case_by_type.proto
    │   ├── invalid_switch_case_if_type.proto
    │   ├── invalid_switch_default_by_type.proto
    │   ├── invalid_validation_bad_request.proto
    │   ├── invalid_validation_code.proto
    │   ├── invalid_validation_details_return_type.proto
    │   ├── invalid_validation_localized_message.proto
    │   ├── invalid_validation_message_argument.proto
    │   ├── invalid_validation_precondition_failure.proto
    │   ├── invalid_validation_return_type.proto
    │   ├── invalid_validation_with_ignore.proto
    │   ├── invalid_variable_name.proto
    │   ├── invalid_wrapper_type_conversion.proto
    │   ├── message_cyclic_dependency.proto
    │   ├── missing_enum_alias.proto
    │   ├── missing_enum_value.proto
    │   ├── missing_enum_value_alias.proto
    │   ├── missing_field_option.proto
    │   ├── missing_file_import.proto
    │   ├── missing_map_iterator.proto
    │   ├── missing_message_alias.proto
    │   ├── missing_message_field_alias.proto
    │   ├── missing_message_option.proto
    │   ├── missing_method_request_value.proto
    │   ├── missing_response_message_option.proto
    │   ├── missing_service_variable.proto
    │   ├── missing_switch_case.proto
    │   ├── missing_switch_default.proto
    │   ├── nested_list.proto
    │   ├── nested_message_cyclic_dependency.proto
    │   ├── nested_post.proto
    │   ├── nested_post2.proto
    │   ├── post.proto
    │   ├── recursive_message_name.proto
    │   ├── repeated_switch_default.proto
    │   ├── user.proto
    │   └── valid_enum_value_reference.proto
    ├── validator.go
    └── validator_test.go
Download .txt
Showing preview only (1,478K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (16463 symbols across 349 files)

FILE: _examples/01_minimum/federation/federation.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type GetPostRequest (line 24) | type GetPostRequest struct
    method Reset (line 32) | func (x *GetPostRequest) Reset() {
    method String (line 41) | func (x *GetPostRequest) String() string {
    method ProtoMessage (line 45) | func (*GetPostRequest) ProtoMessage() {}
    method ProtoReflect (line 47) | func (x *GetPostRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 60) | func (*GetPostRequest) Descriptor() ([]byte, []int) {
    method GetId (line 64) | func (x *GetPostRequest) GetId() string {
  type GetPostResponse (line 71) | type GetPostResponse struct
    method Reset (line 79) | func (x *GetPostResponse) Reset() {
    method String (line 88) | func (x *GetPostResponse) String() string {
    method ProtoMessage (line 92) | func (*GetPostResponse) ProtoMessage() {}
    method ProtoReflect (line 94) | func (x *GetPostResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 107) | func (*GetPostResponse) Descriptor() ([]byte, []int) {
    method GetPost (line 111) | func (x *GetPostResponse) GetPost() *Post {
  type Post (line 118) | type Post struct
    method Reset (line 129) | func (x *Post) Reset() {
    method String (line 138) | func (x *Post) String() string {
    method ProtoMessage (line 142) | func (*Post) ProtoMessage() {}
    method ProtoReflect (line 144) | func (x *Post) ProtoReflect() protoreflect.Message {
    method Descriptor (line 157) | func (*Post) Descriptor() ([]byte, []int) {
    method GetId (line 161) | func (x *Post) GetId() string {
    method GetTitle (line 168) | func (x *Post) GetTitle() string {
    method GetContent (line 175) | func (x *Post) GetContent() string {
    method GetUser (line 182) | func (x *Post) GetUser() *User {
  type User (line 189) | type User struct
    method Reset (line 198) | func (x *User) Reset() {
    method String (line 207) | func (x *User) String() string {
    method ProtoMessage (line 211) | func (*User) ProtoMessage() {}
    method ProtoReflect (line 213) | func (x *User) ProtoReflect() protoreflect.Message {
    method Descriptor (line 226) | func (*User) Descriptor() ([]byte, []int) {
    method GetId (line 230) | func (x *User) GetId() string {
    method GetName (line 237) | func (x *User) GetName() string {
  function file_federation_federation_proto_rawDescGZIP (line 290) | func file_federation_federation_proto_rawDescGZIP() []byte {
  function init (line 316) | func init() { file_federation_federation_proto_init() }
  function file_federation_federation_proto_init (line 317) | func file_federation_federation_proto_init() {

FILE: _examples/01_minimum/federation/federation_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  constant FederationService_GetPost_FullMethodName (line 22) | FederationService_GetPost_FullMethodName = "/federation.FederationServic...
  type FederationServiceClient (line 28) | type FederationServiceClient interface
  type federationServiceClient (line 32) | type federationServiceClient struct
    method GetPost (line 40) | func (c *federationServiceClient) GetPost(ctx context.Context, in *Get...
  function NewFederationServiceClient (line 36) | func NewFederationServiceClient(cc grpc.ClientConnInterface) FederationS...
  type FederationServiceServer (line 52) | type FederationServiceServer interface
  type UnimplementedFederationServiceServer (line 58) | type UnimplementedFederationServiceServer struct
    method GetPost (line 61) | func (UnimplementedFederationServiceServer) GetPost(context.Context, *...
    method mustEmbedUnimplementedFederationServiceServer (line 64) | func (UnimplementedFederationServiceServer) mustEmbedUnimplementedFede...
  type UnsafeFederationServiceServer (line 69) | type UnsafeFederationServiceServer interface
  function RegisterFederationServiceServer (line 73) | func RegisterFederationServiceServer(s grpc.ServiceRegistrar, srv Federa...
  function _FederationService_GetPost_Handler (line 77) | func _FederationService_GetPost_Handler(srv interface{}, ctx context.Con...

FILE: _examples/01_minimum/federation/federation_grpc_federation.pb.go
  type FederationService_Federation_GetPostResponseVariable (line 26) | type FederationService_Federation_GetPostResponseVariable struct
  type FederationService_Federation_GetPostResponseArgument (line 30) | type FederationService_Federation_GetPostResponseArgument struct
  type FederationServiceConfig (line 36) | type FederationServiceConfig struct
  type FederationServiceClientFactory (line 48) | type FederationServiceClientFactory interface
  type FederationServiceClientConfig (line 53) | type FederationServiceClientConfig struct
  type FederationServiceDependentClientSet (line 60) | type FederationServiceDependentClientSet struct
  type FederationServiceResolver (line 64) | type FederationServiceResolver interface
  type FederationServiceCELPluginConfig (line 73) | type FederationServiceCELPluginConfig struct
  type FederationServiceUnimplementedResolver (line 81) | type FederationServiceUnimplementedResolver struct
    method Resolve_Federation_GetPostResponse (line 85) | func (FederationServiceUnimplementedResolver) Resolve_Federation_GetPo...
  type FederationService (line 91) | type FederationService struct
    method cleanup (line 156) | func (s *FederationService) cleanup(ctx context.Context) {
    method GetPost (line 163) | func (s *FederationService) GetPost(ctx context.Context, req *GetPostR...
    method resolve_Federation_GetPostResponse (line 191) | func (s *FederationService) resolve_Federation_GetPostResponse(ctx con...
    method logvalue_Federation_GetPostResponse (line 211) | func (s *FederationService) logvalue_Federation_GetPostResponse(v *Get...
    method logvalue_Federation_GetPostResponseArgument (line 223) | func (s *FederationService) logvalue_Federation_GetPostResponseArgumen...
    method logvalue_Federation_Post (line 235) | func (s *FederationService) logvalue_Federation_Post(v *Post) slog.Val...
    method logvalue_Federation_User (line 250) | func (s *FederationService) logvalue_Federation_User(v *User) slog.Val...
  function NewFederationService (line 107) | func NewFederationService(cfg FederationServiceConfig) (*FederationServi...
  function CleanupFederationService (line 152) | func CleanupFederationService(ctx context.Context, svc *FederationServic...

FILE: _examples/01_minimum/main_test.go
  type Resolver (line 23) | type Resolver struct
    method Resolve_Federation_GetPostResponse (line 42) | func (r *Resolver) Resolve_Federation_GetPostResponse(ctx context.Cont...
  function TestFederation (line 46) | func TestFederation(t *testing.T) {

FILE: _examples/02_simple/federation/federation.pb.go
  constant _ (line 22) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 24) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type Item_ItemType (line 27) | type Item_ItemType
    method Enum (line 52) | func (x Item_ItemType) Enum() *Item_ItemType {
    method String (line 58) | func (x Item_ItemType) String() string {
    method Descriptor (line 62) | func (Item_ItemType) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 66) | func (Item_ItemType) Type() protoreflect.EnumType {
    method Number (line 70) | func (x Item_ItemType) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 75) | func (Item_ItemType) EnumDescriptor() ([]byte, []int) {
  constant Item_ITEM_TYPE_UNSPECIFIED (line 30) | Item_ITEM_TYPE_UNSPECIFIED Item_ItemType = 0
  constant Item_ITEM_TYPE_1 (line 31) | Item_ITEM_TYPE_1           Item_ItemType = 1
  constant Item_ITEM_TYPE_2 (line 32) | Item_ITEM_TYPE_2           Item_ItemType = 2
  constant Item_ITEM_TYPE_3 (line 33) | Item_ITEM_TYPE_3           Item_ItemType = 3
  type Item_Location_LocationType (line 79) | type Item_Location_LocationType
    method Enum (line 98) | func (x Item_Location_LocationType) Enum() *Item_Location_LocationType {
    method String (line 104) | func (x Item_Location_LocationType) String() string {
    method Descriptor (line 108) | func (Item_Location_LocationType) Descriptor() protoreflect.EnumDescri...
    method Type (line 112) | func (Item_Location_LocationType) Type() protoreflect.EnumType {
    method Number (line 116) | func (x Item_Location_LocationType) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 121) | func (Item_Location_LocationType) EnumDescriptor() ([]byte, []int) {
  constant Item_Location_LOCATION_TYPE_0 (line 82) | Item_Location_LOCATION_TYPE_0 Item_Location_LocationType = 0
  constant Item_Location_LOCATION_TYPE_1 (line 83) | Item_Location_LOCATION_TYPE_1 Item_Location_LocationType = 1
  type GetPostRequest (line 125) | type GetPostRequest struct
    method Reset (line 133) | func (x *GetPostRequest) Reset() {
    method String (line 142) | func (x *GetPostRequest) String() string {
    method ProtoMessage (line 146) | func (*GetPostRequest) ProtoMessage() {}
    method ProtoReflect (line 148) | func (x *GetPostRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 161) | func (*GetPostRequest) Descriptor() ([]byte, []int) {
    method GetId (line 165) | func (x *GetPostRequest) GetId() string {
  type GetPostResponse (line 172) | type GetPostResponse struct
    method Reset (line 232) | func (x *GetPostResponse) Reset() {
    method String (line 241) | func (x *GetPostResponse) String() string {
    method ProtoMessage (line 245) | func (*GetPostResponse) ProtoMessage() {}
    method ProtoReflect (line 247) | func (x *GetPostResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 260) | func (*GetPostResponse) Descriptor() ([]byte, []int) {
    method GetPost (line 264) | func (x *GetPostResponse) GetPost() *Post {
    method GetStr (line 271) | func (x *GetPostResponse) GetStr() string {
    method GetUuid (line 278) | func (x *GetPostResponse) GetUuid() string {
    method GetLoc (line 285) | func (x *GetPostResponse) GetLoc() string {
    method GetValue1 (line 292) | func (x *GetPostResponse) GetValue1() string {
    method GetItemTypeName (line 299) | func (x *GetPostResponse) GetItemTypeName() string {
    method GetLocationTypeName (line 306) | func (x *GetPostResponse) GetLocationTypeName() string {
    method GetUserItemTypeName (line 313) | func (x *GetPostResponse) GetUserItemTypeName() string {
    method GetItemTypeValueEnum (line 320) | func (x *GetPostResponse) GetItemTypeValueEnum() Item_ItemType {
    method GetItemTypeValueInt (line 327) | func (x *GetPostResponse) GetItemTypeValueInt() int32 {
    method GetItemTypeValueCast (line 334) | func (x *GetPostResponse) GetItemTypeValueCast() Item_ItemType {
    method GetLocationTypeValue (line 341) | func (x *GetPostResponse) GetLocationTypeValue() int32 {
    method GetUserItemTypeValue (line 348) | func (x *GetPostResponse) GetUserItemTypeValue() int32 {
    method GetA (line 355) | func (x *GetPostResponse) GetA() *A {
    method GetSortedValues (line 362) | func (x *GetPostResponse) GetSortedValues() []int32 {
    method GetSortedItems (line 369) | func (x *GetPostResponse) GetSortedItems() []*Item {
    method GetMapValue (line 376) | func (x *GetPostResponse) GetMapValue() map[int32]string {
    method GetDoubleWrapperValue (line 383) | func (x *GetPostResponse) GetDoubleWrapperValue() *wrapperspb.DoubleVa...
    method GetFloatWrapperValue (line 390) | func (x *GetPostResponse) GetFloatWrapperValue() *wrapperspb.FloatValue {
    method GetI64WrapperValue (line 397) | func (x *GetPostResponse) GetI64WrapperValue() *wrapperspb.Int64Value {
    method GetU64WrapperValue (line 404) | func (x *GetPostResponse) GetU64WrapperValue() *wrapperspb.UInt64Value {
    method GetI32WrapperValue (line 411) | func (x *GetPostResponse) GetI32WrapperValue() *wrapperspb.Int32Value {
    method GetU32WrapperValue (line 418) | func (x *GetPostResponse) GetU32WrapperValue() *wrapperspb.UInt32Value {
    method GetBoolWrapperValue (line 425) | func (x *GetPostResponse) GetBoolWrapperValue() *wrapperspb.BoolValue {
    method GetStringWrapperValue (line 432) | func (x *GetPostResponse) GetStringWrapperValue() *wrapperspb.StringVa...
    method GetBytesWrapperValue (line 439) | func (x *GetPostResponse) GetBytesWrapperValue() *wrapperspb.BytesValue {
    method GetHello (line 446) | func (x *GetPostResponse) GetHello() string {
    method GetNullTimestamp (line 453) | func (x *GetPostResponse) GetNullTimestamp() *timestamppb.Timestamp {
    method GetNullTimestamp2 (line 460) | func (x *GetPostResponse) GetNullTimestamp2() *timestamppb.Timestamp {
    method GetNullTimestamp3 (line 467) | func (x *GetPostResponse) GetNullTimestamp3() *timestamppb.Timestamp {
    method GetJpLoc (line 474) | func (x *GetPostResponse) GetJpLoc() string {
    method GetStringsJoin (line 481) | func (x *GetPostResponse) GetStringsJoin() string {
    method GetParseFloat (line 488) | func (x *GetPostResponse) GetParseFloat() float64 {
    method GetUrlUserName (line 495) | func (x *GetPostResponse) GetUrlUserName() string {
    method GetEnumValue (line 502) | func (x *GetPostResponse) GetEnumValue() Item_ItemType {
    method GetEnumValueStr (line 509) | func (x *GetPostResponse) GetEnumValueStr() string {
    method GetSqrtDouble (line 516) | func (x *GetPostResponse) GetSqrtDouble() float64 {
    method GetSqrtInt (line 523) | func (x *GetPostResponse) GetSqrtInt() float64 {
    method GetPow (line 530) | func (x *GetPostResponse) GetPow() float64 {
    method GetFloor (line 537) | func (x *GetPostResponse) GetFloor() float64 {
    method GetFlatten (line 544) | func (x *GetPostResponse) GetFlatten() []int64 {
    method GetRound (line 551) | func (x *GetPostResponse) GetRound() float64 {
    method GetAny (line 558) | func (x *GetPostResponse) GetAny() *anypb.Any {
    method GetReplaced (line 565) | func (x *GetPostResponse) GetReplaced() string {
    method GetListToMap (line 572) | func (x *GetPostResponse) GetListToMap() map[int32]int32 {
    method GetUuidParse (line 579) | func (x *GetPostResponse) GetUuidParse() string {
    method GetUuidValidate (line 586) | func (x *GetPostResponse) GetUuidValidate() bool {
    method GetCompile (line 593) | func (x *GetPostResponse) GetCompile() string {
    method GetMustCompile (line 600) | func (x *GetPostResponse) GetMustCompile() string {
    method GetQuoteMeta (line 607) | func (x *GetPostResponse) GetQuoteMeta() string {
    method GetFindStringSubmatch (line 614) | func (x *GetPostResponse) GetFindStringSubmatch() []string {
    method GetMatchString (line 621) | func (x *GetPostResponse) GetMatchString() bool {
    method GetReplaceAllString (line 628) | func (x *GetPostResponse) GetReplaceAllString() string {
  type A (line 635) | type A struct
    method Reset (line 647) | func (x *A) Reset() {
    method String (line 656) | func (x *A) String() string {
    method ProtoMessage (line 660) | func (*A) ProtoMessage() {}
    method ProtoReflect (line 662) | func (x *A) ProtoReflect() protoreflect.Message {
    method Descriptor (line 675) | func (*A) Descriptor() ([]byte, []int) {
    method GetB (line 679) | func (x *A) GetB() *A_B {
    method GetOpt (line 686) | func (m *A) GetOpt() isA_Opt {
    method GetOptC (line 693) | func (x *A) GetOptC() *A_B_C {
  type isA_Opt (line 700) | type isA_Opt interface
  type A_OptC (line 704) | type A_OptC struct
    method isA_Opt (line 708) | func (*A_OptC) isA_Opt() {}
  type Post (line 710) | type Post struct
    method Reset (line 721) | func (x *Post) Reset() {
    method String (line 730) | func (x *Post) String() string {
    method ProtoMessage (line 734) | func (*Post) ProtoMessage() {}
    method ProtoReflect (line 736) | func (x *Post) ProtoReflect() protoreflect.Message {
    method Descriptor (line 749) | func (*Post) Descriptor() ([]byte, []int) {
    method GetId (line 753) | func (x *Post) GetId() string {
    method GetTitle (line 760) | func (x *Post) GetTitle() string {
    method GetContent (line 767) | func (x *Post) GetContent() string {
    method GetUser (line 774) | func (x *Post) GetUser() *User {
  type User (line 781) | type User struct
    method Reset (line 797) | func (x *User) Reset() {
    method String (line 806) | func (x *User) String() string {
    method ProtoMessage (line 810) | func (*User) ProtoMessage() {}
    method ProtoReflect (line 812) | func (x *User) ProtoReflect() protoreflect.Message {
    method Descriptor (line 825) | func (*User) Descriptor() ([]byte, []int) {
    method GetId (line 829) | func (x *User) GetId() string {
    method GetName (line 836) | func (x *User) GetName() string {
    method GetItems (line 843) | func (x *User) GetItems() []*Item {
    method GetProfile (line 850) | func (x *User) GetProfile() map[string]*anypb.Any {
    method GetAttr (line 857) | func (m *User) GetAttr() isUser_Attr {
    method GetAttrA (line 864) | func (x *User) GetAttrA() *User_AttrA {
    method GetB (line 871) | func (x *User) GetB() *User_AttrB {
  type isUser_Attr (line 878) | type isUser_Attr interface
  type User_AttrA_ (line 882) | type User_AttrA_ struct
    method isUser_Attr (line 890) | func (*User_AttrA_) isUser_Attr() {}
  type User_B (line 886) | type User_B struct
    method isUser_Attr (line 892) | func (*User_B) isUser_Attr() {}
  type Item (line 894) | type Item struct
    method Reset (line 905) | func (x *Item) Reset() {
    method String (line 914) | func (x *Item) String() string {
    method ProtoMessage (line 918) | func (*Item) ProtoMessage() {}
    method ProtoReflect (line 920) | func (x *Item) ProtoReflect() protoreflect.Message {
    method Descriptor (line 933) | func (*Item) Descriptor() ([]byte, []int) {
    method GetName (line 937) | func (x *Item) GetName() string {
    method GetType (line 944) | func (x *Item) GetType() Item_ItemType {
    method GetValue (line 951) | func (x *Item) GetValue() int64 {
    method GetLocation (line 958) | func (x *Item) GetLocation() *Item_Location {
  type A_B (line 965) | type A_B struct
    method Reset (line 974) | func (x *A_B) Reset() {
    method String (line 983) | func (x *A_B) String() string {
    method ProtoMessage (line 987) | func (*A_B) ProtoMessage() {}
    method ProtoReflect (line 989) | func (x *A_B) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1002) | func (*A_B) Descriptor() ([]byte, []int) {
    method GetFoo (line 1006) | func (x *A_B) GetFoo() *A_B_C {
    method GetBar (line 1013) | func (x *A_B) GetBar() *A_B_C {
  type A_B_C (line 1020) | type A_B_C struct
    method Reset (line 1028) | func (x *A_B_C) Reset() {
    method String (line 1037) | func (x *A_B_C) String() string {
    method ProtoMessage (line 1041) | func (*A_B_C) ProtoMessage() {}
    method ProtoReflect (line 1043) | func (x *A_B_C) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1056) | func (*A_B_C) Descriptor() ([]byte, []int) {
    method GetType (line 1060) | func (x *A_B_C) GetType() string {
  type User_AttrA (line 1067) | type User_AttrA struct
    method Reset (line 1075) | func (x *User_AttrA) Reset() {
    method String (line 1084) | func (x *User_AttrA) String() string {
    method ProtoMessage (line 1088) | func (*User_AttrA) ProtoMessage() {}
    method ProtoReflect (line 1090) | func (x *User_AttrA) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1103) | func (*User_AttrA) Descriptor() ([]byte, []int) {
    method GetFoo (line 1107) | func (x *User_AttrA) GetFoo() string {
  type User_AttrB (line 1114) | type User_AttrB struct
    method Reset (line 1122) | func (x *User_AttrB) Reset() {
    method String (line 1131) | func (x *User_AttrB) String() string {
    method ProtoMessage (line 1135) | func (*User_AttrB) ProtoMessage() {}
    method ProtoReflect (line 1137) | func (x *User_AttrB) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1150) | func (*User_AttrB) Descriptor() ([]byte, []int) {
    method GetBar (line 1154) | func (x *User_AttrB) GetBar() bool {
  type Item_Location (line 1161) | type Item_Location struct
    method Reset (line 1176) | func (x *Item_Location) Reset() {
    method String (line 1185) | func (x *Item_Location) String() string {
    method ProtoMessage (line 1189) | func (*Item_Location) ProtoMessage() {}
    method ProtoReflect (line 1191) | func (x *Item_Location) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1204) | func (*Item_Location) Descriptor() ([]byte, []int) {
    method GetAddr1 (line 1208) | func (x *Item_Location) GetAddr1() string {
    method GetAddr2 (line 1215) | func (x *Item_Location) GetAddr2() string {
    method GetAddr3 (line 1222) | func (m *Item_Location) GetAddr3() isItem_Location_Addr3 {
    method GetAddrA (line 1229) | func (x *Item_Location) GetAddrA() *Item_Location_AddrA {
    method GetB (line 1236) | func (x *Item_Location) GetB() *Item_Location_AddrB {
    method GetC (line 1243) | func (x *Item_Location) GetC() string {
  type isItem_Location_Addr3 (line 1250) | type isItem_Location_Addr3 interface
  type Item_Location_AddrA_ (line 1254) | type Item_Location_AddrA_ struct
    method isItem_Location_Addr3 (line 1266) | func (*Item_Location_AddrA_) isItem_Location_Addr3() {}
  type Item_Location_B (line 1258) | type Item_Location_B struct
    method isItem_Location_Addr3 (line 1268) | func (*Item_Location_B) isItem_Location_Addr3() {}
  type Item_Location_C (line 1262) | type Item_Location_C struct
    method isItem_Location_Addr3 (line 1270) | func (*Item_Location_C) isItem_Location_Addr3() {}
  type Item_Location_AddrA (line 1272) | type Item_Location_AddrA struct
    method Reset (line 1280) | func (x *Item_Location_AddrA) Reset() {
    method String (line 1289) | func (x *Item_Location_AddrA) String() string {
    method ProtoMessage (line 1293) | func (*Item_Location_AddrA) ProtoMessage() {}
    method ProtoReflect (line 1295) | func (x *Item_Location_AddrA) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1308) | func (*Item_Location_AddrA) Descriptor() ([]byte, []int) {
    method GetFoo (line 1312) | func (x *Item_Location_AddrA) GetFoo() string {
  type Item_Location_AddrB (line 1319) | type Item_Location_AddrB struct
    method Reset (line 1327) | func (x *Item_Location_AddrB) Reset() {
    method String (line 1336) | func (x *Item_Location_AddrB) String() string {
    method ProtoMessage (line 1340) | func (*Item_Location_AddrB) ProtoMessage() {}
    method ProtoReflect (line 1342) | func (x *Item_Location_AddrB) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1355) | func (*Item_Location_AddrB) Descriptor() ([]byte, []int) {
    method GetBar (line 1359) | func (x *Item_Location_AddrB) GetBar() int64 {
  function file_federation_federation_proto_rawDescGZIP (line 1942) | func file_federation_federation_proto_rawDescGZIP() []byte {
  function init (line 2027) | func init() { file_federation_federation_proto_init() }
  function file_federation_federation_proto_init (line 2028) | func file_federation_federation_proto_init() {

FILE: _examples/02_simple/federation/federation_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  constant FederationService_GetPost_FullMethodName (line 22) | FederationService_GetPost_FullMethodName = "/federation.FederationServic...
  type FederationServiceClient (line 28) | type FederationServiceClient interface
  type federationServiceClient (line 32) | type federationServiceClient struct
    method GetPost (line 40) | func (c *federationServiceClient) GetPost(ctx context.Context, in *Get...
  function NewFederationServiceClient (line 36) | func NewFederationServiceClient(cc grpc.ClientConnInterface) FederationS...
  type FederationServiceServer (line 52) | type FederationServiceServer interface
  type UnimplementedFederationServiceServer (line 58) | type UnimplementedFederationServiceServer struct
    method GetPost (line 61) | func (UnimplementedFederationServiceServer) GetPost(context.Context, *...
    method mustEmbedUnimplementedFederationServiceServer (line 64) | func (UnimplementedFederationServiceServer) mustEmbedUnimplementedFede...
  type UnsafeFederationServiceServer (line 69) | type UnsafeFederationServiceServer interface
  function RegisterFederationServiceServer (line 73) | func RegisterFederationServiceServer(s grpc.ServiceRegistrar, srv Federa...
  function _FederationService_GetPost_Handler (line 77) | func _FederationService_GetPost_Handler(srv interface{}, ctx context.Con...

FILE: _examples/02_simple/federation/federation_grpc_federation.pb.go
  type FederationService_Federation_AVariable (line 51) | type FederationService_Federation_AVariable struct
  type FederationService_Federation_AArgument (line 56) | type FederationService_Federation_AArgument struct
  type FederationService_Federation_A_BVariable (line 61) | type FederationService_Federation_A_BVariable struct
  type FederationService_Federation_A_BArgument (line 67) | type FederationService_Federation_A_BArgument struct
  type FederationService_Federation_A_B_CVariable (line 72) | type FederationService_Federation_A_B_CVariable struct
  type FederationService_Federation_A_B_CArgument (line 76) | type FederationService_Federation_A_B_CArgument struct
  type FederationService_Federation_GetPostResponseVariable (line 82) | type FederationService_Federation_GetPostResponseVariable struct
  type FederationService_Federation_GetPostResponseArgument (line 121) | type FederationService_Federation_GetPostResponseArgument struct
  type FederationService_Federation_PostVariable (line 127) | type FederationService_Federation_PostVariable struct
  type FederationService_Federation_PostArgument (line 134) | type FederationService_Federation_PostArgument struct
  type FederationService_Federation_UserVariable (line 140) | type FederationService_Federation_UserVariable struct
  type FederationService_Federation_UserArgument (line 146) | type FederationService_Federation_UserArgument struct
  type FederationServiceConfig (line 155) | type FederationServiceConfig struct
  type FederationServiceClientFactory (line 167) | type FederationServiceClientFactory interface
  type FederationServiceClientConfig (line 176) | type FederationServiceClientConfig struct
  type FederationServiceDependentClientSet (line 183) | type FederationServiceDependentClientSet struct
  type FederationServiceResolver (line 189) | type FederationServiceResolver interface
  type FederationServiceCELPluginConfig (line 196) | type FederationServiceCELPluginConfig struct
  type FederationServiceUnimplementedResolver (line 204) | type FederationServiceUnimplementedResolver struct
  constant FederationService_DependentMethod_Post_PostService_GetPost (line 207) | FederationService_DependentMethod_Post_PostService_GetPost = "/post.Post...
  constant FederationService_DependentMethod_User_UserService_GetUser (line 208) | FederationService_DependentMethod_User_UserService_GetUser = "/user.User...
  type FederationService (line 212) | type FederationService struct
    method cleanup (line 312) | func (s *FederationService) cleanup(ctx context.Context) {
    method GetPost (line 319) | func (s *FederationService) GetPost(ctx context.Context, req *GetPostR...
    method resolve_Federation_A (line 347) | func (s *FederationService) resolve_Federation_A(ctx context.Context, ...
    method resolve_Federation_A_B (line 451) | func (s *FederationService) resolve_Federation_A_B(ctx context.Context...
    method resolve_Federation_A_B_C (line 696) | func (s *FederationService) resolve_Federation_A_B_C(ctx context.Conte...
    method resolve_Federation_GetPostResponse (line 733) | func (s *FederationService) resolve_Federation_GetPostResponse(ctx con...
    method resolve_Federation_Post (line 2664) | func (s *FederationService) resolve_Federation_Post(ctx context.Contex...
    method resolve_Federation_User (line 2843) | func (s *FederationService) resolve_Federation_User(ctx context.Contex...
    method cast_Federation_A_B_C__to__Federation_A_OptC (line 3011) | func (s *FederationService) cast_Federation_A_B_C__to__Federation_A_Op...
    method cast_Federation_Item_Location_LocationType__to__int32 (line 3026) | func (s *FederationService) cast_Federation_Item_Location_LocationType...
    method cast_Google_Protobuf_Any__to__Google_Protobuf_Any (line 3031) | func (s *FederationService) cast_Google_Protobuf_Any__to__Google_Proto...
    method cast_Google_Protobuf_BoolValue__to__Google_Protobuf_BoolValue (line 3046) | func (s *FederationService) cast_Google_Protobuf_BoolValue__to__Google...
    method cast_Google_Protobuf_BytesValue__to__Google_Protobuf_BytesValue (line 3059) | func (s *FederationService) cast_Google_Protobuf_BytesValue__to__Googl...
    method cast_Google_Protobuf_DoubleValue__to__Google_Protobuf_DoubleValue (line 3072) | func (s *FederationService) cast_Google_Protobuf_DoubleValue__to__Goog...
    method cast_Google_Protobuf_DoubleValue__to__Google_Protobuf_FloatValue (line 3085) | func (s *FederationService) cast_Google_Protobuf_DoubleValue__to__Goog...
    method cast_Google_Protobuf_Int64Value__to__Google_Protobuf_Int32Value (line 3101) | func (s *FederationService) cast_Google_Protobuf_Int64Value__to__Googl...
    method cast_Google_Protobuf_Int64Value__to__Google_Protobuf_Int64Value (line 3117) | func (s *FederationService) cast_Google_Protobuf_Int64Value__to__Googl...
    method cast_Google_Protobuf_StringValue__to__Google_Protobuf_StringValue (line 3130) | func (s *FederationService) cast_Google_Protobuf_StringValue__to__Goog...
    method cast_Google_Protobuf_UInt64Value__to__Google_Protobuf_UInt32Value (line 3143) | func (s *FederationService) cast_Google_Protobuf_UInt64Value__to__Goog...
    method cast_Google_Protobuf_UInt64Value__to__Google_Protobuf_UInt64Value (line 3159) | func (s *FederationService) cast_Google_Protobuf_UInt64Value__to__Goog...
    method cast_User_Item_ItemType__to__Federation_Item_ItemType (line 3172) | func (s *FederationService) cast_User_Item_ItemType__to__Federation_It...
    method cast_User_Item_ItemType__to__int32 (line 3190) | func (s *FederationService) cast_User_Item_ItemType__to__int32(from us...
    method cast_User_Item_Location_AddrA___to__Federation_Item_Location_AddrA_ (line 3195) | func (s *FederationService) cast_User_Item_Location_AddrA___to__Federa...
    method cast_User_Item_Location_AddrA__to__Federation_Item_Location_AddrA (line 3208) | func (s *FederationService) cast_User_Item_Location_AddrA__to__Federat...
    method cast_User_Item_Location_AddrB__to__Federation_Item_Location_AddrB (line 3221) | func (s *FederationService) cast_User_Item_Location_AddrB__to__Federat...
    method cast_User_Item_Location_B__to__Federation_Item_Location_B (line 3234) | func (s *FederationService) cast_User_Item_Location_B__to__Federation_...
    method cast_User_Item_Location_C__to__Federation_Item_Location_C (line 3247) | func (s *FederationService) cast_User_Item_Location_C__to__Federation_...
    method cast_User_Item_Location__to__Federation_Item_Location (line 3257) | func (s *FederationService) cast_User_Item_Location__to__Federation_It...
    method cast_User_Item__to__Federation_Item (line 3293) | func (s *FederationService) cast_User_Item__to__Federation_Item(from *...
    method cast_User_User_AttrA___to__Federation_User_AttrA_ (line 3318) | func (s *FederationService) cast_User_User_AttrA___to__Federation_User...
    method cast_User_User_AttrA__to__Federation_User_AttrA (line 3331) | func (s *FederationService) cast_User_User_AttrA__to__Federation_User_...
    method cast_User_User_AttrB__to__Federation_User_AttrB (line 3344) | func (s *FederationService) cast_User_User_AttrB__to__Federation_User_...
    method cast_User_User_B__to__Federation_User_B (line 3357) | func (s *FederationService) cast_User_User_B__to__Federation_User_B(fr...
    method cast_float64__to__float32 (line 3370) | func (s *FederationService) cast_float64__to__float32(from float64) (f...
    method cast_int64__to__int32 (line 3375) | func (s *FederationService) cast_int64__to__int32(from int64) (int32, ...
    method cast_map_int64_int64__to__map_int32_int32 (line 3384) | func (s *FederationService) cast_map_int64_int64__to__map_int32_int32(...
    method cast_map_int64_string__to__map_int32_string (line 3401) | func (s *FederationService) cast_map_int64_string__to__map_int32_strin...
    method cast_repeated_User_Item__to__repeated_Federation_Item (line 3415) | func (s *FederationService) cast_repeated_User_Item__to__repeated_Fede...
    method cast_repeated_int64__to__repeated_int32 (line 3428) | func (s *FederationService) cast_repeated_int64__to__repeated_int32(fr...
    method cast_uint64__to__uint32 (line 3441) | func (s *FederationService) cast_uint64__to__uint32(from uint64) (uint...
    method logvalue_Federation_A (line 3449) | func (s *FederationService) logvalue_Federation_A(v *A) slog.Value {
    method logvalue_Federation_AArgument (line 3462) | func (s *FederationService) logvalue_Federation_AArgument(v *Federatio...
    method logvalue_Federation_A_B (line 3472) | func (s *FederationService) logvalue_Federation_A_B(v *A_B) slog.Value {
    method logvalue_Federation_A_BArgument (line 3485) | func (s *FederationService) logvalue_Federation_A_BArgument(v *Federat...
    method logvalue_Federation_A_B_C (line 3495) | func (s *FederationService) logvalue_Federation_A_B_C(v *A_B_C) slog.V...
    method logvalue_Federation_A_B_CArgument (line 3507) | func (s *FederationService) logvalue_Federation_A_B_CArgument(v *Feder...
    method logvalue_Federation_GetPostResponse (line 3519) | func (s *FederationService) logvalue_Federation_GetPostResponse(v *Get...
    method logvalue_Federation_GetPostResponseArgument (line 3583) | func (s *FederationService) logvalue_Federation_GetPostResponseArgumen...
    method logvalue_Federation_GetPostResponse_ListToMapEntry (line 3595) | func (s *FederationService) logvalue_Federation_GetPostResponse_ListTo...
    method logvalue_Federation_GetPostResponse_MapValueEntry (line 3609) | func (s *FederationService) logvalue_Federation_GetPostResponse_MapVal...
    method logvalue_Federation_Item (line 3623) | func (s *FederationService) logvalue_Federation_Item(v *Item) slog.Val...
    method logvalue_Federation_Item_ItemType (line 3638) | func (s *FederationService) logvalue_Federation_Item_ItemType(v Item_I...
    method logvalue_Federation_Item_Location (line 3655) | func (s *FederationService) logvalue_Federation_Item_Location(v *Item_...
    method logvalue_Federation_Item_Location_AddrA (line 3671) | func (s *FederationService) logvalue_Federation_Item_Location_AddrA(v ...
    method logvalue_Federation_Item_Location_AddrB (line 3683) | func (s *FederationService) logvalue_Federation_Item_Location_AddrB(v ...
    method logvalue_Federation_Item_Location_LocationType (line 3695) | func (s *FederationService) logvalue_Federation_Item_Location_Location...
    method logvalue_Federation_Post (line 3708) | func (s *FederationService) logvalue_Federation_Post(v *Post) slog.Val...
    method logvalue_Federation_PostArgument (line 3723) | func (s *FederationService) logvalue_Federation_PostArgument(v *Federa...
    method logvalue_Federation_User (line 3735) | func (s *FederationService) logvalue_Federation_User(v *User) slog.Val...
    method logvalue_Federation_UserArgument (line 3752) | func (s *FederationService) logvalue_Federation_UserArgument(v *Federa...
    method logvalue_Federation_User_AttrA (line 3767) | func (s *FederationService) logvalue_Federation_User_AttrA(v *User_Att...
    method logvalue_Federation_User_AttrB (line 3779) | func (s *FederationService) logvalue_Federation_User_AttrB(v *User_Att...
    method logvalue_Federation_User_ProfileEntry (line 3791) | func (s *FederationService) logvalue_Federation_User_ProfileEntry(v ma...
    method logvalue_Google_Protobuf_Any (line 3805) | func (s *FederationService) logvalue_Google_Protobuf_Any(v *anypb.Any)...
    method logvalue_Google_Protobuf_BoolValue (line 3818) | func (s *FederationService) logvalue_Google_Protobuf_BoolValue(v *wrap...
    method logvalue_Google_Protobuf_BytesValue (line 3830) | func (s *FederationService) logvalue_Google_Protobuf_BytesValue(v *wra...
    method logvalue_Google_Protobuf_DoubleValue (line 3842) | func (s *FederationService) logvalue_Google_Protobuf_DoubleValue(v *wr...
    method logvalue_Google_Protobuf_FloatValue (line 3854) | func (s *FederationService) logvalue_Google_Protobuf_FloatValue(v *wra...
    method logvalue_Google_Protobuf_Int32Value (line 3866) | func (s *FederationService) logvalue_Google_Protobuf_Int32Value(v *wra...
    method logvalue_Google_Protobuf_Int64Value (line 3878) | func (s *FederationService) logvalue_Google_Protobuf_Int64Value(v *wra...
    method logvalue_Google_Protobuf_StringValue (line 3890) | func (s *FederationService) logvalue_Google_Protobuf_StringValue(v *wr...
    method logvalue_Google_Protobuf_Timestamp (line 3902) | func (s *FederationService) logvalue_Google_Protobuf_Timestamp(v *time...
    method logvalue_Google_Protobuf_UInt32Value (line 3915) | func (s *FederationService) logvalue_Google_Protobuf_UInt32Value(v *wr...
    method logvalue_Google_Protobuf_UInt64Value (line 3927) | func (s *FederationService) logvalue_Google_Protobuf_UInt64Value(v *wr...
    method logvalue_Post_GetPostRequest (line 3939) | func (s *FederationService) logvalue_Post_GetPostRequest(v *post.GetPo...
    method logvalue_Post_GetPostsRequest (line 3951) | func (s *FederationService) logvalue_Post_GetPostsRequest(v *post.GetP...
    method logvalue_User_GetUserRequest (line 3963) | func (s *FederationService) logvalue_User_GetUserRequest(v *user.GetUs...
    method logvalue_User_GetUsersRequest (line 3976) | func (s *FederationService) logvalue_User_GetUsersRequest(v *user.GetU...
    method logvalue_repeated_Federation_Item (line 3988) | func (s *FederationService) logvalue_repeated_Federation_Item(v []*Ite...
  function NewFederationService (line 227) | func NewFederationService(cfg FederationServiceConfig) (*FederationServi...
  function CleanupFederationService (line 308) | func CleanupFederationService(ctx context.Context, svc *FederationServic...

FILE: _examples/02_simple/main_test.go
  constant bufSize (line 33) | bufSize = 1024
  type clientConfig (line 41) | type clientConfig struct
    method Post_PostServiceClient (line 43) | func (c *clientConfig) Post_PostServiceClient(cfg federation.Federatio...
    method User_UserServiceClient (line 47) | func (c *clientConfig) User_UserServiceClient(cfg federation.Federatio...
  type PostServer (line 51) | type PostServer struct
    method GetPost (line 55) | func (s *PostServer) GetPost(ctx context.Context, req *post.GetPostReq...
    method GetPosts (line 66) | func (s *PostServer) GetPosts(ctx context.Context, req *post.GetPostsR...
  type UserServer (line 79) | type UserServer struct
    method GetUser (line 83) | func (s *UserServer) GetUser(ctx context.Context, req *user.GetUserReq...
    method GetUsers (line 119) | func (s *UserServer) GetUsers(ctx context.Context, req *user.GetUsersR...
  function dialer (line 130) | func dialer(ctx context.Context, address string) (net.Conn, error) {
  function TestFederation (line 134) | func TestFederation(t *testing.T) {

FILE: _examples/02_simple/post/post.pb.go
  constant _ (line 18) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 20) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type GetPostRequest (line 23) | type GetPostRequest struct
    method Reset (line 31) | func (x *GetPostRequest) Reset() {
    method String (line 40) | func (x *GetPostRequest) String() string {
    method ProtoMessage (line 44) | func (*GetPostRequest) ProtoMessage() {}
    method ProtoReflect (line 46) | func (x *GetPostRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 59) | func (*GetPostRequest) Descriptor() ([]byte, []int) {
    method GetId (line 63) | func (x *GetPostRequest) GetId() string {
  type GetPostResponse (line 70) | type GetPostResponse struct
    method Reset (line 78) | func (x *GetPostResponse) Reset() {
    method String (line 87) | func (x *GetPostResponse) String() string {
    method ProtoMessage (line 91) | func (*GetPostResponse) ProtoMessage() {}
    method ProtoReflect (line 93) | func (x *GetPostResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 106) | func (*GetPostResponse) Descriptor() ([]byte, []int) {
    method GetPost (line 110) | func (x *GetPostResponse) GetPost() *Post {
  type GetPostsRequest (line 117) | type GetPostsRequest struct
    method Reset (line 125) | func (x *GetPostsRequest) Reset() {
    method String (line 134) | func (x *GetPostsRequest) String() string {
    method ProtoMessage (line 138) | func (*GetPostsRequest) ProtoMessage() {}
    method ProtoReflect (line 140) | func (x *GetPostsRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 153) | func (*GetPostsRequest) Descriptor() ([]byte, []int) {
    method GetIds (line 157) | func (x *GetPostsRequest) GetIds() []string {
  type GetPostsResponse (line 164) | type GetPostsResponse struct
    method Reset (line 172) | func (x *GetPostsResponse) Reset() {
    method String (line 181) | func (x *GetPostsResponse) String() string {
    method ProtoMessage (line 185) | func (*GetPostsResponse) ProtoMessage() {}
    method ProtoReflect (line 187) | func (x *GetPostsResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 200) | func (*GetPostsResponse) Descriptor() ([]byte, []int) {
    method GetPosts (line 204) | func (x *GetPostsResponse) GetPosts() []*Post {
  type Post (line 211) | type Post struct
    method Reset (line 222) | func (x *Post) Reset() {
    method String (line 231) | func (x *Post) String() string {
    method ProtoMessage (line 235) | func (*Post) ProtoMessage() {}
    method ProtoReflect (line 237) | func (x *Post) ProtoReflect() protoreflect.Message {
    method Descriptor (line 250) | func (*Post) Descriptor() ([]byte, []int) {
    method GetId (line 254) | func (x *Post) GetId() string {
    method GetTitle (line 261) | func (x *Post) GetTitle() string {
    method GetContent (line 268) | func (x *Post) GetContent() string {
    method GetUserId (line 275) | func (x *Post) GetUserId() string {
  function file_post_post_proto_rawDescGZIP (line 326) | func file_post_post_proto_rawDescGZIP() []byte {
  function init (line 355) | func init() { file_post_post_proto_init() }
  function file_post_post_proto_init (line 356) | func file_post_post_proto_init() {

FILE: _examples/02_simple/post/post_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  constant PostService_GetPost_FullMethodName (line 22) | PostService_GetPost_FullMethodName  = "/post.PostService/GetPost"
  constant PostService_GetPosts_FullMethodName (line 23) | PostService_GetPosts_FullMethodName = "/post.PostService/GetPosts"
  type PostServiceClient (line 29) | type PostServiceClient interface
  type postServiceClient (line 34) | type postServiceClient struct
    method GetPost (line 42) | func (c *postServiceClient) GetPost(ctx context.Context, in *GetPostRe...
    method GetPosts (line 51) | func (c *postServiceClient) GetPosts(ctx context.Context, in *GetPosts...
  function NewPostServiceClient (line 38) | func NewPostServiceClient(cc grpc.ClientConnInterface) PostServiceClient {
  type PostServiceServer (line 63) | type PostServiceServer interface
  type UnimplementedPostServiceServer (line 70) | type UnimplementedPostServiceServer struct
    method GetPost (line 73) | func (UnimplementedPostServiceServer) GetPost(context.Context, *GetPos...
    method GetPosts (line 76) | func (UnimplementedPostServiceServer) GetPosts(context.Context, *GetPo...
    method mustEmbedUnimplementedPostServiceServer (line 79) | func (UnimplementedPostServiceServer) mustEmbedUnimplementedPostServic...
  type UnsafePostServiceServer (line 84) | type UnsafePostServiceServer interface
  function RegisterPostServiceServer (line 88) | func RegisterPostServiceServer(s grpc.ServiceRegistrar, srv PostServiceS...
  function _PostService_GetPost_Handler (line 92) | func _PostService_GetPost_Handler(srv interface{}, ctx context.Context, ...
  function _PostService_GetPosts_Handler (line 110) | func _PostService_GetPosts_Handler(srv interface{}, ctx context.Context,...

FILE: _examples/02_simple/user/user.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type Item_ItemType (line 24) | type Item_ItemType
    method Enum (line 49) | func (x Item_ItemType) Enum() *Item_ItemType {
    method String (line 55) | func (x Item_ItemType) String() string {
    method Descriptor (line 59) | func (Item_ItemType) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 63) | func (Item_ItemType) Type() protoreflect.EnumType {
    method Number (line 67) | func (x Item_ItemType) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 72) | func (Item_ItemType) EnumDescriptor() ([]byte, []int) {
  constant Item_ITEM_TYPE_UNSPECIFIED (line 27) | Item_ITEM_TYPE_UNSPECIFIED Item_ItemType = 0
  constant Item_ITEM_TYPE_1 (line 28) | Item_ITEM_TYPE_1           Item_ItemType = 1
  constant Item_ITEM_TYPE_2 (line 29) | Item_ITEM_TYPE_2           Item_ItemType = 2
  constant Item_ITEM_TYPE_3 (line 30) | Item_ITEM_TYPE_3           Item_ItemType = 3
  type GetUserRequest (line 76) | type GetUserRequest struct
    method Reset (line 85) | func (x *GetUserRequest) Reset() {
    method String (line 94) | func (x *GetUserRequest) String() string {
    method ProtoMessage (line 98) | func (*GetUserRequest) ProtoMessage() {}
    method ProtoReflect (line 100) | func (x *GetUserRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 113) | func (*GetUserRequest) Descriptor() ([]byte, []int) {
    method GetId (line 117) | func (x *GetUserRequest) GetId() string {
    method GetType (line 124) | func (x *GetUserRequest) GetType() int32 {
  type GetUserResponse (line 131) | type GetUserResponse struct
    method Reset (line 139) | func (x *GetUserResponse) Reset() {
    method String (line 148) | func (x *GetUserResponse) String() string {
    method ProtoMessage (line 152) | func (*GetUserResponse) ProtoMessage() {}
    method ProtoReflect (line 154) | func (x *GetUserResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 167) | func (*GetUserResponse) Descriptor() ([]byte, []int) {
    method GetUser (line 171) | func (x *GetUserResponse) GetUser() *User {
  type GetUsersRequest (line 178) | type GetUsersRequest struct
    method Reset (line 186) | func (x *GetUsersRequest) Reset() {
    method String (line 195) | func (x *GetUsersRequest) String() string {
    method ProtoMessage (line 199) | func (*GetUsersRequest) ProtoMessage() {}
    method ProtoReflect (line 201) | func (x *GetUsersRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 214) | func (*GetUsersRequest) Descriptor() ([]byte, []int) {
    method GetIds (line 218) | func (x *GetUsersRequest) GetIds() []string {
  type GetUsersResponse (line 225) | type GetUsersResponse struct
    method Reset (line 233) | func (x *GetUsersResponse) Reset() {
    method String (line 242) | func (x *GetUsersResponse) String() string {
    method ProtoMessage (line 246) | func (*GetUsersResponse) ProtoMessage() {}
    method ProtoReflect (line 248) | func (x *GetUsersResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 261) | func (*GetUsersResponse) Descriptor() ([]byte, []int) {
    method GetUsers (line 265) | func (x *GetUsersResponse) GetUsers() []*User {
  type User (line 272) | type User struct
    method Reset (line 288) | func (x *User) Reset() {
    method String (line 297) | func (x *User) String() string {
    method ProtoMessage (line 301) | func (*User) ProtoMessage() {}
    method ProtoReflect (line 303) | func (x *User) ProtoReflect() protoreflect.Message {
    method Descriptor (line 316) | func (*User) Descriptor() ([]byte, []int) {
    method GetId (line 320) | func (x *User) GetId() string {
    method GetName (line 327) | func (x *User) GetName() string {
    method GetItems (line 334) | func (x *User) GetItems() []*Item {
    method GetProfile (line 341) | func (x *User) GetProfile() map[string]*anypb.Any {
    method GetAttr (line 348) | func (m *User) GetAttr() isUser_Attr {
    method GetAttrA (line 355) | func (x *User) GetAttrA() *User_AttrA {
    method GetB (line 362) | func (x *User) GetB() *User_AttrB {
  type isUser_Attr (line 369) | type isUser_Attr interface
  type User_AttrA_ (line 373) | type User_AttrA_ struct
    method isUser_Attr (line 381) | func (*User_AttrA_) isUser_Attr() {}
  type User_B (line 377) | type User_B struct
    method isUser_Attr (line 383) | func (*User_B) isUser_Attr() {}
  type Item (line 385) | type Item struct
    method Reset (line 396) | func (x *Item) Reset() {
    method String (line 405) | func (x *Item) String() string {
    method ProtoMessage (line 409) | func (*Item) ProtoMessage() {}
    method ProtoReflect (line 411) | func (x *Item) ProtoReflect() protoreflect.Message {
    method Descriptor (line 424) | func (*Item) Descriptor() ([]byte, []int) {
    method GetName (line 428) | func (x *Item) GetName() string {
    method GetType (line 435) | func (x *Item) GetType() Item_ItemType {
    method GetValue (line 442) | func (x *Item) GetValue() int64 {
    method GetLocation (line 449) | func (x *Item) GetLocation() *Item_Location {
  type User_AttrA (line 456) | type User_AttrA struct
    method Reset (line 464) | func (x *User_AttrA) Reset() {
    method String (line 473) | func (x *User_AttrA) String() string {
    method ProtoMessage (line 477) | func (*User_AttrA) ProtoMessage() {}
    method ProtoReflect (line 479) | func (x *User_AttrA) ProtoReflect() protoreflect.Message {
    method Descriptor (line 492) | func (*User_AttrA) Descriptor() ([]byte, []int) {
    method GetFoo (line 496) | func (x *User_AttrA) GetFoo() string {
  type User_AttrB (line 503) | type User_AttrB struct
    method Reset (line 511) | func (x *User_AttrB) Reset() {
    method String (line 520) | func (x *User_AttrB) String() string {
    method ProtoMessage (line 524) | func (*User_AttrB) ProtoMessage() {}
    method ProtoReflect (line 526) | func (x *User_AttrB) ProtoReflect() protoreflect.Message {
    method Descriptor (line 539) | func (*User_AttrB) Descriptor() ([]byte, []int) {
    method GetBar (line 543) | func (x *User_AttrB) GetBar() bool {
  type Item_Location (line 550) | type Item_Location struct
    method Reset (line 565) | func (x *Item_Location) Reset() {
    method String (line 574) | func (x *Item_Location) String() string {
    method ProtoMessage (line 578) | func (*Item_Location) ProtoMessage() {}
    method ProtoReflect (line 580) | func (x *Item_Location) ProtoReflect() protoreflect.Message {
    method Descriptor (line 593) | func (*Item_Location) Descriptor() ([]byte, []int) {
    method GetAddr1 (line 597) | func (x *Item_Location) GetAddr1() string {
    method GetAddr2 (line 604) | func (x *Item_Location) GetAddr2() string {
    method GetAddr3 (line 611) | func (m *Item_Location) GetAddr3() isItem_Location_Addr3 {
    method GetAddrA (line 618) | func (x *Item_Location) GetAddrA() *Item_Location_AddrA {
    method GetB (line 625) | func (x *Item_Location) GetB() *Item_Location_AddrB {
    method GetC (line 632) | func (x *Item_Location) GetC() string {
  type isItem_Location_Addr3 (line 639) | type isItem_Location_Addr3 interface
  type Item_Location_AddrA_ (line 643) | type Item_Location_AddrA_ struct
    method isItem_Location_Addr3 (line 655) | func (*Item_Location_AddrA_) isItem_Location_Addr3() {}
  type Item_Location_B (line 647) | type Item_Location_B struct
    method isItem_Location_Addr3 (line 657) | func (*Item_Location_B) isItem_Location_Addr3() {}
  type Item_Location_C (line 651) | type Item_Location_C struct
    method isItem_Location_Addr3 (line 659) | func (*Item_Location_C) isItem_Location_Addr3() {}
  type Item_Location_AddrA (line 661) | type Item_Location_AddrA struct
    method Reset (line 669) | func (x *Item_Location_AddrA) Reset() {
    method String (line 678) | func (x *Item_Location_AddrA) String() string {
    method ProtoMessage (line 682) | func (*Item_Location_AddrA) ProtoMessage() {}
    method ProtoReflect (line 684) | func (x *Item_Location_AddrA) ProtoReflect() protoreflect.Message {
    method Descriptor (line 697) | func (*Item_Location_AddrA) Descriptor() ([]byte, []int) {
    method GetFoo (line 701) | func (x *Item_Location_AddrA) GetFoo() string {
  type Item_Location_AddrB (line 708) | type Item_Location_AddrB struct
    method Reset (line 716) | func (x *Item_Location_AddrB) Reset() {
    method String (line 725) | func (x *Item_Location_AddrB) String() string {
    method ProtoMessage (line 729) | func (*Item_Location_AddrB) ProtoMessage() {}
    method ProtoReflect (line 731) | func (x *Item_Location_AddrB) ProtoReflect() protoreflect.Message {
    method Descriptor (line 744) | func (*Item_Location_AddrB) Descriptor() ([]byte, []int) {
    method GetBar (line 748) | func (x *Item_Location_AddrB) GetBar() int64 {
  function file_user_user_proto_rawDescGZIP (line 846) | func file_user_user_proto_rawDescGZIP() []byte {
  function init (line 894) | func init() { file_user_user_proto_init() }
  function file_user_user_proto_init (line 895) | func file_user_user_proto_init() {

FILE: _examples/02_simple/user/user_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  constant UserService_GetUser_FullMethodName (line 22) | UserService_GetUser_FullMethodName  = "/user.UserService/GetUser"
  constant UserService_GetUsers_FullMethodName (line 23) | UserService_GetUsers_FullMethodName = "/user.UserService/GetUsers"
  type UserServiceClient (line 29) | type UserServiceClient interface
  type userServiceClient (line 34) | type userServiceClient struct
    method GetUser (line 42) | func (c *userServiceClient) GetUser(ctx context.Context, in *GetUserRe...
    method GetUsers (line 51) | func (c *userServiceClient) GetUsers(ctx context.Context, in *GetUsers...
  function NewUserServiceClient (line 38) | func NewUserServiceClient(cc grpc.ClientConnInterface) UserServiceClient {
  type UserServiceServer (line 63) | type UserServiceServer interface
  type UnimplementedUserServiceServer (line 70) | type UnimplementedUserServiceServer struct
    method GetUser (line 73) | func (UnimplementedUserServiceServer) GetUser(context.Context, *GetUse...
    method GetUsers (line 76) | func (UnimplementedUserServiceServer) GetUsers(context.Context, *GetUs...
    method mustEmbedUnimplementedUserServiceServer (line 79) | func (UnimplementedUserServiceServer) mustEmbedUnimplementedUserServic...
  type UnsafeUserServiceServer (line 84) | type UnsafeUserServiceServer interface
  function RegisterUserServiceServer (line 88) | func RegisterUserServiceServer(s grpc.ServiceRegistrar, srv UserServiceS...
  function _UserService_GetUser_Handler (line 92) | func _UserService_GetUser_Handler(srv interface{}, ctx context.Context, ...
  function _UserService_GetUsers_Handler (line 110) | func _UserService_GetUsers_Handler(srv interface{}, ctx context.Context,...

FILE: _examples/03_custom_resolver/federation/federation.pb.go
  constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type PostV2DevType (line 25) | type PostV2DevType
    method Enum (line 41) | func (x PostV2DevType) Enum() *PostV2DevType {
    method String (line 47) | func (x PostV2DevType) String() string {
    method Descriptor (line 51) | func (PostV2DevType) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 55) | func (PostV2DevType) Type() protoreflect.EnumType {
    method Number (line 59) | func (x PostV2DevType) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 64) | func (PostV2DevType) EnumDescriptor() ([]byte, []int) {
  constant PostV2DevType_POST_V2_DEV_TYPE (line 28) | PostV2DevType_POST_V2_DEV_TYPE PostV2DevType = 0
  type GetPostV2DevRequest (line 68) | type GetPostV2DevRequest struct
    method Reset (line 76) | func (x *GetPostV2DevRequest) Reset() {
    method String (line 85) | func (x *GetPostV2DevRequest) String() string {
    method ProtoMessage (line 89) | func (*GetPostV2DevRequest) ProtoMessage() {}
    method ProtoReflect (line 91) | func (x *GetPostV2DevRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 104) | func (*GetPostV2DevRequest) Descriptor() ([]byte, []int) {
    method GetId (line 108) | func (x *GetPostV2DevRequest) GetId() string {
  type GetPostV2DevResponse (line 115) | type GetPostV2DevResponse struct
    method Reset (line 128) | func (x *GetPostV2DevResponse) Reset() {
    method String (line 137) | func (x *GetPostV2DevResponse) String() string {
    method ProtoMessage (line 141) | func (*GetPostV2DevResponse) ProtoMessage() {}
    method ProtoReflect (line 143) | func (x *GetPostV2DevResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 156) | func (*GetPostV2DevResponse) Descriptor() ([]byte, []int) {
    method GetPost (line 160) | func (x *GetPostV2DevResponse) GetPost() *PostV2Dev {
    method GetType (line 167) | func (x *GetPostV2DevResponse) GetType() PostV2DevType {
    method GetEnvA (line 174) | func (x *GetPostV2DevResponse) GetEnvA() string {
    method GetEnvB (line 181) | func (x *GetPostV2DevResponse) GetEnvB() int64 {
    method GetEnvCValue (line 188) | func (x *GetPostV2DevResponse) GetEnvCValue() *durationpb.Duration {
    method GetRef (line 195) | func (x *GetPostV2DevResponse) GetRef() *Ref {
  type PostV2Dev (line 202) | type PostV2Dev struct
    method Reset (line 214) | func (x *PostV2Dev) Reset() {
    method String (line 223) | func (x *PostV2Dev) String() string {
    method ProtoMessage (line 227) | func (*PostV2Dev) ProtoMessage() {}
    method ProtoReflect (line 229) | func (x *PostV2Dev) ProtoReflect() protoreflect.Message {
    method Descriptor (line 242) | func (*PostV2Dev) Descriptor() ([]byte, []int) {
    method GetId (line 246) | func (x *PostV2Dev) GetId() string {
    method GetTitle (line 253) | func (x *PostV2Dev) GetTitle() string {
    method GetContent (line 260) | func (x *PostV2Dev) GetContent() string {
    method GetUser (line 267) | func (x *PostV2Dev) GetUser() *User {
    method GetNullCheck (line 274) | func (x *PostV2Dev) GetNullCheck() bool {
  type User (line 281) | type User struct
    method Reset (line 290) | func (x *User) Reset() {
    method String (line 299) | func (x *User) String() string {
    method ProtoMessage (line 303) | func (*User) ProtoMessage() {}
    method ProtoReflect (line 305) | func (x *User) ProtoReflect() protoreflect.Message {
    method Descriptor (line 318) | func (*User) Descriptor() ([]byte, []int) {
    method GetId (line 322) | func (x *User) GetId() string {
    method GetName (line 329) | func (x *User) GetName() string {
  type Unused (line 336) | type Unused struct
    method Reset (line 344) | func (x *Unused) Reset() {
    method String (line 353) | func (x *Unused) String() string {
    method ProtoMessage (line 357) | func (*Unused) ProtoMessage() {}
    method ProtoReflect (line 359) | func (x *Unused) ProtoReflect() protoreflect.Message {
    method Descriptor (line 372) | func (*Unused) Descriptor() ([]byte, []int) {
    method GetFoo (line 376) | func (x *Unused) GetFoo() string {
  type ForNameless (line 383) | type ForNameless struct
    method Reset (line 391) | func (x *ForNameless) Reset() {
    method String (line 400) | func (x *ForNameless) String() string {
    method ProtoMessage (line 404) | func (*ForNameless) ProtoMessage() {}
    method ProtoReflect (line 406) | func (x *ForNameless) ProtoReflect() protoreflect.Message {
    method Descriptor (line 419) | func (*ForNameless) Descriptor() ([]byte, []int) {
    method GetBar (line 423) | func (x *ForNameless) GetBar() string {
  type TypedNil (line 430) | type TypedNil struct
    method Reset (line 436) | func (x *TypedNil) Reset() {
    method String (line 445) | func (x *TypedNil) String() string {
    method ProtoMessage (line 449) | func (*TypedNil) ProtoMessage() {}
    method ProtoReflect (line 451) | func (x *TypedNil) ProtoReflect() protoreflect.Message {
    method Descriptor (line 464) | func (*TypedNil) Descriptor() ([]byte, []int) {
  function file_federation_federation_proto_rawDescGZIP (line 595) | func file_federation_federation_proto_rawDescGZIP() []byte {
  function init (line 631) | func init() { file_federation_federation_proto_init() }
  function file_federation_federation_proto_init (line 632) | func file_federation_federation_proto_init() {

FILE: _examples/03_custom_resolver/federation/federation_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  constant FederationV2DevService_GetPostV2Dev_FullMethodName (line 22) | FederationV2DevService_GetPostV2Dev_FullMethodName = "/federation.v2dev....
  type FederationV2DevServiceClient (line 28) | type FederationV2DevServiceClient interface
  type federationV2DevServiceClient (line 32) | type federationV2DevServiceClient struct
    method GetPostV2Dev (line 40) | func (c *federationV2DevServiceClient) GetPostV2Dev(ctx context.Contex...
  function NewFederationV2DevServiceClient (line 36) | func NewFederationV2DevServiceClient(cc grpc.ClientConnInterface) Federa...
  type FederationV2DevServiceServer (line 52) | type FederationV2DevServiceServer interface
  type UnimplementedFederationV2DevServiceServer (line 58) | type UnimplementedFederationV2DevServiceServer struct
    method GetPostV2Dev (line 61) | func (UnimplementedFederationV2DevServiceServer) GetPostV2Dev(context....
    method mustEmbedUnimplementedFederationV2DevServiceServer (line 64) | func (UnimplementedFederationV2DevServiceServer) mustEmbedUnimplemente...
  type UnsafeFederationV2DevServiceServer (line 70) | type UnsafeFederationV2DevServiceServer interface
  function RegisterFederationV2DevServiceServer (line 74) | func RegisterFederationV2DevServiceServer(s grpc.ServiceRegistrar, srv F...
  function _FederationV2DevService_GetPostV2Dev_Handler (line 78) | func _FederationV2DevService_GetPostV2Dev_Handler(srv interface{}, ctx c...

FILE: _examples/03_custom_resolver/federation/federation_grpc_federation.pb.go
  type FederationV2DevService_Federation_V2Dev_ForNamelessVariable (line 30) | type FederationV2DevService_Federation_V2Dev_ForNamelessVariable struct
  type FederationV2DevService_Federation_V2Dev_ForNamelessArgument (line 34) | type FederationV2DevService_Federation_V2Dev_ForNamelessArgument struct
  type FederationV2DevService_Federation_V2Dev_GetPostV2DevResponseVariable (line 40) | type FederationV2DevService_Federation_V2Dev_GetPostV2DevResponseVariabl...
  type FederationV2DevService_Federation_V2Dev_GetPostV2DevResponseArgument (line 46) | type FederationV2DevService_Federation_V2Dev_GetPostV2DevResponseArgumen...
  type FederationV2DevService_Federation_V2Dev_PostV2DevVariable (line 52) | type FederationV2DevService_Federation_V2Dev_PostV2DevVariable struct
  type FederationV2DevService_Federation_V2Dev_PostV2DevArgument (line 64) | type FederationV2DevService_Federation_V2Dev_PostV2DevArgument struct
  type FederationV2DevService_Federation_V2Dev_PostV2Dev_UserArgument (line 70) | type FederationV2DevService_Federation_V2Dev_PostV2Dev_UserArgument struct
  type FederationV2DevService_Federation_V2Dev_RefVariable (line 75) | type FederationV2DevService_Federation_V2Dev_RefVariable struct
  type FederationV2DevService_Federation_V2Dev_RefArgument (line 79) | type FederationV2DevService_Federation_V2Dev_RefArgument struct
  type FederationV2DevService_Federation_V2Dev_TypedNilVariable (line 84) | type FederationV2DevService_Federation_V2Dev_TypedNilVariable struct
  type FederationV2DevService_Federation_V2Dev_TypedNilArgument (line 88) | type FederationV2DevService_Federation_V2Dev_TypedNilArgument struct
  type FederationV2DevService_Federation_V2Dev_UnusedVariable (line 93) | type FederationV2DevService_Federation_V2Dev_UnusedVariable struct
  type FederationV2DevService_Federation_V2Dev_UnusedArgument (line 97) | type FederationV2DevService_Federation_V2Dev_UnusedArgument struct
  type FederationV2DevService_Federation_V2Dev_UserVariable (line 103) | type FederationV2DevService_Federation_V2Dev_UserVariable struct
  type FederationV2DevService_Federation_V2Dev_UserArgument (line 109) | type FederationV2DevService_Federation_V2Dev_UserArgument struct
  type FederationV2DevService_Federation_V2Dev_User_NameArgument (line 118) | type FederationV2DevService_Federation_V2Dev_User_NameArgument struct
  type FederationV2DevServiceConfig (line 124) | type FederationV2DevServiceConfig struct
  type FederationV2DevServiceClientFactory (line 139) | type FederationV2DevServiceClientFactory interface
  type FederationV2DevServiceClientConfig (line 148) | type FederationV2DevServiceClientConfig struct
  type FederationV2DevServiceDependentClientSet (line 155) | type FederationV2DevServiceDependentClientSet struct
  type FederationV2DevServiceResolver (line 161) | type FederationV2DevServiceResolver interface
  type FederationV2DevServiceCELPluginConfig (line 180) | type FederationV2DevServiceCELPluginConfig struct
  type FederationV2DevServiceEnv (line 185) | type FederationV2DevServiceEnv struct
  type keyFederationV2DevServiceEnv (line 192) | type keyFederationV2DevServiceEnv struct
  function GetFederationV2DevServiceEnv (line 195) | func GetFederationV2DevServiceEnv(ctx context.Context) *FederationV2DevS...
  function withFederationV2DevServiceEnv (line 203) | func withFederationV2DevServiceEnv(ctx context.Context, env *FederationV...
  type FederationV2DevServiceVariable (line 208) | type FederationV2DevServiceVariable struct
  type keyFederationV2DevServiceVariable (line 212) | type keyFederationV2DevServiceVariable struct
  function GetFederationV2DevServiceVariable (line 215) | func GetFederationV2DevServiceVariable(ctx context.Context) *FederationV...
  function withFederationV2DevServiceVariable (line 223) | func withFederationV2DevServiceVariable(ctx context.Context, svcVar *Fed...
  type FederationV2DevServiceUnimplementedResolver (line 231) | type FederationV2DevServiceUnimplementedResolver struct
    method Resolve_Federation_V2Dev_ForNameless (line 235) | func (FederationV2DevServiceUnimplementedResolver) Resolve_Federation_...
    method Resolve_Federation_V2Dev_PostV2Dev_User (line 242) | func (FederationV2DevServiceUnimplementedResolver) Resolve_Federation_...
    method Resolve_Federation_V2Dev_TypedNil (line 249) | func (FederationV2DevServiceUnimplementedResolver) Resolve_Federation_...
    method Resolve_Federation_V2Dev_Unused (line 256) | func (FederationV2DevServiceUnimplementedResolver) Resolve_Federation_...
    method Resolve_Federation_V2Dev_User (line 263) | func (FederationV2DevServiceUnimplementedResolver) Resolve_Federation_...
    method Resolve_Federation_V2Dev_User_Name (line 270) | func (FederationV2DevServiceUnimplementedResolver) Resolve_Federation_...
  constant FederationV2DevService_DependentMethod_Post_PostService_GetPost (line 276) | FederationV2DevService_DependentMethod_Post_PostService_GetPost = "/post...
  constant FederationV2DevService_DependentMethod_User_UserService_GetUser (line 277) | FederationV2DevService_DependentMethod_User_UserService_GetUser = "/user...
  type FederationV2DevService (line 281) | type FederationV2DevService struct
    method cleanup (line 408) | func (s *FederationV2DevService) cleanup(ctx context.Context) {
    method initServiceVariables (line 413) | func (s *FederationV2DevService) initServiceVariables(ctx context.Cont...
    method GetPostV2Dev (line 453) | func (s *FederationV2DevService) GetPostV2Dev(ctx context.Context, req...
    method resolve_Federation_V2Dev_ForNameless (line 483) | func (s *FederationV2DevService) resolve_Federation_V2Dev_ForNameless(...
    method resolve_Federation_V2Dev_GetPostV2DevResponse (line 504) | func (s *FederationV2DevService) resolve_Federation_V2Dev_GetPostV2Dev...
    method resolve_Federation_V2Dev_PostV2Dev (line 711) | func (s *FederationV2DevService) resolve_Federation_V2Dev_PostV2Dev(ct...
    method resolve_Federation_V2Dev_Ref (line 1113) | func (s *FederationV2DevService) resolve_Federation_V2Dev_Ref(ctx cont...
    method resolve_Federation_V2Dev_TypedNil (line 1152) | func (s *FederationV2DevService) resolve_Federation_V2Dev_TypedNil(ctx...
    method resolve_Federation_V2Dev_Unused (line 1173) | func (s *FederationV2DevService) resolve_Federation_V2Dev_Unused(ctx c...
    method resolve_Federation_V2Dev_User (line 1194) | func (s *FederationV2DevService) resolve_Federation_V2Dev_User(ctx con...
    method cast_Google_Protobuf_Duration__to__Google_Protobuf_Duration (line 1315) | func (s *FederationV2DevService) cast_Google_Protobuf_Duration__to__Go...
    method logvalue_Federation_V2Dev_ForNameless (line 1329) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_ForNameless...
    method logvalue_Federation_V2Dev_ForNamelessArgument (line 1341) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_ForNameless...
    method logvalue_Federation_V2Dev_GetPostV2DevResponse (line 1353) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_GetPostV2De...
    method logvalue_Federation_V2Dev_GetPostV2DevResponseArgument (line 1370) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_GetPostV2De...
    method logvalue_Federation_V2Dev_PostV2Dev (line 1382) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_PostV2Dev(v...
    method logvalue_Federation_V2Dev_PostV2DevArgument (line 1398) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_PostV2DevAr...
    method logvalue_Federation_V2Dev_PostV2DevType (line 1410) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_PostV2DevTy...
    method logvalue_Federation_V2Dev_Ref (line 1421) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_Ref(v *Ref)...
    method logvalue_Federation_V2Dev_RefArgument (line 1433) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_RefArgument...
    method logvalue_Federation_V2Dev_TypedNil (line 1443) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_TypedNil(v ...
    method logvalue_Federation_V2Dev_TypedNilArgument (line 1453) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_TypedNilArg...
    method logvalue_Federation_V2Dev_Unused (line 1463) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_Unused(v *U...
    method logvalue_Federation_V2Dev_UnusedArgument (line 1475) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_UnusedArgum...
    method logvalue_Federation_V2Dev_User (line 1487) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_User(v *Use...
    method logvalue_Federation_V2Dev_UserArgument (line 1500) | func (s *FederationV2DevService) logvalue_Federation_V2Dev_UserArgumen...
    method logvalue_Google_Protobuf_Duration (line 1515) | func (s *FederationV2DevService) logvalue_Google_Protobuf_Duration(v *...
    method logvalue_Post_GetPostRequest (line 1528) | func (s *FederationV2DevService) logvalue_Post_GetPostRequest(v *post....
    method logvalue_Post_GetPostsRequest (line 1540) | func (s *FederationV2DevService) logvalue_Post_GetPostsRequest(v *post...
    method logvalue_User_GetUserRequest (line 1552) | func (s *FederationV2DevService) logvalue_User_GetUserRequest(v *user....
    method logvalue_User_GetUsersRequest (line 1564) | func (s *FederationV2DevService) logvalue_User_GetUsersRequest(v *user...
  function NewFederationV2DevService (line 299) | func NewFederationV2DevService(cfg FederationV2DevServiceConfig) (*Feder...
  function CleanupFederationV2DevService (line 404) | func CleanupFederationV2DevService(ctx context.Context, svc *FederationV...

FILE: _examples/03_custom_resolver/federation/other.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type Ref (line 24) | type Ref struct
    method Reset (line 32) | func (x *Ref) Reset() {
    method String (line 41) | func (x *Ref) String() string {
    method ProtoMessage (line 45) | func (*Ref) ProtoMessage() {}
    method ProtoReflect (line 47) | func (x *Ref) ProtoReflect() protoreflect.Message {
    method Descriptor (line 60) | func (*Ref) Descriptor() ([]byte, []int) {
    method GetA (line 64) | func (x *Ref) GetA() string {
  function file_federation_other_proto_rawDescGZIP (line 100) | func file_federation_other_proto_rawDescGZIP() []byte {
  function init (line 119) | func init() { file_federation_other_proto_init() }
  function file_federation_other_proto_init (line 120) | func file_federation_other_proto_init() {

FILE: _examples/03_custom_resolver/main_test.go
  constant bufSize (line 35) | bufSize = 1024
  type clientConfig (line 43) | type clientConfig struct
    method Post_PostServiceClient (line 45) | func (c *clientConfig) Post_PostServiceClient(cfg federation.Federatio...
    method User_UserServiceClient (line 49) | func (c *clientConfig) User_UserServiceClient(cfg federation.Federatio...
  type Resolver (line 53) | type Resolver struct
    method Init (line 56) | func (r *Resolver) Init(ctx context.Context) error {
    method Resolve_Federation_V2Dev_User (line 66) | func (r *Resolver) Resolve_Federation_V2Dev_User(ctx context.Context, ...
    method validateEnv (line 79) | func (r *Resolver) validateEnv(ctx context.Context) error {
    method validateServiceVar (line 98) | func (r *Resolver) validateServiceVar(ctx context.Context) error {
    method Resolve_Federation_V2Dev_PostV2Dev_User (line 108) | func (r *Resolver) Resolve_Federation_V2Dev_PostV2Dev_User(ctx context...
    method Resolve_Federation_V2Dev_Unused (line 112) | func (r *Resolver) Resolve_Federation_V2Dev_Unused(_ context.Context, ...
    method Resolve_Federation_V2Dev_ForNameless (line 116) | func (r *Resolver) Resolve_Federation_V2Dev_ForNameless(_ context.Cont...
    method Resolve_Federation_V2Dev_User_Name (line 120) | func (r *Resolver) Resolve_Federation_V2Dev_User_Name(_ context.Contex...
    method Resolve_Federation_V2Dev_TypedNil (line 124) | func (r *Resolver) Resolve_Federation_V2Dev_TypedNil(_ context.Context...
  type PostServer (line 128) | type PostServer struct
    method GetPost (line 132) | func (s *PostServer) GetPost(ctx context.Context, req *post.GetPostReq...
    method GetPosts (line 136) | func (s *PostServer) GetPosts(ctx context.Context, req *post.GetPostsR...
  type UserServer (line 140) | type UserServer struct
    method GetUser (line 144) | func (s *UserServer) GetUser(ctx context.Context, req *user.GetUserReq...
    method GetUsers (line 156) | func (s *UserServer) GetUsers(ctx context.Context, req *user.GetUsersR...
  function dialer (line 167) | func dialer(ctx context.Context, address string) (net.Conn, error) {
  function init (line 173) | func init() {
  function TestFederation (line 193) | func TestFederation(t *testing.T) {

FILE: _examples/03_custom_resolver/post/post.pb.go
  constant _ (line 18) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 20) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type GetPostRequest (line 23) | type GetPostRequest struct
    method Reset (line 31) | func (x *GetPostRequest) Reset() {
    method String (line 40) | func (x *GetPostRequest) String() string {
    method ProtoMessage (line 44) | func (*GetPostRequest) ProtoMessage() {}
    method ProtoReflect (line 46) | func (x *GetPostRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 59) | func (*GetPostRequest) Descriptor() ([]byte, []int) {
    method GetId (line 63) | func (x *GetPostRequest) GetId() string {
  type GetPostResponse (line 70) | type GetPostResponse struct
    method Reset (line 78) | func (x *GetPostResponse) Reset() {
    method String (line 87) | func (x *GetPostResponse) String() string {
    method ProtoMessage (line 91) | func (*GetPostResponse) ProtoMessage() {}
    method ProtoReflect (line 93) | func (x *GetPostResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 106) | func (*GetPostResponse) Descriptor() ([]byte, []int) {
    method GetPost (line 110) | func (x *GetPostResponse) GetPost() *Post {
  type GetPostsRequest (line 117) | type GetPostsRequest struct
    method Reset (line 125) | func (x *GetPostsRequest) Reset() {
    method String (line 134) | func (x *GetPostsRequest) String() string {
    method ProtoMessage (line 138) | func (*GetPostsRequest) ProtoMessage() {}
    method ProtoReflect (line 140) | func (x *GetPostsRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 153) | func (*GetPostsRequest) Descriptor() ([]byte, []int) {
    method GetIds (line 157) | func (x *GetPostsRequest) GetIds() []string {
  type GetPostsResponse (line 164) | type GetPostsResponse struct
    method Reset (line 172) | func (x *GetPostsResponse) Reset() {
    method String (line 181) | func (x *GetPostsResponse) String() string {
    method ProtoMessage (line 185) | func (*GetPostsResponse) ProtoMessage() {}
    method ProtoReflect (line 187) | func (x *GetPostsResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 200) | func (*GetPostsResponse) Descriptor() ([]byte, []int) {
    method GetPosts (line 204) | func (x *GetPostsResponse) GetPosts() []*Post {
  type Post (line 211) | type Post struct
    method Reset (line 222) | func (x *Post) Reset() {
    method String (line 231) | func (x *Post) String() string {
    method ProtoMessage (line 235) | func (*Post) ProtoMessage() {}
    method ProtoReflect (line 237) | func (x *Post) ProtoReflect() protoreflect.Message {
    method Descriptor (line 250) | func (*Post) Descriptor() ([]byte, []int) {
    method GetId (line 254) | func (x *Post) GetId() string {
    method GetTitle (line 261) | func (x *Post) GetTitle() string {
    method GetContent (line 268) | func (x *Post) GetContent() string {
    method GetUserId (line 275) | func (x *Post) GetUserId() string {
  function file_post_post_proto_rawDescGZIP (line 326) | func file_post_post_proto_rawDescGZIP() []byte {
  function init (line 355) | func init() { file_post_post_proto_init() }
  function file_post_post_proto_init (line 356) | func file_post_post_proto_init() {

FILE: _examples/03_custom_resolver/post/post_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  constant PostService_GetPost_FullMethodName (line 22) | PostService_GetPost_FullMethodName  = "/post.PostService/GetPost"
  constant PostService_GetPosts_FullMethodName (line 23) | PostService_GetPosts_FullMethodName = "/post.PostService/GetPosts"
  type PostServiceClient (line 29) | type PostServiceClient interface
  type postServiceClient (line 34) | type postServiceClient struct
    method GetPost (line 42) | func (c *postServiceClient) GetPost(ctx context.Context, in *GetPostRe...
    method GetPosts (line 51) | func (c *postServiceClient) GetPosts(ctx context.Context, in *GetPosts...
  function NewPostServiceClient (line 38) | func NewPostServiceClient(cc grpc.ClientConnInterface) PostServiceClient {
  type PostServiceServer (line 63) | type PostServiceServer interface
  type UnimplementedPostServiceServer (line 70) | type UnimplementedPostServiceServer struct
    method GetPost (line 73) | func (UnimplementedPostServiceServer) GetPost(context.Context, *GetPos...
    method GetPosts (line 76) | func (UnimplementedPostServiceServer) GetPosts(context.Context, *GetPo...
    method mustEmbedUnimplementedPostServiceServer (line 79) | func (UnimplementedPostServiceServer) mustEmbedUnimplementedPostServic...
  type UnsafePostServiceServer (line 84) | type UnsafePostServiceServer interface
  function RegisterPostServiceServer (line 88) | func RegisterPostServiceServer(s grpc.ServiceRegistrar, srv PostServiceS...
  function _PostService_GetPost_Handler (line 92) | func _PostService_GetPost_Handler(srv interface{}, ctx context.Context, ...
  function _PostService_GetPosts_Handler (line 110) | func _PostService_GetPosts_Handler(srv interface{}, ctx context.Context,...

FILE: _examples/03_custom_resolver/user/user.pb.go
  constant _ (line 18) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 20) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type GetUserRequest (line 23) | type GetUserRequest struct
    method Reset (line 31) | func (x *GetUserRequest) Reset() {
    method String (line 40) | func (x *GetUserRequest) String() string {
    method ProtoMessage (line 44) | func (*GetUserRequest) ProtoMessage() {}
    method ProtoReflect (line 46) | func (x *GetUserRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 59) | func (*GetUserRequest) Descriptor() ([]byte, []int) {
    method GetId (line 63) | func (x *GetUserRequest) GetId() string {
  type GetUserResponse (line 70) | type GetUserResponse struct
    method Reset (line 78) | func (x *GetUserResponse) Reset() {
    method String (line 87) | func (x *GetUserResponse) String() string {
    method ProtoMessage (line 91) | func (*GetUserResponse) ProtoMessage() {}
    method ProtoReflect (line 93) | func (x *GetUserResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 106) | func (*GetUserResponse) Descriptor() ([]byte, []int) {
    method GetUser (line 110) | func (x *GetUserResponse) GetUser() *User {
  type GetUsersRequest (line 117) | type GetUsersRequest struct
    method Reset (line 125) | func (x *GetUsersRequest) Reset() {
    method String (line 134) | func (x *GetUsersRequest) String() string {
    method ProtoMessage (line 138) | func (*GetUsersRequest) ProtoMessage() {}
    method ProtoReflect (line 140) | func (x *GetUsersRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 153) | func (*GetUsersRequest) Descriptor() ([]byte, []int) {
    method GetIds (line 157) | func (x *GetUsersRequest) GetIds() []string {
  type GetUsersResponse (line 164) | type GetUsersResponse struct
    method Reset (line 172) | func (x *GetUsersResponse) Reset() {
    method String (line 181) | func (x *GetUsersResponse) String() string {
    method ProtoMessage (line 185) | func (*GetUsersResponse) ProtoMessage() {}
    method ProtoReflect (line 187) | func (x *GetUsersResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 200) | func (*GetUsersResponse) Descriptor() ([]byte, []int) {
    method GetUsers (line 204) | func (x *GetUsersResponse) GetUsers() []*User {
  type User (line 211) | type User struct
    method Reset (line 220) | func (x *User) Reset() {
    method String (line 229) | func (x *User) String() string {
    method ProtoMessage (line 233) | func (*User) ProtoMessage() {}
    method ProtoReflect (line 235) | func (x *User) ProtoReflect() protoreflect.Message {
    method Descriptor (line 248) | func (*User) Descriptor() ([]byte, []int) {
    method GetId (line 252) | func (x *User) GetId() string {
    method GetName (line 259) | func (x *User) GetName() string {
  function file_user_user_proto_rawDescGZIP (line 306) | func file_user_user_proto_rawDescGZIP() []byte {
  function init (line 335) | func init() { file_user_user_proto_init() }
  function file_user_user_proto_init (line 336) | func file_user_user_proto_init() {

FILE: _examples/03_custom_resolver/user/user_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  constant UserService_GetUser_FullMethodName (line 22) | UserService_GetUser_FullMethodName  = "/user.UserService/GetUser"
  constant UserService_GetUsers_FullMethodName (line 23) | UserService_GetUsers_FullMethodName = "/user.UserService/GetUsers"
  type UserServiceClient (line 29) | type UserServiceClient interface
  type userServiceClient (line 34) | type userServiceClient struct
    method GetUser (line 42) | func (c *userServiceClient) GetUser(ctx context.Context, in *GetUserRe...
    method GetUsers (line 51) | func (c *userServiceClient) GetUsers(ctx context.Context, in *GetUsers...
  function NewUserServiceClient (line 38) | func NewUserServiceClient(cc grpc.ClientConnInterface) UserServiceClient {
  type UserServiceServer (line 63) | type UserServiceServer interface
  type UnimplementedUserServiceServer (line 70) | type UnimplementedUserServiceServer struct
    method GetUser (line 73) | func (UnimplementedUserServiceServer) GetUser(context.Context, *GetUse...
    method GetUsers (line 76) | func (UnimplementedUserServiceServer) GetUsers(context.Context, *GetUs...
    method mustEmbedUnimplementedUserServiceServer (line 79) | func (UnimplementedUserServiceServer) mustEmbedUnimplementedUserServic...
  type UnsafeUserServiceServer (line 84) | type UnsafeUserServiceServer interface
  function RegisterUserServiceServer (line 88) | func RegisterUserServiceServer(s grpc.ServiceRegistrar, srv UserServiceS...
  function _UserService_GetUser_Handler (line 92) | func _UserService_GetUser_Handler(srv interface{}, ctx context.Context, ...
  function _UserService_GetUsers_Handler (line 110) | func _UserService_GetUsers_Handler(srv interface{}, ctx context.Context,...

FILE: _examples/04_timeout/federation/federation.pb.go
  constant _ (line 21) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 23) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type Ext (line 26) | type Ext struct
    method Reset (line 34) | func (x *Ext) Reset() {
    method String (line 43) | func (x *Ext) String() string {
    method ProtoMessage (line 47) | func (*Ext) ProtoMessage() {}
    method ProtoReflect (line 49) | func (x *Ext) ProtoReflect() protoreflect.Message {
    method Descriptor (line 62) | func (*Ext) Descriptor() ([]byte, []int) {
    method GetFoo (line 66) | func (x *Ext) GetFoo() string {
  type GetPostRequest (line 73) | type GetPostRequest struct
    method Reset (line 81) | func (x *GetPostRequest) Reset() {
    method String (line 90) | func (x *GetPostRequest) String() string {
    method ProtoMessage (line 94) | func (*GetPostRequest) ProtoMessage() {}
    method ProtoReflect (line 96) | func (x *GetPostRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 109) | func (*GetPostRequest) Descriptor() ([]byte, []int) {
    method GetId (line 113) | func (x *GetPostRequest) GetId() string {
  type GetPostResponse (line 120) | type GetPostResponse struct
    method Reset (line 128) | func (x *GetPostResponse) Reset() {
    method String (line 137) | func (x *GetPostResponse) String() string {
    method ProtoMessage (line 141) | func (*GetPostResponse) ProtoMessage() {}
    method ProtoReflect (line 143) | func (x *GetPostResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 156) | func (*GetPostResponse) Descriptor() ([]byte, []int) {
    method GetPost (line 160) | func (x *GetPostResponse) GetPost() *Post {
  type Post (line 167) | type Post struct
    method Reset (line 177) | func (x *Post) Reset() {
    method String (line 186) | func (x *Post) String() string {
    method ProtoMessage (line 190) | func (*Post) ProtoMessage() {}
    method ProtoReflect (line 192) | func (x *Post) ProtoReflect() protoreflect.Message {
    method Descriptor (line 205) | func (*Post) Descriptor() ([]byte, []int) {
    method GetId (line 209) | func (x *Post) GetId() string {
    method GetTitle (line 216) | func (x *Post) GetTitle() string {
    method GetContent (line 223) | func (x *Post) GetContent() string {
  type UpdatePostRequest (line 230) | type UpdatePostRequest struct
    method Reset (line 238) | func (x *UpdatePostRequest) Reset() {
    method String (line 247) | func (x *UpdatePostRequest) String() string {
    method ProtoMessage (line 251) | func (*UpdatePostRequest) ProtoMessage() {}
    method ProtoReflect (line 253) | func (x *UpdatePostRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 266) | func (*UpdatePostRequest) Descriptor() ([]byte, []int) {
    method GetId (line 270) | func (x *UpdatePostRequest) GetId() string {
  type UpdatePostResponse (line 277) | type UpdatePostResponse struct
    method Reset (line 283) | func (x *UpdatePostResponse) Reset() {
    method String (line 292) | func (x *UpdatePostResponse) String() string {
    method ProtoMessage (line 296) | func (*UpdatePostResponse) ProtoMessage() {}
    method ProtoReflect (line 298) | func (x *UpdatePostResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 311) | func (*UpdatePostResponse) Descriptor() ([]byte, []int) {
  function file_federation_federation_proto_rawDescGZIP (line 408) | func file_federation_federation_proto_rawDescGZIP() []byte {
  function init (line 441) | func init() { file_federation_federation_proto_init() }
  function file_federation_federation_proto_init (line 442) | func file_federation_federation_proto_init() {

FILE: _examples/04_timeout/federation/federation_grpc.pb.go
  constant _ (line 20) | _ = grpc.SupportPackageIsVersion7
  constant FederationService_GetPost_FullMethodName (line 23) | FederationService_GetPost_FullMethodName    = "/federation.FederationSer...
  constant FederationService_UpdatePost_FullMethodName (line 24) | FederationService_UpdatePost_FullMethodName = "/federation.FederationSer...
  type FederationServiceClient (line 30) | type FederationServiceClient interface
  type federationServiceClient (line 35) | type federationServiceClient struct
    method GetPost (line 43) | func (c *federationServiceClient) GetPost(ctx context.Context, in *Get...
    method UpdatePost (line 52) | func (c *federationServiceClient) UpdatePost(ctx context.Context, in *...
  function NewFederationServiceClient (line 39) | func NewFederationServiceClient(cc grpc.ClientConnInterface) FederationS...
  type FederationServiceServer (line 64) | type FederationServiceServer interface
  type UnimplementedFederationServiceServer (line 71) | type UnimplementedFederationServiceServer struct
    method GetPost (line 74) | func (UnimplementedFederationServiceServer) GetPost(context.Context, *...
    method UpdatePost (line 77) | func (UnimplementedFederationServiceServer) UpdatePost(context.Context...
    method mustEmbedUnimplementedFederationServiceServer (line 80) | func (UnimplementedFederationServiceServer) mustEmbedUnimplementedFede...
  type UnsafeFederationServiceServer (line 85) | type UnsafeFederationServiceServer interface
  function RegisterFederationServiceServer (line 89) | func RegisterFederationServiceServer(s grpc.ServiceRegistrar, srv Federa...
  function _FederationService_GetPost_Handler (line 93) | func _FederationService_GetPost_Handler(srv interface{}, ctx context.Con...
  function _FederationService_UpdatePost_Handler (line 111) | func _FederationService_UpdatePost_Handler(srv interface{}, ctx context....

FILE: _examples/04_timeout/federation/federation_grpc_federation.pb.go
  type FederationService_Federation_GetPostResponseVariable (line 29) | type FederationService_Federation_GetPostResponseVariable struct
  type FederationService_Federation_GetPostResponseArgument (line 34) | type FederationService_Federation_GetPostResponseArgument struct
  type FederationService_Federation_PostVariable (line 40) | type FederationService_Federation_PostVariable struct
  type FederationService_Federation_PostArgument (line 46) | type FederationService_Federation_PostArgument struct
  type FederationService_Federation_UpdatePostResponseVariable (line 52) | type FederationService_Federation_UpdatePostResponseVariable struct
  type FederationService_Federation_UpdatePostResponseArgument (line 56) | type FederationService_Federation_UpdatePostResponseArgument struct
  type FederationServiceConfig (line 62) | type FederationServiceConfig struct
  type FederationServiceClientFactory (line 74) | type FederationServiceClientFactory interface
  type FederationServiceClientConfig (line 81) | type FederationServiceClientConfig struct
  type FederationServiceDependentClientSet (line 88) | type FederationServiceDependentClientSet struct
  type FederationServiceResolver (line 93) | type FederationServiceResolver interface
  type FederationServiceCELPluginConfig (line 100) | type FederationServiceCELPluginConfig struct
  type FederationServiceUnimplementedResolver (line 108) | type FederationServiceUnimplementedResolver struct
  constant FederationService_DependentMethod_Post_PostService_DeletePost (line 111) | FederationService_DependentMethod_Post_PostService_DeletePost = "/post.P...
  constant FederationService_DependentMethod_Post_PostService_GetPost (line 112) | FederationService_DependentMethod_Post_PostService_GetPost    = "/post.P...
  constant FederationService_DependentMethod_Post_PostService_UpdatePost (line 113) | FederationService_DependentMethod_Post_PostService_UpdatePost = "/post.P...
  type FederationService (line 117) | type FederationService struct
    method cleanup (line 191) | func (s *FederationService) cleanup(ctx context.Context) {
    method GetPost (line 198) | func (s *FederationService) GetPost(ctx context.Context, req *GetPostR...
    method UpdatePost (line 228) | func (s *FederationService) UpdatePost(ctx context.Context, req *Updat...
    method resolve_Federation_GetPostResponse (line 262) | func (s *FederationService) resolve_Federation_GetPostResponse(ctx con...
    method resolve_Federation_Post (line 347) | func (s *FederationService) resolve_Federation_Post(ctx context.Contex...
    method resolve_Federation_UpdatePostResponse (line 451) | func (s *FederationService) resolve_Federation_UpdatePostResponse(ctx ...
    method cast_Federation_UpdatePostResponse__to__Google_Protobuf_Empty (line 589) | func (s *FederationService) cast_Federation_UpdatePostResponse__to__Go...
    method logvalue_Federation_GetPostResponse (line 598) | func (s *FederationService) logvalue_Federation_GetPostResponse(v *Get...
    method logvalue_Federation_GetPostResponseArgument (line 610) | func (s *FederationService) logvalue_Federation_GetPostResponseArgumen...
    method logvalue_Federation_Post (line 622) | func (s *FederationService) logvalue_Federation_Post(v *Post) slog.Val...
    method logvalue_Federation_PostArgument (line 636) | func (s *FederationService) logvalue_Federation_PostArgument(v *Federa...
    method logvalue_Federation_UpdatePostResponse (line 648) | func (s *FederationService) logvalue_Federation_UpdatePostResponse(v *...
    method logvalue_Federation_UpdatePostResponseArgument (line 658) | func (s *FederationService) logvalue_Federation_UpdatePostResponseArgu...
    method logvalue_Post_DeletePostRequest (line 670) | func (s *FederationService) logvalue_Post_DeletePostRequest(v *post.De...
    method logvalue_Post_GetPostRequest (line 682) | func (s *FederationService) logvalue_Post_GetPostRequest(v *post.GetPo...
    method logvalue_Post_UpdatePostRequest (line 694) | func (s *FederationService) logvalue_Post_UpdatePostRequest(v *post.Up...
  function NewFederationService (line 132) | func NewFederationService(cfg FederationServiceConfig) (*FederationServi...
  function CleanupFederationService (line 187) | func CleanupFederationService(ctx context.Context, svc *FederationServic...

FILE: _examples/04_timeout/grpc/federation/federation.pb.go
  constant _ (line 22) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 24) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type TypeKind (line 28) | type TypeKind
    method Enum (line 69) | func (x TypeKind) Enum() *TypeKind {
    method String (line 75) | func (x TypeKind) String() string {
    method Descriptor (line 79) | func (TypeKind) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 83) | func (TypeKind) Type() protoreflect.EnumType {
    method Number (line 87) | func (x TypeKind) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 92) | func (TypeKind) EnumDescriptor() ([]byte, []int) {
  constant TypeKind_UNKNOWN (line 32) | TypeKind_UNKNOWN TypeKind = 0
  constant TypeKind_STRING (line 34) | TypeKind_STRING TypeKind = 1
  constant TypeKind_BOOL (line 36) | TypeKind_BOOL TypeKind = 2
  constant TypeKind_INT64 (line 38) | TypeKind_INT64 TypeKind = 3
  constant TypeKind_UINT64 (line 40) | TypeKind_UINT64 TypeKind = 4
  constant TypeKind_DOUBLE (line 42) | TypeKind_DOUBLE TypeKind = 5
  constant TypeKind_DURATION (line 44) | TypeKind_DURATION TypeKind = 6
  type GRPCError_LogLevel (line 97) | type GRPCError_LogLevel
    method Enum (line 130) | func (x GRPCError_LogLevel) Enum() *GRPCError_LogLevel {
    method String (line 136) | func (x GRPCError_LogLevel) String() string {
    method Descriptor (line 140) | func (GRPCError_LogLevel) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 144) | func (GRPCError_LogLevel) Type() protoreflect.EnumType {
    method Number (line 148) | func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 153) | func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) {
  constant GRPCError_UNKNOWN (line 101) | GRPCError_UNKNOWN GRPCError_LogLevel = 0
  constant GRPCError_DEBUG (line 103) | GRPCError_DEBUG GRPCError_LogLevel = 1
  constant GRPCError_INFO (line 105) | GRPCError_INFO GRPCError_LogLevel = 2
  constant GRPCError_WARN (line 107) | GRPCError_WARN GRPCError_LogLevel = 3
  constant GRPCError_ERROR (line 109) | GRPCError_ERROR GRPCError_LogLevel = 4
  type FileRule (line 157) | type FileRule struct
    method Reset (line 167) | func (x *FileRule) Reset() {
    method String (line 176) | func (x *FileRule) String() string {
    method ProtoMessage (line 180) | func (*FileRule) ProtoMessage() {}
    method ProtoReflect (line 182) | func (x *FileRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 195) | func (*FileRule) Descriptor() ([]byte, []int) {
    method GetPlugin (line 199) | func (x *FileRule) GetPlugin() *CELPlugin {
    method GetImport (line 206) | func (x *FileRule) GetImport() []string {
  type EnumRule (line 213) | type EnumRule struct
    method Reset (line 227) | func (x *EnumRule) Reset() {
    method String (line 236) | func (x *EnumRule) String() string {
    method ProtoMessage (line 240) | func (*EnumRule) ProtoMessage() {}
    method ProtoReflect (line 242) | func (x *EnumRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 255) | func (*EnumRule) Descriptor() ([]byte, []int) {
    method GetAlias (line 259) | func (x *EnumRule) GetAlias() []string {
  type EnumValueRule (line 266) | type EnumValueRule struct
    method Reset (line 287) | func (x *EnumValueRule) Reset() {
    method String (line 296) | func (x *EnumValueRule) String() string {
    method ProtoMessage (line 300) | func (*EnumValueRule) ProtoMessage() {}
    method ProtoReflect (line 302) | func (x *EnumValueRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 315) | func (*EnumValueRule) Descriptor() ([]byte, []int) {
    method GetDefault (line 319) | func (x *EnumValueRule) GetDefault() bool {
    method GetAlias (line 326) | func (x *EnumValueRule) GetAlias() []string {
    method GetAttr (line 333) | func (x *EnumValueRule) GetAttr() []*EnumValueAttribute {
    method GetNoalias (line 340) | func (x *EnumValueRule) GetNoalias() bool {
  type EnumValueAttribute (line 347) | type EnumValueAttribute struct
    method Reset (line 359) | func (x *EnumValueAttribute) Reset() {
    method String (line 368) | func (x *EnumValueAttribute) String() string {
    method ProtoMessage (line 372) | func (*EnumValueAttribute) ProtoMessage() {}
    method ProtoReflect (line 374) | func (x *EnumValueAttribute) ProtoReflect() protoreflect.Message {
    method Descriptor (line 387) | func (*EnumValueAttribute) Descriptor() ([]byte, []int) {
    method GetName (line 391) | func (x *EnumValueAttribute) GetName() string {
    method GetValue (line 398) | func (x *EnumValueAttribute) GetValue() string {
  type OneofRule (line 405) | type OneofRule struct
    method Reset (line 411) | func (x *OneofRule) Reset() {
    method String (line 420) | func (x *OneofRule) String() string {
    method ProtoMessage (line 424) | func (*OneofRule) ProtoMessage() {}
    method ProtoReflect (line 426) | func (x *OneofRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 439) | func (*OneofRule) Descriptor() ([]byte, []int) {
  type ServiceRule (line 444) | type ServiceRule struct
    method Reset (line 455) | func (x *ServiceRule) Reset() {
    method String (line 464) | func (x *ServiceRule) String() string {
    method ProtoMessage (line 468) | func (*ServiceRule) ProtoMessage() {}
    method ProtoReflect (line 470) | func (x *ServiceRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 483) | func (*ServiceRule) Descriptor() ([]byte, []int) {
    method GetEnv (line 487) | func (x *ServiceRule) GetEnv() *Env {
    method GetVar (line 494) | func (x *ServiceRule) GetVar() []*ServiceVariable {
  type Env (line 503) | type Env struct
    method Reset (line 515) | func (x *Env) Reset() {
    method String (line 524) | func (x *Env) String() string {
    method ProtoMessage (line 528) | func (*Env) ProtoMessage() {}
    method ProtoReflect (line 530) | func (x *Env) ProtoReflect() protoreflect.Message {
    method Descriptor (line 543) | func (*Env) Descriptor() ([]byte, []int) {
    method GetVar (line 547) | func (x *Env) GetVar() []*EnvVar {
    method GetMessage (line 554) | func (x *Env) GetMessage() string {
  type ServiceVariable (line 564) | type ServiceVariable struct
    method Reset (line 589) | func (x *ServiceVariable) Reset() {
    method String (line 598) | func (x *ServiceVariable) String() string {
    method ProtoMessage (line 602) | func (*ServiceVariable) ProtoMessage() {}
    method ProtoReflect (line 604) | func (x *ServiceVariable) ProtoReflect() protoreflect.Message {
    method Descriptor (line 617) | func (*ServiceVariable) Descriptor() ([]byte, []int) {
    method GetName (line 621) | func (x *ServiceVariable) GetName() string {
    method GetIf (line 628) | func (x *ServiceVariable) GetIf() string {
    method GetExpr (line 635) | func (m *ServiceVariable) GetExpr() isServiceVariable_Expr {
    method GetBy (line 642) | func (x *ServiceVariable) GetBy() string {
    method GetMap (line 649) | func (x *ServiceVariable) GetMap() *MapExpr {
    method GetMessage (line 656) | func (x *ServiceVariable) GetMessage() *MessageExpr {
    method GetValidation (line 663) | func (x *ServiceVariable) GetValidation() *ServiceVariableValidationEx...
    method GetEnum (line 670) | func (x *ServiceVariable) GetEnum() *EnumExpr {
    method GetSwitch (line 677) | func (x *ServiceVariable) GetSwitch() *SwitchExpr {
  type isServiceVariable_Expr (line 684) | type isServiceVariable_Expr interface
  type ServiceVariable_By (line 688) | type ServiceVariable_By struct
    method isServiceVariable_Expr (line 718) | func (*ServiceVariable_By) isServiceVariable_Expr() {}
  type ServiceVariable_Map (line 693) | type ServiceVariable_Map struct
    method isServiceVariable_Expr (line 720) | func (*ServiceVariable_Map) isServiceVariable_Expr() {}
  type ServiceVariable_Message (line 698) | type ServiceVariable_Message struct
    method isServiceVariable_Expr (line 722) | func (*ServiceVariable_Message) isServiceVariable_Expr() {}
  type ServiceVariable_Validation (line 703) | type ServiceVariable_Validation struct
    method isServiceVariable_Expr (line 724) | func (*ServiceVariable_Validation) isServiceVariable_Expr() {}
  type ServiceVariable_Enum (line 708) | type ServiceVariable_Enum struct
    method isServiceVariable_Expr (line 726) | func (*ServiceVariable_Enum) isServiceVariable_Expr() {}
  type ServiceVariable_Switch (line 713) | type ServiceVariable_Switch struct
    method isServiceVariable_Expr (line 728) | func (*ServiceVariable_Switch) isServiceVariable_Expr() {}
  type ServiceVariableValidationExpr (line 731) | type ServiceVariableValidationExpr struct
    method Reset (line 743) | func (x *ServiceVariableValidationExpr) Reset() {
    method String (line 752) | func (x *ServiceVariableValidationExpr) String() string {
    method ProtoMessage (line 756) | func (*ServiceVariableValidationExpr) ProtoMessage() {}
    method ProtoReflect (line 758) | func (x *ServiceVariableValidationExpr) ProtoReflect() protoreflect.Me...
    method Descriptor (line 771) | func (*ServiceVariableValidationExpr) Descriptor() ([]byte, []int) {
    method GetIf (line 775) | func (x *ServiceVariableValidationExpr) GetIf() string {
    method GetMessage (line 782) | func (x *ServiceVariableValidationExpr) GetMessage() string {
  type EnvVar (line 790) | type EnvVar struct
    method Reset (line 803) | func (x *EnvVar) Reset() {
    method String (line 812) | func (x *EnvVar) String() string {
    method ProtoMessage (line 816) | func (*EnvVar) ProtoMessage() {}
    method ProtoReflect (line 818) | func (x *EnvVar) ProtoReflect() protoreflect.Message {
    method Descriptor (line 831) | func (*EnvVar) Descriptor() ([]byte, []int) {
    method GetName (line 835) | func (x *EnvVar) GetName() string {
    method GetType (line 842) | func (x *EnvVar) GetType() *EnvType {
    method GetOption (line 849) | func (x *EnvVar) GetOption() *EnvVarOption {
  type EnvType (line 857) | type EnvType struct
    method Reset (line 870) | func (x *EnvType) Reset() {
    method String (line 879) | func (x *EnvType) String() string {
    method ProtoMessage (line 883) | func (*EnvType) ProtoMessage() {}
    method ProtoReflect (line 885) | func (x *EnvType) ProtoReflect() protoreflect.Message {
    method Descriptor (line 898) | func (*EnvType) Descriptor() ([]byte, []int) {
    method GetType (line 902) | func (m *EnvType) GetType() isEnvType_Type {
    method GetKind (line 909) | func (x *EnvType) GetKind() TypeKind {
    method GetRepeated (line 916) | func (x *EnvType) GetRepeated() *EnvType {
    method GetMap (line 923) | func (x *EnvType) GetMap() *EnvMapType {
  type isEnvType_Type (line 930) | type isEnvType_Type interface
  type EnvType_Kind (line 934) | type EnvType_Kind struct
    method isEnvType_Type (line 949) | func (*EnvType_Kind) isEnvType_Type() {}
  type EnvType_Repeated (line 939) | type EnvType_Repeated struct
    method isEnvType_Type (line 951) | func (*EnvType_Repeated) isEnvType_Type() {}
  type EnvType_Map (line 944) | type EnvType_Map struct
    method isEnvType_Type (line 953) | func (*EnvType_Map) isEnvType_Type() {}
  type EnvMapType (line 956) | type EnvMapType struct
    method Reset (line 967) | func (x *EnvMapType) Reset() {
    method String (line 976) | func (x *EnvMapType) String() string {
    method ProtoMessage (line 980) | func (*EnvMapType) ProtoMessage() {}
    method ProtoReflect (line 982) | func (x *EnvMapType) ProtoReflect() protoreflect.Message {
    method Descriptor (line 995) | func (*EnvMapType) Descriptor() ([]byte, []int) {
    method GetKey (line 999) | func (x *EnvMapType) GetKey() *EnvType {
    method GetValue (line 1006) | func (x *EnvMapType) GetValue() *EnvType {
  type EnvVarOption (line 1016) | type EnvVarOption struct
    method Reset (line 1032) | func (x *EnvVarOption) Reset() {
    method String (line 1041) | func (x *EnvVarOption) String() string {
    method ProtoMessage (line 1045) | func (*EnvVarOption) ProtoMessage() {}
    method ProtoReflect (line 1047) | func (x *EnvVarOption) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1060) | func (*EnvVarOption) Descriptor() ([]byte, []int) {
    method GetAlternate (line 1064) | func (x *EnvVarOption) GetAlternate() string {
    method GetDefault (line 1071) | func (x *EnvVarOption) GetDefault() string {
    method GetRequired (line 1078) | func (x *EnvVarOption) GetRequired() bool {
    method GetIgnored (line 1085) | func (x *EnvVarOption) GetIgnored() bool {
  type MethodRule (line 1092) | type MethodRule struct
    method Reset (line 1108) | func (x *MethodRule) Reset() {
    method String (line 1117) | func (x *MethodRule) String() string {
    method ProtoMessage (line 1121) | func (*MethodRule) ProtoMessage() {}
    method ProtoReflect (line 1123) | func (x *MethodRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1136) | func (*MethodRule) Descriptor() ([]byte, []int) {
    method GetTimeout (line 1140) | func (x *MethodRule) GetTimeout() string {
    method GetResponse (line 1147) | func (x *MethodRule) GetResponse() string {
  type MessageRule (line 1155) | type MessageRule struct
    method Reset (line 1176) | func (x *MessageRule) Reset() {
    method String (line 1185) | func (x *MessageRule) String() string {
    method ProtoMessage (line 1189) | func (*MessageRule) ProtoMessage() {}
    method ProtoReflect (line 1191) | func (x *MessageRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1204) | func (*MessageRule) Descriptor() ([]byte, []int) {
    method GetDef (line 1208) | func (x *MessageRule) GetDef() []*VariableDefinition {
    method GetCustomResolver (line 1215) | func (x *MessageRule) GetCustomResolver() bool {
    method GetAlias (line 1222) | func (x *MessageRule) GetAlias() []string {
  type VariableDefinition (line 1230) | type VariableDefinition struct
    method Reset (line 1262) | func (x *VariableDefinition) Reset() {
    method String (line 1271) | func (x *VariableDefinition) String() string {
    method ProtoMessage (line 1275) | func (*VariableDefinition) ProtoMessage() {}
    method ProtoReflect (line 1277) | func (x *VariableDefinition) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1290) | func (*VariableDefinition) Descriptor() ([]byte, []int) {
    method GetName (line 1294) | func (x *VariableDefinition) GetName() string {
    method GetIf (line 1301) | func (x *VariableDefinition) GetIf() string {
    method GetAutobind (line 1308) | func (x *VariableDefinition) GetAutobind() bool {
    method GetExpr (line 1315) | func (m *VariableDefinition) GetExpr() isVariableDefinition_Expr {
    method GetBy (line 1322) | func (x *VariableDefinition) GetBy() string {
    method GetMap (line 1329) | func (x *VariableDefinition) GetMap() *MapExpr {
    method GetMessage (line 1336) | func (x *VariableDefinition) GetMessage() *MessageExpr {
    method GetCall (line 1343) | func (x *VariableDefinition) GetCall() *CallExpr {
    method GetValidation (line 1350) | func (x *VariableDefinition) GetValidation() *ValidationExpr {
    method GetEnum (line 1357) | func (x *VariableDefinition) GetEnum() *EnumExpr {
    method GetSwitch (line 1364) | func (x *VariableDefinition) GetSwitch() *SwitchExpr {
  type isVariableDefinition_Expr (line 1371) | type isVariableDefinition_Expr interface
  type VariableDefinition_By (line 1375) | type VariableDefinition_By struct
    method isVariableDefinition_Expr (line 1410) | func (*VariableDefinition_By) isVariableDefinition_Expr() {}
  type VariableDefinition_Map (line 1380) | type VariableDefinition_Map struct
    method isVariableDefinition_Expr (line 1412) | func (*VariableDefinition_Map) isVariableDefinition_Expr() {}
  type VariableDefinition_Message (line 1385) | type VariableDefinition_Message struct
    method isVariableDefinition_Expr (line 1414) | func (*VariableDefinition_Message) isVariableDefinition_Expr() {}
  type VariableDefinition_Call (line 1390) | type VariableDefinition_Call struct
    method isVariableDefinition_Expr (line 1416) | func (*VariableDefinition_Call) isVariableDefinition_Expr() {}
  type VariableDefinition_Validation (line 1395) | type VariableDefinition_Validation struct
    method isVariableDefinition_Expr (line 1418) | func (*VariableDefinition_Validation) isVariableDefinition_Expr() {}
  type VariableDefinition_Enum (line 1400) | type VariableDefinition_Enum struct
    method isVariableDefinition_Expr (line 1420) | func (*VariableDefinition_Enum) isVariableDefinition_Expr() {}
  type VariableDefinition_Switch (line 1405) | type VariableDefinition_Switch struct
    method isVariableDefinition_Expr (line 1422) | func (*VariableDefinition_Switch) isVariableDefinition_Expr() {}
  type MapExpr (line 1425) | type MapExpr struct
    method Reset (line 1443) | func (x *MapExpr) Reset() {
    method String (line 1452) | func (x *MapExpr) String() string {
    method ProtoMessage (line 1456) | func (*MapExpr) ProtoMessage() {}
    method ProtoReflect (line 1458) | func (x *MapExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1471) | func (*MapExpr) Descriptor() ([]byte, []int) {
    method GetIterator (line 1475) | func (x *MapExpr) GetIterator() *Iterator {
    method GetExpr (line 1482) | func (m *MapExpr) GetExpr() isMapExpr_Expr {
    method GetBy (line 1489) | func (x *MapExpr) GetBy() string {
    method GetMessage (line 1496) | func (x *MapExpr) GetMessage() *MessageExpr {
    method GetEnum (line 1503) | func (x *MapExpr) GetEnum() *EnumExpr {
  type isMapExpr_Expr (line 1510) | type isMapExpr_Expr interface
  type MapExpr_By (line 1514) | type MapExpr_By struct
    method isMapExpr_Expr (line 1532) | func (*MapExpr_By) isMapExpr_Expr() {}
  type MapExpr_Message (line 1520) | type MapExpr_Message struct
    method isMapExpr_Expr (line 1534) | func (*MapExpr_Message) isMapExpr_Expr() {}
  type MapExpr_Enum (line 1526) | type MapExpr_Enum struct
    method isMapExpr_Expr (line 1536) | func (*MapExpr_Enum) isMapExpr_Expr() {}
  type Iterator (line 1539) | type Iterator struct
    method Reset (line 1551) | func (x *Iterator) Reset() {
    method String (line 1560) | func (x *Iterator) String() string {
    method ProtoMessage (line 1564) | func (*Iterator) ProtoMessage() {}
    method ProtoReflect (line 1566) | func (x *Iterator) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1579) | func (*Iterator) Descriptor() ([]byte, []int) {
    method GetName (line 1583) | func (x *Iterator) GetName() string {
    method GetSrc (line 1590) | func (x *Iterator) GetSrc() string {
  type MessageExpr (line 1598) | type MessageExpr struct
    method Reset (line 1610) | func (x *MessageExpr) Reset() {
    method String (line 1619) | func (x *MessageExpr) String() string {
    method ProtoMessage (line 1623) | func (*MessageExpr) ProtoMessage() {}
    method ProtoReflect (line 1625) | func (x *MessageExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1638) | func (*MessageExpr) Descriptor() ([]byte, []int) {
    method GetName (line 1642) | func (x *MessageExpr) GetName() string {
    method GetArgs (line 1649) | func (x *MessageExpr) GetArgs() []*Argument {
  type EnumExpr (line 1657) | type EnumExpr struct
    method Reset (line 1669) | func (x *EnumExpr) Reset() {
    method String (line 1678) | func (x *EnumExpr) String() string {
    method ProtoMessage (line 1682) | func (*EnumExpr) ProtoMessage() {}
    method ProtoReflect (line 1684) | func (x *EnumExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1697) | func (*EnumExpr) Descriptor() ([]byte, []int) {
    method GetName (line 1701) | func (x *EnumExpr) GetName() string {
    method GetBy (line 1708) | func (x *EnumExpr) GetBy() string {
  type CallExpr (line 1716) | type CallExpr struct
    method Reset (line 1742) | func (x *CallExpr) Reset() {
    method String (line 1751) | func (x *CallExpr) String() string {
    method ProtoMessage (line 1755) | func (*CallExpr) ProtoMessage() {}
    method ProtoReflect (line 1757) | func (x *CallExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1770) | func (*CallExpr) Descriptor() ([]byte, []int) {
    method GetMethod (line 1774) | func (x *CallExpr) GetMethod() string {
    method GetRequest (line 1781) | func (x *CallExpr) GetRequest() []*MethodRequest {
    method GetTimeout (line 1788) | func (x *CallExpr) GetTimeout() string {
    method GetRetry (line 1795) | func (x *CallExpr) GetRetry() *RetryPolicy {
    method GetError (line 1802) | func (x *CallExpr) GetError() []*GRPCError {
    method GetOption (line 1809) | func (x *CallExpr) GetOption() *GRPCCallOption {
    method GetMetadata (line 1816) | func (x *CallExpr) GetMetadata() string {
  type SwitchExpr (line 1831) | type SwitchExpr struct
    method Reset (line 1842) | func (x *SwitchExpr) Reset() {
    method String (line 1851) | func (x *SwitchExpr) String() string {
    method ProtoMessage (line 1855) | func (*SwitchExpr) ProtoMessage() {}
    method ProtoReflect (line 1857) | func (x *SwitchExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1870) | func (*SwitchExpr) Descriptor() ([]byte, []int) {
    method GetCase (line 1874) | func (x *SwitchExpr) GetCase() []*SwitchCaseExpr {
    method GetDefault (line 1881) | func (x *SwitchExpr) GetDefault() *SwitchDefaultExpr {
  type SwitchCaseExpr (line 1889) | type SwitchCaseExpr struct
    method Reset (line 1907) | func (x *SwitchCaseExpr) Reset() {
    method String (line 1916) | func (x *SwitchCaseExpr) String() string {
    method ProtoMessage (line 1920) | func (*SwitchCaseExpr) ProtoMessage() {}
    method ProtoReflect (line 1922) | func (x *SwitchCaseExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1935) | func (*SwitchCaseExpr) Descriptor() ([]byte, []int) {
    method GetIf (line 1939) | func (x *SwitchCaseExpr) GetIf() string {
    method GetDef (line 1946) | func (x *SwitchCaseExpr) GetDef() []*VariableDefinition {
    method GetExpr (line 1953) | func (m *SwitchCaseExpr) GetExpr() isSwitchCaseExpr_Expr {
    method GetBy (line 1960) | func (x *SwitchCaseExpr) GetBy() string {
  type isSwitchCaseExpr_Expr (line 1967) | type isSwitchCaseExpr_Expr interface
  type SwitchCaseExpr_By (line 1971) | type SwitchCaseExpr_By struct
    method isSwitchCaseExpr_Expr (line 1976) | func (*SwitchCaseExpr_By) isSwitchCaseExpr_Expr() {}
  type SwitchDefaultExpr (line 1979) | type SwitchDefaultExpr struct
    method Reset (line 1994) | func (x *SwitchDefaultExpr) Reset() {
    method String (line 2003) | func (x *SwitchDefaultExpr) String() string {
    method ProtoMessage (line 2007) | func (*SwitchDefaultExpr) ProtoMessage() {}
    method ProtoReflect (line 2009) | func (x *SwitchDefaultExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2022) | func (*SwitchDefaultExpr) Descriptor() ([]byte, []int) {
    method GetDef (line 2026) | func (x *SwitchDefaultExpr) GetDef() []*VariableDefinition {
    method GetExpr (line 2033) | func (m *SwitchDefaultExpr) GetExpr() isSwitchDefaultExpr_Expr {
    method GetBy (line 2040) | func (x *SwitchDefaultExpr) GetBy() string {
  type isSwitchDefaultExpr_Expr (line 2047) | type isSwitchDefaultExpr_Expr interface
  type SwitchDefaultExpr_By (line 2051) | type SwitchDefaultExpr_By struct
    method isSwitchDefaultExpr_Expr (line 2056) | func (*SwitchDefaultExpr_By) isSwitchDefaultExpr_Expr() {}
  type GRPCError (line 2059) | type GRPCError struct
    method Reset (line 2093) | func (x *GRPCError) Reset() {
    method String (line 2102) | func (x *GRPCError) String() string {
    method ProtoMessage (line 2106) | func (*GRPCError) ProtoMessage() {}
    method ProtoReflect (line 2108) | func (x *GRPCError) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2121) | func (*GRPCError) Descriptor() ([]byte, []int) {
    method GetDef (line 2125) | func (x *GRPCError) GetDef() []*VariableDefinition {
    method GetIf (line 2132) | func (x *GRPCError) GetIf() string {
    method GetCode (line 2139) | func (x *GRPCError) GetCode() code.Code {
    method GetMessage (line 2146) | func (x *GRPCError) GetMessage() string {
    method GetDetails (line 2153) | func (x *GRPCError) GetDetails() []*GRPCErrorDetail {
    method GetIgnore (line 2160) | func (x *GRPCError) GetIgnore() bool {
    method GetIgnoreAndResponse (line 2167) | func (x *GRPCError) GetIgnoreAndResponse() string {
    method GetLogLevel (line 2174) | func (x *GRPCError) GetLogLevel() GRPCError_LogLevel {
  type GRPCErrorDetail (line 2181) | type GRPCErrorDetail struct
    method Reset (line 2216) | func (x *GRPCErrorDetail) Reset() {
    method String (line 2225) | func (x *GRPCErrorDetail) String() string {
    method ProtoMessage (line 2229) | func (*GRPCErrorDetail) ProtoMessage() {}
    method ProtoReflect (line 2231) | func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2244) | func (*GRPCErrorDetail) Descriptor() ([]byte, []int) {
    method GetIf (line 2248) | func (x *GRPCErrorDetail) GetIf() string {
    method GetDef (line 2255) | func (x *GRPCErrorDetail) GetDef() []*VariableDefinition {
    method GetMessage (line 2262) | func (x *GRPCErrorDetail) GetMessage() []*MessageExpr {
    method GetErrorInfo (line 2269) | func (x *GRPCErrorDetail) GetErrorInfo() []*errdetails.ErrorInfo {
    method GetRetryInfo (line 2276) | func (x *GRPCErrorDetail) GetRetryInfo() []*errdetails.RetryInfo {
    method GetDebugInfo (line 2283) | func (x *GRPCErrorDetail) GetDebugInfo() []*errdetails.DebugInfo {
    method GetQuotaFailure (line 2290) | func (x *GRPCErrorDetail) GetQuotaFailure() []*errdetails.QuotaFailure {
    method GetPreconditionFailure (line 2297) | func (x *GRPCErrorDetail) GetPreconditionFailure() []*errdetails.Preco...
    method GetBadRequest (line 2304) | func (x *GRPCErrorDetail) GetBadRequest() []*errdetails.BadRequest {
    method GetRequestInfo (line 2311) | func (x *GRPCErrorDetail) GetRequestInfo() []*errdetails.RequestInfo {
    method GetResourceInfo (line 2318) | func (x *GRPCErrorDetail) GetResourceInfo() []*errdetails.ResourceInfo {
    method GetHelp (line 2325) | func (x *GRPCErrorDetail) GetHelp() []*errdetails.Help {
    method GetLocalizedMessage (line 2332) | func (x *GRPCErrorDetail) GetLocalizedMessage() []*errdetails.Localize...
    method GetBy (line 2339) | func (x *GRPCErrorDetail) GetBy() []string {
  type GRPCCallOption (line 2347) | type GRPCCallOption struct
    method Reset (line 2395) | func (x *GRPCCallOption) Reset() {
    method String (line 2404) | func (x *GRPCCallOption) String() string {
    method ProtoMessage (line 2408) | func (*GRPCCallOption) ProtoMessage() {}
    method ProtoReflect (line 2410) | func (x *GRPCCallOption) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2423) | func (*GRPCCallOption) Descriptor() ([]byte, []int) {
    method GetContentSubtype (line 2427) | func (x *GRPCCallOption) GetContentSubtype() string {
    method GetHeader (line 2434) | func (x *GRPCCallOption) GetHeader() string {
    method GetMaxCallRecvMsgSize (line 2441) | func (x *GRPCCallOption) GetMaxCallRecvMsgSize() int64 {
    method GetMaxCallSendMsgSize (line 2448) | func (x *GRPCCallOption) GetMaxCallSendMsgSize() int64 {
    method GetStaticMethod (line 2455) | func (x *GRPCCallOption) GetStaticMethod() bool {
    method GetTrailer (line 2462) | func (x *GRPCCallOption) GetTrailer() string {
    method GetWaitForReady (line 2469) | func (x *GRPCCallOption) GetWaitForReady() bool {
  type ValidationExpr (line 2477) | type ValidationExpr struct
    method Reset (line 2490) | func (x *ValidationExpr) Reset() {
    method String (line 2499) | func (x *ValidationExpr) String() string {
    method ProtoMessage (line 2503) | func (*ValidationExpr) ProtoMessage() {}
    method ProtoReflect (line 2505) | func (x *ValidationExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2518) | func (*ValidationExpr) Descriptor() ([]byte, []int) {
    method GetName (line 2522) | func (x *ValidationExpr) GetName() string {
    method GetError (line 2529) | func (x *ValidationExpr) GetError() *GRPCError {
  type RetryPolicy (line 2537) | type RetryPolicy struct
    method Reset (line 2553) | func (x *RetryPolicy) Reset() {
    method String (line 2562) | func (x *RetryPolicy) String() string {
    method ProtoMessage (line 2566) | func (*RetryPolicy) ProtoMessage() {}
    method ProtoReflect (line 2568) | func (x *RetryPolicy) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2581) | func (*RetryPolicy) Descriptor() ([]byte, []int) {
    method GetPolicy (line 2585) | func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy {
    method GetConstant (line 2592) | func (x *RetryPolicy) GetConstant() *RetryPolicyConstant {
    method GetExponential (line 2599) | func (x *RetryPolicy) GetExponential() *RetryPolicyExponential {
    method GetIf (line 2606) | func (x *RetryPolicy) GetIf() string {
  type isRetryPolicy_Policy (line 2613) | type isRetryPolicy_Policy interface
  type RetryPolicy_Constant (line 2617) | type RetryPolicy_Constant struct
    method isRetryPolicy_Policy (line 2630) | func (*RetryPolicy_Constant) isRetryPolicy_Policy() {}
  type RetryPolicy_Exponential (line 2622) | type RetryPolicy_Exponential struct
    method isRetryPolicy_Policy (line 2632) | func (*RetryPolicy_Exponential) isRetryPolicy_Policy() {}
  type RetryPolicyConstant (line 2635) | type RetryPolicyConstant struct
    method Reset (line 2646) | func (x *RetryPolicyConstant) Reset() {
    method String (line 2655) | func (x *RetryPolicyConstant) String() string {
    method ProtoMessage (line 2659) | func (*RetryPolicyConstant) ProtoMessage() {}
    method ProtoReflect (line 2661) | func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2674) | func (*RetryPolicyConstant) Descriptor() ([]byte, []int) {
    method GetInterval (line 2678) | func (x *RetryPolicyConstant) GetInterval() string {
    method GetMaxRetries (line 2685) | func (x *RetryPolicyConstant) GetMaxRetries() uint64 {
  type RetryPolicyExponential (line 2693) | type RetryPolicyExponential struct
    method Reset (line 2710) | func (x *RetryPolicyExponential) Reset() {
    method String (line 2719) | func (x *RetryPolicyExponential) String() string {
    method ProtoMessage (line 2723) | func (*RetryPolicyExponential) ProtoMessage() {}
    method ProtoReflect (line 2725) | func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2738) | func (*RetryPolicyExponential) Descriptor() ([]byte, []int) {
    method GetInitialInterval (line 2742) | func (x *RetryPolicyExponential) GetInitialInterval() string {
    method GetRandomizationFactor (line 2749) | func (x *RetryPolicyExponential) GetRandomizationFactor() float64 {
    method GetMultiplier (line 2756) | func (x *RetryPolicyExponential) GetMultiplier() float64 {
    method GetMaxInterval (line 2763) | func (x *RetryPolicyExponential) GetMaxInterval() string {
    method GetMaxRetries (line 2770) | func (x *RetryPolicyExponential) GetMaxRetries() uint64 {
  type MethodRequest (line 2778) | type MethodRequest struct
    method Reset (line 2797) | func (x *MethodRequest) Reset() {
    method String (line 2806) | func (x *MethodRequest) String() string {
    method ProtoMessage (line 2810) | func (*MethodRequest) ProtoMessage() {}
    method ProtoReflect (line 2812) | func (x *MethodRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2825) | func (*MethodRequest) Descriptor() ([]byte, []int) {
    method GetField (line 2829) | func (x *MethodRequest) GetField() string {
    method GetBy (line 2836) | func (x *MethodRequest) GetBy() string {
    method GetIf (line 2843) | func (x *MethodRequest) GetIf() string {
  type MethodResponse (line 2851) | type MethodResponse struct
    method Reset (line 2867) | func (x *MethodResponse) Reset() {
    method String (line 2876) | func (x *MethodResponse) String() string {
    method ProtoMessage (line 2880) | func (*MethodResponse) ProtoMessage() {}
    method ProtoReflect (line 2882) | func (x *MethodResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2895) | func (*MethodResponse) Descriptor() ([]byte, []int) {
    method GetName (line 2899) | func (x *MethodResponse) GetName() string {
    method GetField (line 2906) | func (x *MethodResponse) GetField() string {
    method GetAutobind (line 2913) | func (x *MethodResponse) GetAutobind() bool {
  type Argument (line 2921) | type Argument struct
    method Reset (line 2939) | func (x *Argument) Reset() {
    method String (line 2948) | func (x *Argument) String() string {
    method ProtoMessage (line 2952) | func (*Argument) ProtoMessage() {}
    method ProtoReflect (line 2954) | func (x *Argument) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2967) | func (*Argument) Descriptor() ([]byte, []int) {
    method GetName (line 2971) | func (x *Argument) GetName() string {
    method GetBy (line 2978) | func (x *Argument) GetBy() string {
    method GetInline (line 2985) | func (x *Argument) GetInline() string {
  type FieldRule (line 2993) | type FieldRule struct
    method Reset (line 3015) | func (x *FieldRule) Reset() {
    method String (line 3024) | func (x *FieldRule) String() string {
    method ProtoMessage (line 3028) | func (*FieldRule) ProtoMessage() {}
    method ProtoReflect (line 3030) | func (x *FieldRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3043) | func (*FieldRule) Descriptor() ([]byte, []int) {
    method GetCustomResolver (line 3047) | func (x *FieldRule) GetCustomResolver() bool {
    method GetBy (line 3054) | func (x *FieldRule) GetBy() string {
    method GetAlias (line 3061) | func (x *FieldRule) GetAlias() string {
    method GetOneof (line 3068) | func (x *FieldRule) GetOneof() *FieldOneof {
    method GetEnv (line 3075) | func (x *FieldRule) GetEnv() *EnvVarOption {
  type FieldOneof (line 3084) | type FieldOneof struct
    method Reset (line 3104) | func (x *FieldOneof) Reset() {
    method String (line 3113) | func (x *FieldOneof) String() string {
    method ProtoMessage (line 3117) | func (*FieldOneof) ProtoMessage() {}
    method ProtoReflect (line 3119) | func (x *FieldOneof) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3132) | func (*FieldOneof) Descriptor() ([]byte, []int) {
    method GetCond (line 3136) | func (m *FieldOneof) GetCond() isFieldOneof_Cond {
    method GetIf (line 3143) | func (x *FieldOneof) GetIf() string {
    method GetDefault (line 3150) | func (x *FieldOneof) GetDefault() bool {
    method GetDef (line 3157) | func (x *FieldOneof) GetDef() []*VariableDefinition {
    method GetBy (line 3164) | func (x *FieldOneof) GetBy() string {
  type isFieldOneof_Cond (line 3171) | type isFieldOneof_Cond interface
  type FieldOneof_If (line 3175) | type FieldOneof_If struct
    method isFieldOneof_Cond (line 3189) | func (*FieldOneof_If) isFieldOneof_Cond() {}
  type FieldOneof_Default (line 3183) | type FieldOneof_Default struct
    method isFieldOneof_Cond (line 3191) | func (*FieldOneof_Default) isFieldOneof_Cond() {}
  type CELPlugin (line 3194) | type CELPlugin struct
    method Reset (line 3202) | func (x *CELPlugin) Reset() {
    method String (line 3211) | func (x *CELPlugin) String() string {
    method ProtoMessage (line 3215) | func (*CELPlugin) ProtoMessage() {}
    method ProtoReflect (line 3217) | func (x *CELPlugin) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3230) | func (*CELPlugin) Descriptor() ([]byte, []int) {
    method GetExport (line 3234) | func (x *CELPlugin) GetExport() []*CELPluginExport {
  type CELPluginExport (line 3242) | type CELPluginExport struct
    method Reset (line 3261) | func (x *CELPluginExport) Reset() {
    method String (line 3270) | func (x *CELPluginExport) String() string {
    method ProtoMessage (line 3274) | func (*CELPluginExport) ProtoMessage() {}
    method ProtoReflect (line 3276) | func (x *CELPluginExport) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3289) | func (*CELPluginExport) Descriptor() ([]byte, []int) {
    method GetName (line 3293) | func (x *CELPluginExport) GetName() string {
    method GetDesc (line 3300) | func (x *CELPluginExport) GetDesc() string {
    method GetTypes (line 3307) | func (x *CELPluginExport) GetTypes() []*CELReceiverType {
    method GetFunctions (line 3314) | func (x *CELPluginExport) GetFunctions() []*CELFunction {
    method GetVariables (line 3321) | func (x *CELPluginExport) GetVariables() []*CELVariable {
    method GetCapability (line 3328) | func (x *CELPluginExport) GetCapability() *CELPluginCapability {
  type CELPluginCapability (line 3336) | type CELPluginCapability struct
    method Reset (line 3349) | func (x *CELPluginCapability) Reset() {
    method String (line 3358) | func (x *CELPluginCapability) String() string {
    method ProtoMessage (line 3362) | func (*CELPluginCapability) ProtoMessage() {}
    method ProtoReflect (line 3364) | func (x *CELPluginCapability) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3377) | func (*CELPluginCapability) Descriptor() ([]byte, []int) {
    method GetEnv (line 3381) | func (x *CELPluginCapability) GetEnv() *CELPluginEnvCapability {
    method GetFileSystem (line 3388) | func (x *CELPluginCapability) GetFileSystem() *CELPluginFileSystemCapa...
    method GetNetwork (line 3395) | func (x *CELPluginCapability) GetNetwork() *CELPluginNetworkCapability {
  type CELPluginEnvCapability (line 3403) | type CELPluginEnvCapability struct
    method Reset (line 3414) | func (x *CELPluginEnvCapability) Reset() {
    method String (line 3423) | func (x *CELPluginEnvCapability) String() string {
    method ProtoMessage (line 3427) | func (*CELPluginEnvCapability) ProtoMessage() {}
    method ProtoReflect (line 3429) | func (x *CELPluginEnvCapability) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3442) | func (*CELPluginEnvCapability) Descriptor() ([]byte, []int) {
    method GetAll (line 3446) | func (x *CELPluginEnvCapability) GetAll() bool {
    method GetNames (line 3453) | func (x *CELPluginEnvCapability) GetNames() []string {
  type CELPluginFileSystemCapability (line 3461) | type CELPluginFileSystemCapability struct
    method Reset (line 3471) | func (x *CELPluginFileSystemCapability) Reset() {
    method String (line 3480) | func (x *CELPluginFileSystemCapability) String() string {
    method ProtoMessage (line 3484) | func (*CELPluginFileSystemCapability) ProtoMessage() {}
    method ProtoReflect (line 3486) | func (x *CELPluginFileSystemCapability) ProtoReflect() protoreflect.Me...
    method Descriptor (line 3499) | func (*CELPluginFileSystemCapability) Descriptor() ([]byte, []int) {
    method GetMountPath (line 3503) | func (x *CELPluginFileSystemCapability) GetMountPath() string {
  type CELPluginNetworkCapability (line 3512) | type CELPluginNetworkCapability struct
    method Reset (line 3518) | func (x *CELPluginNetworkCapability) Reset() {
    method String (line 3527) | func (x *CELPluginNetworkCapability) String() string {
    method ProtoMessage (line 3531) | func (*CELPluginNetworkCapability) ProtoMessage() {}
    method ProtoReflect (line 3533) | func (x *CELPluginNetworkCapability) ProtoReflect() protoreflect.Messa...
    method Descriptor (line 3546) | func (*CELPluginNetworkCapability) Descriptor() ([]byte, []int) {
  type CELFunction (line 3551) | type CELFunction struct
    method Reset (line 3567) | func (x *CELFunction) Reset() {
    method String (line 3576) | func (x *CELFunction) String() string {
    method ProtoMessage (line 3580) | func (*CELFunction) ProtoMessage() {}
    method ProtoReflect (line 3582) | func (x *CELFunction) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3595) | func (*CELFunction) Descriptor() ([]byte, []int) {
    method GetName (line 3599) | func (x *CELFunction) GetName() string {
    method GetDesc (line 3606) | func (x *CELFunction) GetDesc() string {
    method GetArgs (line 3613) | func (x *CELFunction) GetArgs() []*CELFunctionArgument {
    method GetReturn (line 3620) | func (x *CELFunction) GetReturn() *CELType {
  type CELReceiverType (line 3628) | type CELReceiverType struct
    method Reset (line 3642) | func (x *CELReceiverType) Reset() {
    method String (line 3651) | func (x *CELReceiverType) String() string {
    method ProtoMessage (line 3655) | func (*CELReceiverType) ProtoMessage() {}
    method ProtoReflect (line 3657) | func (x *CELReceiverType) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3670) | func (*CELReceiverType) Descriptor() ([]byte, []int) {
    method GetName (line 3674) | func (x *CELReceiverType) GetName() string {
    method GetDesc (line 3681) | func (x *CELReceiverType) GetDesc() string {
    method GetMethods (line 3688) | func (x *CELReceiverType) GetMethods() []*CELFunction {
  type CELFunctionArgument (line 3696) | type CELFunctionArgument struct
    method Reset (line 3710) | func (x *CELFunctionArgument) Reset() {
    method String (line 3719) | func (x *CELFunctionArgument) String() string {
    method ProtoMessage (line 3723) | func (*CELFunctionArgument) ProtoMessage() {}
    method ProtoReflect (line 3725) | func (x *CELFunctionArgument) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3738) | func (*CELFunctionArgument) Descriptor() ([]byte, []int) {
    method GetName (line 3742) | func (x *CELFunctionArgument) GetName() string {
    method GetDesc (line 3749) | func (x *CELFunctionArgument) GetDesc() string {
    method GetType (line 3756) | func (x *CELFunctionArgument) GetType() *CELType {
  type CELType (line 3764) | type CELType struct
    method Reset (line 3779) | func (x *CELType) Reset() {
    method String (line 3788) | func (x *CELType) String() string {
    method ProtoMessage (line 3792) | func (*CELType) ProtoMessage() {}
    method ProtoReflect (line 3794) | func (x *CELType) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3807) | func (*CELType) Descriptor() ([]byte, []int) {
    method GetType (line 3811) | func (m *CELType) GetType() isCELType_Type {
    method GetKind (line 3818) | func (x *CELType) GetKind() TypeKind {
    method GetRepeated (line 3825) | func (x *CELType) GetRepeated() *CELType {
    method GetMap (line 3832) | func (x *CELType) GetMap() *CELMapType {
    method GetMessage (line 3839) | func (x *CELType) GetMessage() string {
    method GetEnum (line 3846) | func (x *CELType) GetEnum() string {
  type isCELType_Type (line 3853) | type isCELType_Type interface
  type CELType_Kind (line 3857) | type CELType_Kind struct
    method isCELType_Type (line 3882) | func (*CELType_Kind) isCELType_Type() {}
  type CELType_Repeated (line 3862) | type CELType_Repeated struct
    method isCELType_Type (line 3884) | func (*CELType_Repeated) isCELType_Type() {}
  type CELType_Map (line 3867) | type CELType_Map struct
    method isCELType_Type (line 3886) | func (*CELType_Map) isCELType_Type() {}
  type CELType_Message (line 3872) | type CELType_Message struct
    method isCELType_Type (line 3888) | func (*CELType_Message) isCELType_Type() {}
  type CELType_Enum (line 3877) | type CELType_Enum struct
    method isCELType_Type (line 3890) | func (*CELType_Enum) isCELType_Type() {}
  type CELMapType (line 3893) | type CELMapType struct
    method Reset (line 3904) | func (x *CELMapType) Reset() {
    method String (line 3913) | func (x *CELMapType) String() string {
    method ProtoMessage (line 3917) | func (*CELMapType) ProtoMessage() {}
    method ProtoReflect (line 3919) | func (x *CELMapType) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3932) | func (*CELMapType) Descriptor() ([]byte, []int) {
    method GetKey (line 3936) | func (x *CELMapType) GetKey() *CELType {
    method GetValue (line 3943) | func (x *CELMapType) GetValue() *CELType {
  type CELVariable (line 3951) | type CELVariable struct
    method Reset (line 3965) | func (x *CELVariable) Reset() {
    method String (line 3974) | func (x *CELVariable) String() string {
    method ProtoMessage (line 3978) | func (*CELVariable) ProtoMessage() {}
    method ProtoReflect (line 3980) | func (x *CELVariable) ProtoReflect() protoreflect.Message {
    method Descriptor (line 3993) | func (*CELVariable) Descriptor() ([]byte, []int) {
    method GetName (line 3997) | func (x *CELVariable) GetName() string {
    method GetDesc (line 4004) | func (x *CELVariable) GetDesc() string {
    method GetType (line 4011) | func (x *CELVariable) GetType() *CELType {
  function file_grpc_federation_federation_proto_rawDescGZIP (line 4740) | func file_grpc_federation_federation_proto_rawDescGZIP() []byte {
  function init (line 4920) | func init() { file_grpc_federation_federation_proto_init() }
  function file_grpc_federation_federation_proto_init (line 4921) | func file_grpc_federation_federation_proto_init() {

FILE: _examples/04_timeout/main_test.go
  constant bufSize (line 29) | bufSize = 1024
  type clientConfig (line 38) | type clientConfig struct
    method Post_PostServiceClient (line 40) | func (c *clientConfig) Post_PostServiceClient(cfg federation.Federatio...
  type PostServer (line 44) | type PostServer struct
    method GetPost (line 48) | func (s *PostServer) GetPost(ctx context.Context, req *post.GetPostReq...
    method UpdatePost (line 60) | func (s *PostServer) UpdatePost(ctx context.Context, req *post.UpdateP...
    method DeletePost (line 66) | func (s *PostServer) DeletePost(ctx context.Context, req *post.DeleteP...
  function dialer (line 71) | func dialer(ctx context.Context, address string) (net.Conn, error) {
  function TestFederation (line 75) | func TestFederation(t *testing.T) {

FILE: _examples/04_timeout/post/post.pb.go
  constant _ (line 18) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 20) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type GetPostRequest (line 23) | type GetPostRequest struct
    method Reset (line 31) | func (x *GetPostRequest) Reset() {
    method String (line 40) | func (x *GetPostRequest) String() string {
    method ProtoMessage (line 44) | func (*GetPostRequest) ProtoMessage() {}
    method ProtoReflect (line 46) | func (x *GetPostRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 59) | func (*GetPostRequest) Descriptor() ([]byte, []int) {
    method GetId (line 63) | func (x *GetPostRequest) GetId() string {
  type GetPostResponse (line 70) | type GetPostResponse struct
    method Reset (line 78) | func (x *GetPostResponse) Reset() {
    method String (line 87) | func (x *GetPostResponse) String() string {
    method ProtoMessage (line 91) | func (*GetPostResponse) ProtoMessage() {}
    method ProtoReflect (line 93) | func (x *GetPostResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 106) | func (*GetPostResponse) Descriptor() ([]byte, []int) {
    method GetPost (line 110) | func (x *GetPostResponse) GetPost() *Post {
  type Post (line 117) | type Post struct
    method Reset (line 128) | func (x *Post) Reset() {
    method String (line 137) | func (x *Post) String() string {
    method ProtoMessage (line 141) | func (*Post) ProtoMessage() {}
    method ProtoReflect (line 143) | func (x *Post) ProtoReflect() protoreflect.Message {
    method Descriptor (line 156) | func (*Post) Descriptor() ([]byte, []int) {
    method GetId (line 160) | func (x *Post) GetId() string {
    method GetTitle (line 167) | func (x *Post) GetTitle() string {
    method GetContent (line 174) | func (x *Post) GetContent() string {
    method GetUserId (line 181) | func (x *Post) GetUserId() string {
  type UpdatePostRequest (line 188) | type UpdatePostRequest struct
    method Reset (line 196) | func (x *UpdatePostRequest) Reset() {
    method String (line 205) | func (x *UpdatePostRequest) String() string {
    method ProtoMessage (line 209) | func (*UpdatePostRequest) ProtoMessage() {}
    method ProtoReflect (line 211) | func (x *UpdatePostRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 224) | func (*UpdatePostRequest) Descriptor() ([]byte, []int) {
    method GetId (line 228) | func (x *UpdatePostRequest) GetId() string {
  type UpdatePostResponse (line 235) | type UpdatePostResponse struct
    method Reset (line 241) | func (x *UpdatePostResponse) Reset() {
    method String (line 250) | func (x *UpdatePostResponse) String() string {
    method ProtoMessage (line 254) | func (*UpdatePostResponse) ProtoMessage() {}
    method ProtoReflect (line 256) | func (x *UpdatePostResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 269) | func (*UpdatePostResponse) Descriptor() ([]byte, []int) {
  type DeletePostRequest (line 273) | type DeletePostRequest struct
    method Reset (line 281) | func (x *DeletePostRequest) Reset() {
    method String (line 290) | func (x *DeletePostRequest) String() string {
    method ProtoMessage (line 294) | func (*DeletePostRequest) ProtoMessage() {}
    method ProtoReflect (line 296) | func (x *DeletePostRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 309) | func (*DeletePostRequest) Descriptor() ([]byte, []int) {
    method GetId (line 313) | func (x *DeletePostRequest) GetId() string {
  type DeletePostResponse (line 320) | type DeletePostResponse struct
    method Reset (line 326) | func (x *DeletePostResponse) Reset() {
    method String (line 335) | func (x *DeletePostResponse) String() string {
    method ProtoMessage (line 339) | func (*DeletePostResponse) ProtoMessage() {}
    method ProtoReflect (line 341) | func (x *DeletePostResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 354) | func (*DeletePostResponse) Descriptor() ([]byte, []int) {
  function file_post_post_proto_rawDescGZIP (line 408) | func file_post_post_proto_rawDescGZIP() []byte {
  function init (line 440) | func init() { file_post_post_proto_init() }
  function file_post_post_proto_init (line 441) | func file_post_post_proto_init() {

FILE: _examples/04_timeout/post/post_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  constant PostService_GetPost_FullMethodName (line 22) | PostService_GetPost_FullMethodName    = "/post.PostService/GetPost"
  constant PostService_UpdatePost_FullMethodName (line 23) | PostService_UpdatePost_FullMethodName = "/post.PostService/UpdatePost"
  constant PostService_DeletePost_FullMethodName (line 24) | PostService_DeletePost_FullMethodName = "/post.PostService/DeletePost"
  type PostServiceClient (line 30) | type PostServiceClient interface
  type postServiceClient (line 36) | type postServiceClient struct
    method GetPost (line 44) | func (c *postServiceClient) GetPost(ctx context.Context, in *GetPostRe...
    method UpdatePost (line 53) | func (c *postServiceClient) UpdatePost(ctx context.Context, in *Update...
    method DeletePost (line 62) | func (c *postServiceClient) DeletePost(ctx context.Context, in *Delete...
  function NewPostServiceClient (line 40) | func NewPostServiceClient(cc grpc.ClientConnInterface) PostServiceClient {
  type PostServiceServer (line 74) | type PostServiceServer interface
  type UnimplementedPostServiceServer (line 82) | type UnimplementedPostServiceServer struct
    method GetPost (line 85) | func (UnimplementedPostServiceServer) GetPost(context.Context, *GetPos...
    method UpdatePost (line 88) | func (UnimplementedPostServiceServer) UpdatePost(context.Context, *Upd...
    method DeletePost (line 91) | func (UnimplementedPostServiceServer) DeletePost(context.Context, *Del...
    method mustEmbedUnimplementedPostServiceServer (line 94) | func (UnimplementedPostServiceServer) mustEmbedUnimplementedPostServic...
  type UnsafePostServiceServer (line 99) | type UnsafePostServiceServer interface
  function RegisterPostServiceServer (line 103) | func RegisterPostServiceServer(s grpc.ServiceRegistrar, srv PostServiceS...
  function _PostService_GetPost_Handler (line 107) | func _PostService_GetPost_Handler(srv interface{}, ctx context.Context, ...
  function _PostService_UpdatePost_Handler (line 125) | func _PostService_UpdatePost_Handler(srv interface{}, ctx context.Contex...
  function _PostService_DeletePost_Handler (line 143) | func _PostService_DeletePost_Handler(srv interface{}, ctx context.Contex...

FILE: _examples/05_async/federation/federation.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type GetRequest (line 24) | type GetRequest struct
    method Reset (line 30) | func (x *GetRequest) Reset() {
    method String (line 39) | func (x *GetRequest) String() string {
    method ProtoMessage (line 43) | func (*GetRequest) ProtoMessage() {}
    method ProtoReflect (line 45) | func (x *GetRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 58) | func (*GetRequest) Descriptor() ([]byte, []int) {
  type GetResponse (line 62) | type GetResponse struct
    method Reset (line 71) | func (x *GetResponse) Reset() {
    method String (line 80) | func (x *GetResponse) String() string {
    method ProtoMessage (line 84) | func (*GetResponse) ProtoMessage() {}
    method ProtoReflect (line 86) | func (x *GetResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 99) | func (*GetResponse) Descriptor() ([]byte, []int) {
    method GetHname (line 103) | func (x *GetResponse) GetHname() string {
    method GetJname (line 110) | func (x *GetResponse) GetJname() string {
  type A (line 117) | type A struct
    method Reset (line 125) | func (x *A) Reset() {
    method String (line 134) | func (x *A) String() string {
    method ProtoMessage (line 138) | func (*A) ProtoMessage() {}
    method ProtoReflect (line 140) | func (x *A) ProtoReflect() protoreflect.Message {
    method Descriptor (line 153) | func (*A) Descriptor() ([]byte, []int) {
    method GetName (line 157) | func (x *A) GetName() string {
  type AA (line 164) | type AA struct
    method Reset (line 172) | func (x *AA) Reset() {
    method String (line 181) | func (x *AA) String() string {
    method ProtoMessage (line 185) | func (*AA) ProtoMessage() {}
    method ProtoReflect (line 187) | func (x *AA) ProtoReflect() protoreflect.Message {
    method Descriptor (line 200) | func (*AA) Descriptor() ([]byte, []int) {
    method GetName (line 204) | func (x *AA) GetName() string {
  type AB (line 211) | type AB struct
    method Reset (line 219) | func (x *AB) Reset() {
    method String (line 228) | func (x *AB) String() string {
    method ProtoMessage (line 232) | func (*AB) ProtoMessage() {}
    method ProtoReflect (line 234) | func (x *AB) ProtoReflect() protoreflect.Message {
    method Descriptor (line 247) | func (*AB) Descriptor() ([]byte, []int) {
    method GetName (line 251) | func (x *AB) GetName() string {
  type B (line 258) | type B struct
    method Reset (line 266) | func (x *B) Reset() {
    method String (line 275) | func (x *B) String() string {
    method ProtoMessage (line 279) | func (*B) ProtoMessage() {}
    method ProtoReflect (line 281) | func (x *B) ProtoReflect() protoreflect.Message {
    method Descriptor (line 294) | func (*B) Descriptor() ([]byte, []int) {
    method GetName (line 298) | func (x *B) GetName() string {
  type C (line 305) | type C struct
    method Reset (line 313) | func (x *C) Reset() {
    method String (line 322) | func (x *C) String() string {
    method ProtoMessage (line 326) | func (*C) ProtoMessage() {}
    method ProtoReflect (line 328) | func (x *C) ProtoReflect() protoreflect.Message {
    method Descriptor (line 341) | func (*C) Descriptor() ([]byte, []int) {
    method GetName (line 345) | func (x *C) GetName() string {
  type D (line 352) | type D struct
    method Reset (line 360) | func (x *D) Reset() {
    method String (line 369) | func (x *D) String() string {
    method ProtoMessage (line 373) | func (*D) ProtoMessage() {}
    method ProtoReflect (line 375) | func (x *D) ProtoReflect() protoreflect.Message {
    method Descriptor (line 388) | func (*D) Descriptor() ([]byte, []int) {
    method GetName (line 392) | func (x *D) GetName() string {
  type E (line 399) | type E struct
    method Reset (line 407) | func (x *E) Reset() {
    method String (line 416) | func (x *E) String() string {
    method ProtoMessage (line 420) | func (*E) ProtoMessage() {}
    method ProtoReflect (line 422) | func (x *E) ProtoReflect() protoreflect.Message {
    method Descriptor (line 435) | func (*E) Descriptor() ([]byte, []int) {
    method GetName (line 439) | func (x *E) GetName() string {
  type F (line 446) | type F struct
    method Reset (line 454) | func (x *F) Reset() {
    method String (line 463) | func (x *F) String() string {
    method ProtoMessage (line 467) | func (*F) ProtoMessage() {}
    method ProtoReflect (line 469) | func (x *F) ProtoReflect() protoreflect.Message {
    method Descriptor (line 482) | func (*F) Descriptor() ([]byte, []int) {
    method GetName (line 486) | func (x *F) GetName() string {
  type G (line 493) | type G struct
    method Reset (line 501) | func (x *G) Reset() {
    method String (line 510) | func (x *G) String() string {
    method ProtoMessage (line 514) | func (*G) ProtoMessage() {}
    method ProtoReflect (line 516) | func (x *G) ProtoReflect() protoreflect.Message {
    method Descriptor (line 529) | func (*G) Descriptor() ([]byte, []int) {
    method GetName (line 533) | func (x *G) GetName() string {
  type H (line 540) | type H struct
    method Reset (line 548) | func (x *H) Reset() {
    method String (line 557) | func (x *H) String() string {
    method ProtoMessage (line 561) | func (*H) ProtoMessage() {}
    method ProtoReflect (line 563) | func (x *H) ProtoReflect() protoreflect.Message {
    method Descriptor (line 576) | func (*H) Descriptor() ([]byte, []int) {
    method GetName (line 580) | func (x *H) GetName() string {
  type I (line 587) | type I struct
    method Reset (line 595) | func (x *I) Reset() {
    method String (line 604) | func (x *I) String() string {
    method ProtoMessage (line 608) | func (*I) ProtoMessage() {}
    method ProtoReflect (line 610) | func (x *I) ProtoReflect() protoreflect.Message {
    method Descriptor (line 623) | func (*I) Descriptor() ([]byte, []int) {
    method GetName (line 627) | func (x *I) GetName() string {
  type J (line 634) | type J struct
    method Reset (line 642) | func (x *J) Reset() {
    method String (line 651) | func (x *J) String() string {
    method ProtoMessage (line 655) | func (*J) ProtoMessage() {}
    method ProtoReflect (line 657) | func (x *J) ProtoReflect() protoreflect.Message {
    method Descriptor (line 670) | func (*J) Descriptor() ([]byte, []int) {
    method GetName (line 674) | func (x *J) GetName() string {
  function file_federation_federation_proto_rawDescGZIP (line 762) | func file_federation_federation_proto_rawDescGZIP() []byte {
  function init (line 796) | func init() { file_federation_federation_proto_init() }
  function file_federation_federation_proto_init (line 797) | func file_federation_federation_proto_init() {

FILE: _examples/05_async/federation/federation_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  constant FederationService_Get_FullMethodName (line 22) | FederationService_Get_FullMethodName = "/org.federation.FederationServic...
  type FederationServiceClient (line 28) | type FederationServiceClient interface
  type federationServiceClient (line 32) | type federationServiceClient struct
    method Get (line 40) | func (c *federationServiceClient) Get(ctx context.Context, in *GetRequ...
  function NewFederationServiceClient (line 36) | func NewFederationServiceClient(cc grpc.ClientConnInterface) FederationS...
  type FederationServiceServer (line 52) | type FederationServiceServer interface
  type UnimplementedFederationServiceServer (line 58) | type UnimplementedFederationServiceServer struct
    method Get (line 61) | func (UnimplementedFederationServiceServer) Get(context.Context, *GetR...
    method mustEmbedUnimplementedFederationServiceServer (line 64) | func (UnimplementedFederationServiceServer) mustEmbedUnimplementedFede...
  type UnsafeFederationServiceServer (line 69) | type UnsafeFederationServiceServer interface
  function RegisterFederationServiceServer (line 73) | func RegisterFederationServiceServer(s grpc.ServiceRegistrar, srv Federa...
  function _FederationService_Get_Handler (line 77) | func _FederationService_Get_Handler(srv interface{}, ctx context.Context...

FILE: _examples/05_async/federation/federation_grpc_federation.pb.go
  type FederationService_Org_Federation_AAVariable (line 26) | type FederationService_Org_Federation_AAVariable struct
  type FederationService_Org_Federation_AAArgument (line 30) | type FederationService_Org_Federation_AAArgument struct
  type FederationService_Org_Federation_AVariable (line 35) | type FederationService_Org_Federation_AVariable struct
  type FederationService_Org_Federation_AArgument (line 39) | type FederationService_Org_Federation_AArgument struct
  type FederationService_Org_Federation_ABVariable (line 44) | type FederationService_Org_Federation_ABVariable struct
  type FederationService_Org_Federation_ABArgument (line 48) | type FederationService_Org_Federation_ABArgument struct
  type FederationService_Org_Federation_BVariable (line 53) | type FederationService_Org_Federation_BVariable struct
  type FederationService_Org_Federation_BArgument (line 57) | type FederationService_Org_Federation_BArgument struct
  type FederationService_Org_Federation_CVariable (line 62) | type FederationService_Org_Federation_CVariable struct
  type FederationService_Org_Federation_CArgument (line 66) | type FederationService_Org_Federation_CArgument struct
  type FederationService_Org_Federation_DVariable (line 72) | type FederationService_Org_Federation_DVariable struct
  type FederationService_Org_Federation_DArgument (line 76) | type FederationService_Org_Federation_DArgument struct
  type FederationService_Org_Federation_EVariable (line 82) | type FederationService_Org_Federation_EVariable struct
  type FederationService_Org_Federation_EArgument (line 86) | type FederationService_Org_Federation_EArgument struct
  type FederationService_Org_Federation_FVariable (line 93) | type FederationService_Org_Federation_FVariable struct
  type FederationService_Org_Federation_FArgument (line 97) | type FederationService_Org_Federation_FArgument struct
  type FederationService_Org_Federation_GVariable (line 104) | type FederationService_Org_Federation_GVariable struct
  type FederationService_Org_Federation_GArgument (line 108) | type FederationService_Org_Federation_GArgument struct
  type FederationService_Org_Federation_GetResponseVariable (line 113) | type FederationService_Org_Federation_GetResponseVariable struct
  type FederationService_Org_Federation_GetResponseArgument (line 127) | type FederationService_Org_Federation_GetResponseArgument struct
  type FederationService_Org_Federation_HVariable (line 132) | type FederationService_Org_Federation_HVariable struct
  type FederationService_Org_Federation_HArgument (line 136) | type FederationService_Org_Federation_HArgument struct
  type FederationService_Org_Federation_IVariable (line 144) | type FederationService_Org_Federation_IVariable struct
  type FederationService_Org_Federation_IArgument (line 148) | type FederationService_Org_Federation_IArgument struct
  type FederationService_Org_Federation_JVariable (line 153) | type FederationService_Org_Federation_JVariable struct
  type FederationService_Org_Federation_JArgument (line 157) | type FederationService_Org_Federation_JArgument struct
  type FederationServiceConfig (line 163) | type FederationServiceConfig struct
  type FederationServiceClientFactory (line 172) | type FederationServiceClientFactory interface
  type FederationServiceClientConfig (line 177) | type FederationServiceClientConfig struct
  type FederationServiceDependentClientSet (line 184) | type FederationServiceDependentClientSet struct
  type FederationServiceResolver (line 188) | type FederationServiceResolver interface
  type FederationServiceCELPluginConfig (line 195) | type FederationServiceCELPluginConfig struct
  type FederationServiceUnimplementedResolver (line 203) | type FederationServiceUnimplementedResolver struct
  type FederationService (line 206) | type FederationService struct
    method cleanup (line 286) | func (s *FederationService) cleanup(ctx context.Context) {
    method Get (line 293) | func (s *FederationService) Get(ctx context.Context, req *GetRequest) ...
    method resolve_Org_Federation_A (line 319) | func (s *FederationService) resolve_Org_Federation_A(ctx context.Conte...
    method resolve_Org_Federation_AA (line 438) | func (s *FederationService) resolve_Org_Federation_AA(ctx context.Cont...
    method resolve_Org_Federation_AB (line 475) | func (s *FederationService) resolve_Org_Federation_AB(ctx context.Cont...
    method resolve_Org_Federation_B (line 512) | func (s *FederationService) resolve_Org_Federation_B(ctx context.Conte...
    method resolve_Org_Federation_C (line 549) | func (s *FederationService) resolve_Org_Federation_C(ctx context.Conte...
    method resolve_Org_Federation_D (line 586) | func (s *FederationService) resolve_Org_Federation_D(ctx context.Conte...
    method resolve_Org_Federation_E (line 623) | func (s *FederationService) resolve_Org_Federation_E(ctx context.Conte...
    method resolve_Org_Federation_F (line 660) | func (s *FederationService) resolve_Org_Federation_F(ctx context.Conte...
    method resolve_Org_Federation_G (line 697) | func (s *FederationService) resolve_Org_Federation_G(ctx context.Conte...
    method resolve_Org_Federation_GetResponse (line 734) | func (s *FederationService) resolve_Org_Federation_GetResponse(ctx con...
    method resolve_Org_Federation_H (line 1331) | func (s *FederationService) resolve_Org_Federation_H(ctx context.Conte...
    method resolve_Org_Federation_I (line 1368) | func (s *FederationService) resolve_Org_Federation_I(ctx context.Conte...
    method resolve_Org_Federation_J (line 1405) | func (s *FederationService) resolve_Org_Federation_J(ctx context.Conte...
    method logvalue_Org_Federation_A (line 1441) | func (s *FederationService) logvalue_Org_Federation_A(v *A) slog.Value {
    method logvalue_Org_Federation_AA (line 1453) | func (s *FederationService) logvalue_Org_Federation_AA(v *AA) slog.Val...
    method logvalue_Org_Federation_AAArgument (line 1465) | func (s *FederationService) logvalue_Org_Federation_AAArgument(v *Fede...
    method logvalue_Org_Federation_AArgument (line 1475) | func (s *FederationService) logvalue_Org_Federation_AArgument(v *Feder...
    method logvalue_Org_Federation_AB (line 1485) | func (s *FederationService) logvalue_Org_Federation_AB(v *AB) slog.Val...
    method logvalue_Org_Federation_ABArgument (line 1497) | func (s *FederationService) logvalue_Org_Federation_ABArgument(v *Fede...
    method logvalue_Org_Federation_B (line 1507) | func (s *FederationService) logvalue_Org_Federation_B(v *B) slog.Value {
    method logvalue_Org_Federation_BArgument (line 1519) | func (s *FederationService) logvalue_Org_Federation_BArgument(v *Feder...
    method logvalue_Org_Federation_C (line 1529) | func (s *FederationService) logvalue_Org_Federation_C(v *C) slog.Value {
    method logvalue_Org_Federation_CArgument (line 1541) | func (s *FederationService) logvalue_Org_Federation_CArgument(v *Feder...
    method logvalue_Org_Federation_D (line 1553) | func (s *FederationService) logvalue_Org_Federation_D(v *D) slog.Value {
    method logvalue_Org_Federation_DArgument (line 1565) | func (s *FederationService) logvalue_Org_Federation_DArgument(v *Feder...
    method logvalue_Org_Federation_E (line 1577) | func (s *FederationService) logvalue_Org_Federation_E(v *E) slog.Value {
    method logvalue_Org_Federation_EArgument (line 1589) | func (s *FederationService) logvalue_Org_Federation_EArgument(v *Feder...
    method logvalue_Org_Federation_F (line 1602) | func (s *FederationService) logvalue_Org_Federation_F(v *F) slog.Value {
    method logvalue_Org_Federation_FArgument (line 1614) | func (s *FederationService) logvalue_Org_Federation_FArgument(v *Feder...
    method logvalue_Org_Federation_G (line 1627) | func (s *FederationService) logvalue_Org_Federation_G(v *G) slog.Value {
    method logvalue_Org_Federation_GArgument (line 1639) | func (s *FederationService) logvalue_Org_Federation_GArgument(v *Feder...
    method logvalue_Org_Federation_GetResponse (line 1649) | func (s *FederationService) logvalue_Org_Federation_GetResponse(v *Get...
    method logvalue_Org_Federation_GetResponseArgument (line 1662) | func (s *FederationService) logvalue_Org_Federation_GetResponseArgumen...
    method logvalue_Org_Federation_H (line 1672) | func (s *FederationService) logvalue_Org_Federation_H(v *H) slog.Value {
    method logvalue_Org_Federation_HArgument (line 1684) | func (s *FederationService) logvalue_Org_Federation_HArgument(v *Feder...
    method logvalue_Org_Federation_I (line 1698) | func (s *FederationService) logvalue_Org_Federation_I(v *I) slog.Value {
    method logvalue_Org_Federation_IArgument (line 1710) | func (s *FederationService) logvalue_Org_Federation_IArgument(v *Feder...
    method logvalue_Org_Federation_J (line 1720) | func (s *FederationService) logvalue_Org_Federation_J(v *J) slog.Value {
    method logvalue_Org_Federation_JArgument (line 1732) | func (s *FederationService) logvalue_Org_Federation_JArgument(v *Feder...
  function NewFederationService (line 221) | func NewFederationService(cfg FederationServiceConfig) (*FederationServi...
  function CleanupFederationService (line 282) | func CleanupFederationService(ctx context.Context, svc *FederationServic...

FILE: _examples/05_async/grpc/federation/federation.pb.go
  constant _ (line 22) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 24) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type TypeKind (line 28) | type TypeKind
    method Enum (line 69) | func (x TypeKind) Enum() *TypeKind {
    method String (line 75) | func (x TypeKind) String() string {
    method Descriptor (line 79) | func (TypeKind) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 83) | func (TypeKind) Type() protoreflect.EnumType {
    method Number (line 87) | func (x TypeKind) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 92) | func (TypeKind) EnumDescriptor() ([]byte, []int) {
  constant TypeKind_UNKNOWN (line 32) | TypeKind_UNKNOWN TypeKind = 0
  constant TypeKind_STRING (line 34) | TypeKind_STRING TypeKind = 1
  constant TypeKind_BOOL (line 36) | TypeKind_BOOL TypeKind = 2
  constant TypeKind_INT64 (line 38) | TypeKind_INT64 TypeKind = 3
  constant TypeKind_UINT64 (line 40) | TypeKind_UINT64 TypeKind = 4
  constant TypeKind_DOUBLE (line 42) | TypeKind_DOUBLE TypeKind = 5
  constant TypeKind_DURATION (line 44) | TypeKind_DURATION TypeKind = 6
  type GRPCError_LogLevel (line 97) | type GRPCError_LogLevel
    method Enum (line 130) | func (x GRPCError_LogLevel) Enum() *GRPCError_LogLevel {
    method String (line 136) | func (x GRPCError_LogLevel) String() string {
    method Descriptor (line 140) | func (GRPCError_LogLevel) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 144) | func (GRPCError_LogLevel) Type() protoreflect.EnumType {
    method Number (line 148) | func (x GRPCError_LogLevel) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 153) | func (GRPCError_LogLevel) EnumDescriptor() ([]byte, []int) {
  constant GRPCError_UNKNOWN (line 101) | GRPCError_UNKNOWN GRPCError_LogLevel = 0
  constant GRPCError_DEBUG (line 103) | GRPCError_DEBUG GRPCError_LogLevel = 1
  constant GRPCError_INFO (line 105) | GRPCError_INFO GRPCError_LogLevel = 2
  constant GRPCError_WARN (line 107) | GRPCError_WARN GRPCError_LogLevel = 3
  constant GRPCError_ERROR (line 109) | GRPCError_ERROR GRPCError_LogLevel = 4
  type FileRule (line 157) | type FileRule struct
    method Reset (line 167) | func (x *FileRule) Reset() {
    method String (line 176) | func (x *FileRule) String() string {
    method ProtoMessage (line 180) | func (*FileRule) ProtoMessage() {}
    method ProtoReflect (line 182) | func (x *FileRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 195) | func (*FileRule) Descriptor() ([]byte, []int) {
    method GetPlugin (line 199) | func (x *FileRule) GetPlugin() *CELPlugin {
    method GetImport (line 206) | func (x *FileRule) GetImport() []string {
  type EnumRule (line 213) | type EnumRule struct
    method Reset (line 227) | func (x *EnumRule) Reset() {
    method String (line 236) | func (x *EnumRule) String() string {
    method ProtoMessage (line 240) | func (*EnumRule) ProtoMessage() {}
    method ProtoReflect (line 242) | func (x *EnumRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 255) | func (*EnumRule) Descriptor() ([]byte, []int) {
    method GetAlias (line 259) | func (x *EnumRule) GetAlias() []string {
  type EnumValueRule (line 266) | type EnumValueRule struct
    method Reset (line 287) | func (x *EnumValueRule) Reset() {
    method String (line 296) | func (x *EnumValueRule) String() string {
    method ProtoMessage (line 300) | func (*EnumValueRule) ProtoMessage() {}
    method ProtoReflect (line 302) | func (x *EnumValueRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 315) | func (*EnumValueRule) Descriptor() ([]byte, []int) {
    method GetDefault (line 319) | func (x *EnumValueRule) GetDefault() bool {
    method GetAlias (line 326) | func (x *EnumValueRule) GetAlias() []string {
    method GetAttr (line 333) | func (x *EnumValueRule) GetAttr() []*EnumValueAttribute {
    method GetNoalias (line 340) | func (x *EnumValueRule) GetNoalias() bool {
  type EnumValueAttribute (line 347) | type EnumValueAttribute struct
    method Reset (line 359) | func (x *EnumValueAttribute) Reset() {
    method String (line 368) | func (x *EnumValueAttribute) String() string {
    method ProtoMessage (line 372) | func (*EnumValueAttribute) ProtoMessage() {}
    method ProtoReflect (line 374) | func (x *EnumValueAttribute) ProtoReflect() protoreflect.Message {
    method Descriptor (line 387) | func (*EnumValueAttribute) Descriptor() ([]byte, []int) {
    method GetName (line 391) | func (x *EnumValueAttribute) GetName() string {
    method GetValue (line 398) | func (x *EnumValueAttribute) GetValue() string {
  type OneofRule (line 405) | type OneofRule struct
    method Reset (line 411) | func (x *OneofRule) Reset() {
    method String (line 420) | func (x *OneofRule) String() string {
    method ProtoMessage (line 424) | func (*OneofRule) ProtoMessage() {}
    method ProtoReflect (line 426) | func (x *OneofRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 439) | func (*OneofRule) Descriptor() ([]byte, []int) {
  type ServiceRule (line 444) | type ServiceRule struct
    method Reset (line 455) | func (x *ServiceRule) Reset() {
    method String (line 464) | func (x *ServiceRule) String() string {
    method ProtoMessage (line 468) | func (*ServiceRule) ProtoMessage() {}
    method ProtoReflect (line 470) | func (x *ServiceRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 483) | func (*ServiceRule) Descriptor() ([]byte, []int) {
    method GetEnv (line 487) | func (x *ServiceRule) GetEnv() *Env {
    method GetVar (line 494) | func (x *ServiceRule) GetVar() []*ServiceVariable {
  type Env (line 503) | type Env struct
    method Reset (line 515) | func (x *Env) Reset() {
    method String (line 524) | func (x *Env) String() string {
    method ProtoMessage (line 528) | func (*Env) ProtoMessage() {}
    method ProtoReflect (line 530) | func (x *Env) ProtoReflect() protoreflect.Message {
    method Descriptor (line 543) | func (*Env) Descriptor() ([]byte, []int) {
    method GetVar (line 547) | func (x *Env) GetVar() []*EnvVar {
    method GetMessage (line 554) | func (x *Env) GetMessage() string {
  type ServiceVariable (line 564) | type ServiceVariable struct
    method Reset (line 589) | func (x *ServiceVariable) Reset() {
    method String (line 598) | func (x *ServiceVariable) String() string {
    method ProtoMessage (line 602) | func (*ServiceVariable) ProtoMessage() {}
    method ProtoReflect (line 604) | func (x *ServiceVariable) ProtoReflect() protoreflect.Message {
    method Descriptor (line 617) | func (*ServiceVariable) Descriptor() ([]byte, []int) {
    method GetName (line 621) | func (x *ServiceVariable) GetName() string {
    method GetIf (line 628) | func (x *ServiceVariable) GetIf() string {
    method GetExpr (line 635) | func (m *ServiceVariable) GetExpr() isServiceVariable_Expr {
    method GetBy (line 642) | func (x *ServiceVariable) GetBy() string {
    method GetMap (line 649) | func (x *ServiceVariable) GetMap() *MapExpr {
    method GetMessage (line 656) | func (x *ServiceVariable) GetMessage() *MessageExpr {
    method GetValidation (line 663) | func (x *ServiceVariable) GetValidation() *ServiceVariableValidationEx...
    method GetEnum (line 670) | func (x *ServiceVariable) GetEnum() *EnumExpr {
    method GetSwitch (line 677) | func (x *ServiceVariable) GetSwitch() *SwitchExpr {
  type isServiceVariable_Expr (line 684) | type isServiceVariable_Expr interface
  type ServiceVariable_By (line 688) | type ServiceVariable_By struct
    method isServiceVariable_Expr (line 718) | func (*ServiceVariable_By) isServiceVariable_Expr() {}
  type ServiceVariable_Map (line 693) | type ServiceVariable_Map struct
    method isServiceVariable_Expr (line 720) | func (*ServiceVariable_Map) isServiceVariable_Expr() {}
  type ServiceVariable_Message (line 698) | type ServiceVariable_Message struct
    method isServiceVariable_Expr (line 722) | func (*ServiceVariable_Message) isServiceVariable_Expr() {}
  type ServiceVariable_Validation (line 703) | type ServiceVariable_Validation struct
    method isServiceVariable_Expr (line 724) | func (*ServiceVariable_Validation) isServiceVariable_Expr() {}
  type ServiceVariable_Enum (line 708) | type ServiceVariable_Enum struct
    method isServiceVariable_Expr (line 726) | func (*ServiceVariable_Enum) isServiceVariable_Expr() {}
  type ServiceVariable_Switch (line 713) | type ServiceVariable_Switch struct
    method isServiceVariable_Expr (line 728) | func (*ServiceVariable_Switch) isServiceVariable_Expr() {}
  type ServiceVariableValidationExpr (line 731) | type ServiceVariableValidationExpr struct
    method Reset (line 743) | func (x *ServiceVariableValidationExpr) Reset() {
    method String (line 752) | func (x *ServiceVariableValidationExpr) String() string {
    method ProtoMessage (line 756) | func (*ServiceVariableValidationExpr) ProtoMessage() {}
    method ProtoReflect (line 758) | func (x *ServiceVariableValidationExpr) ProtoReflect() protoreflect.Me...
    method Descriptor (line 771) | func (*ServiceVariableValidationExpr) Descriptor() ([]byte, []int) {
    method GetIf (line 775) | func (x *ServiceVariableValidationExpr) GetIf() string {
    method GetMessage (line 782) | func (x *ServiceVariableValidationExpr) GetMessage() string {
  type EnvVar (line 790) | type EnvVar struct
    method Reset (line 803) | func (x *EnvVar) Reset() {
    method String (line 812) | func (x *EnvVar) String() string {
    method ProtoMessage (line 816) | func (*EnvVar) ProtoMessage() {}
    method ProtoReflect (line 818) | func (x *EnvVar) ProtoReflect() protoreflect.Message {
    method Descriptor (line 831) | func (*EnvVar) Descriptor() ([]byte, []int) {
    method GetName (line 835) | func (x *EnvVar) GetName() string {
    method GetType (line 842) | func (x *EnvVar) GetType() *EnvType {
    method GetOption (line 849) | func (x *EnvVar) GetOption() *EnvVarOption {
  type EnvType (line 857) | type EnvType struct
    method Reset (line 870) | func (x *EnvType) Reset() {
    method String (line 879) | func (x *EnvType) String() string {
    method ProtoMessage (line 883) | func (*EnvType) ProtoMessage() {}
    method ProtoReflect (line 885) | func (x *EnvType) ProtoReflect() protoreflect.Message {
    method Descriptor (line 898) | func (*EnvType) Descriptor() ([]byte, []int) {
    method GetType (line 902) | func (m *EnvType) GetType() isEnvType_Type {
    method GetKind (line 909) | func (x *EnvType) GetKind() TypeKind {
    method GetRepeated (line 916) | func (x *EnvType) GetRepeated() *EnvType {
    method GetMap (line 923) | func (x *EnvType) GetMap() *EnvMapType {
  type isEnvType_Type (line 930) | type isEnvType_Type interface
  type EnvType_Kind (line 934) | type EnvType_Kind struct
    method isEnvType_Type (line 949) | func (*EnvType_Kind) isEnvType_Type() {}
  type EnvType_Repeated (line 939) | type EnvType_Repeated struct
    method isEnvType_Type (line 951) | func (*EnvType_Repeated) isEnvType_Type() {}
  type EnvType_Map (line 944) | type EnvType_Map struct
    method isEnvType_Type (line 953) | func (*EnvType_Map) isEnvType_Type() {}
  type EnvMapType (line 956) | type EnvMapType struct
    method Reset (line 967) | func (x *EnvMapType) Reset() {
    method String (line 976) | func (x *EnvMapType) String() string {
    method ProtoMessage (line 980) | func (*EnvMapType) ProtoMessage() {}
    method ProtoReflect (line 982) | func (x *EnvMapType) ProtoReflect() protoreflect.Message {
    method Descriptor (line 995) | func (*EnvMapType) Descriptor() ([]byte, []int) {
    method GetKey (line 999) | func (x *EnvMapType) GetKey() *EnvType {
    method GetValue (line 1006) | func (x *EnvMapType) GetValue() *EnvType {
  type EnvVarOption (line 1016) | type EnvVarOption struct
    method Reset (line 1032) | func (x *EnvVarOption) Reset() {
    method String (line 1041) | func (x *EnvVarOption) String() string {
    method ProtoMessage (line 1045) | func (*EnvVarOption) ProtoMessage() {}
    method ProtoReflect (line 1047) | func (x *EnvVarOption) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1060) | func (*EnvVarOption) Descriptor() ([]byte, []int) {
    method GetAlternate (line 1064) | func (x *EnvVarOption) GetAlternate() string {
    method GetDefault (line 1071) | func (x *EnvVarOption) GetDefault() string {
    method GetRequired (line 1078) | func (x *EnvVarOption) GetRequired() bool {
    method GetIgnored (line 1085) | func (x *EnvVarOption) GetIgnored() bool {
  type MethodRule (line 1092) | type MethodRule struct
    method Reset (line 1108) | func (x *MethodRule) Reset() {
    method String (line 1117) | func (x *MethodRule) String() string {
    method ProtoMessage (line 1121) | func (*MethodRule) ProtoMessage() {}
    method ProtoReflect (line 1123) | func (x *MethodRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1136) | func (*MethodRule) Descriptor() ([]byte, []int) {
    method GetTimeout (line 1140) | func (x *MethodRule) GetTimeout() string {
    method GetResponse (line 1147) | func (x *MethodRule) GetResponse() string {
  type MessageRule (line 1155) | type MessageRule struct
    method Reset (line 1176) | func (x *MessageRule) Reset() {
    method String (line 1185) | func (x *MessageRule) String() string {
    method ProtoMessage (line 1189) | func (*MessageRule) ProtoMessage() {}
    method ProtoReflect (line 1191) | func (x *MessageRule) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1204) | func (*MessageRule) Descriptor() ([]byte, []int) {
    method GetDef (line 1208) | func (x *MessageRule) GetDef() []*VariableDefinition {
    method GetCustomResolver (line 1215) | func (x *MessageRule) GetCustomResolver() bool {
    method GetAlias (line 1222) | func (x *MessageRule) GetAlias() []string {
  type VariableDefinition (line 1230) | type VariableDefinition struct
    method Reset (line 1262) | func (x *VariableDefinition) Reset() {
    method String (line 1271) | func (x *VariableDefinition) String() string {
    method ProtoMessage (line 1275) | func (*VariableDefinition) ProtoMessage() {}
    method ProtoReflect (line 1277) | func (x *VariableDefinition) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1290) | func (*VariableDefinition) Descriptor() ([]byte, []int) {
    method GetName (line 1294) | func (x *VariableDefinition) GetName() string {
    method GetIf (line 1301) | func (x *VariableDefinition) GetIf() string {
    method GetAutobind (line 1308) | func (x *VariableDefinition) GetAutobind() bool {
    method GetExpr (line 1315) | func (m *VariableDefinition) GetExpr() isVariableDefinition_Expr {
    method GetBy (line 1322) | func (x *VariableDefinition) GetBy() string {
    method GetMap (line 1329) | func (x *VariableDefinition) GetMap() *MapExpr {
    method GetMessage (line 1336) | func (x *VariableDefinition) GetMessage() *MessageExpr {
    method GetCall (line 1343) | func (x *VariableDefinition) GetCall() *CallExpr {
    method GetValidation (line 1350) | func (x *VariableDefinition) GetValidation() *ValidationExpr {
    method GetEnum (line 1357) | func (x *VariableDefinition) GetEnum() *EnumExpr {
    method GetSwitch (line 1364) | func (x *VariableDefinition) GetSwitch() *SwitchExpr {
  type isVariableDefinition_Expr (line 1371) | type isVariableDefinition_Expr interface
  type VariableDefinition_By (line 1375) | type VariableDefinition_By struct
    method isVariableDefinition_Expr (line 1410) | func (*VariableDefinition_By) isVariableDefinition_Expr() {}
  type VariableDefinition_Map (line 1380) | type VariableDefinition_Map struct
    method isVariableDefinition_Expr (line 1412) | func (*VariableDefinition_Map) isVariableDefinition_Expr() {}
  type VariableDefinition_Message (line 1385) | type VariableDefinition_Message struct
    method isVariableDefinition_Expr (line 1414) | func (*VariableDefinition_Message) isVariableDefinition_Expr() {}
  type VariableDefinition_Call (line 1390) | type VariableDefinition_Call struct
    method isVariableDefinition_Expr (line 1416) | func (*VariableDefinition_Call) isVariableDefinition_Expr() {}
  type VariableDefinition_Validation (line 1395) | type VariableDefinition_Validation struct
    method isVariableDefinition_Expr (line 1418) | func (*VariableDefinition_Validation) isVariableDefinition_Expr() {}
  type VariableDefinition_Enum (line 1400) | type VariableDefinition_Enum struct
    method isVariableDefinition_Expr (line 1420) | func (*VariableDefinition_Enum) isVariableDefinition_Expr() {}
  type VariableDefinition_Switch (line 1405) | type VariableDefinition_Switch struct
    method isVariableDefinition_Expr (line 1422) | func (*VariableDefinition_Switch) isVariableDefinition_Expr() {}
  type MapExpr (line 1425) | type MapExpr struct
    method Reset (line 1443) | func (x *MapExpr) Reset() {
    method String (line 1452) | func (x *MapExpr) String() string {
    method ProtoMessage (line 1456) | func (*MapExpr) ProtoMessage() {}
    method ProtoReflect (line 1458) | func (x *MapExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1471) | func (*MapExpr) Descriptor() ([]byte, []int) {
    method GetIterator (line 1475) | func (x *MapExpr) GetIterator() *Iterator {
    method GetExpr (line 1482) | func (m *MapExpr) GetExpr() isMapExpr_Expr {
    method GetBy (line 1489) | func (x *MapExpr) GetBy() string {
    method GetMessage (line 1496) | func (x *MapExpr) GetMessage() *MessageExpr {
    method GetEnum (line 1503) | func (x *MapExpr) GetEnum() *EnumExpr {
  type isMapExpr_Expr (line 1510) | type isMapExpr_Expr interface
  type MapExpr_By (line 1514) | type MapExpr_By struct
    method isMapExpr_Expr (line 1532) | func (*MapExpr_By) isMapExpr_Expr() {}
  type MapExpr_Message (line 1520) | type MapExpr_Message struct
    method isMapExpr_Expr (line 1534) | func (*MapExpr_Message) isMapExpr_Expr() {}
  type MapExpr_Enum (line 1526) | type MapExpr_Enum struct
    method isMapExpr_Expr (line 1536) | func (*MapExpr_Enum) isMapExpr_Expr() {}
  type Iterator (line 1539) | type Iterator struct
    method Reset (line 1551) | func (x *Iterator) Reset() {
    method String (line 1560) | func (x *Iterator) String() string {
    method ProtoMessage (line 1564) | func (*Iterator) ProtoMessage() {}
    method ProtoReflect (line 1566) | func (x *Iterator) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1579) | func (*Iterator) Descriptor() ([]byte, []int) {
    method GetName (line 1583) | func (x *Iterator) GetName() string {
    method GetSrc (line 1590) | func (x *Iterator) GetSrc() string {
  type MessageExpr (line 1598) | type MessageExpr struct
    method Reset (line 1610) | func (x *MessageExpr) Reset() {
    method String (line 1619) | func (x *MessageExpr) String() string {
    method ProtoMessage (line 1623) | func (*MessageExpr) ProtoMessage() {}
    method ProtoReflect (line 1625) | func (x *MessageExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1638) | func (*MessageExpr) Descriptor() ([]byte, []int) {
    method GetName (line 1642) | func (x *MessageExpr) GetName() string {
    method GetArgs (line 1649) | func (x *MessageExpr) GetArgs() []*Argument {
  type EnumExpr (line 1657) | type EnumExpr struct
    method Reset (line 1669) | func (x *EnumExpr) Reset() {
    method String (line 1678) | func (x *EnumExpr) String() string {
    method ProtoMessage (line 1682) | func (*EnumExpr) ProtoMessage() {}
    method ProtoReflect (line 1684) | func (x *EnumExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1697) | func (*EnumExpr) Descriptor() ([]byte, []int) {
    method GetName (line 1701) | func (x *EnumExpr) GetName() string {
    method GetBy (line 1708) | func (x *EnumExpr) GetBy() string {
  type CallExpr (line 1716) | type CallExpr struct
    method Reset (line 1742) | func (x *CallExpr) Reset() {
    method String (line 1751) | func (x *CallExpr) String() string {
    method ProtoMessage (line 1755) | func (*CallExpr) ProtoMessage() {}
    method ProtoReflect (line 1757) | func (x *CallExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1770) | func (*CallExpr) Descriptor() ([]byte, []int) {
    method GetMethod (line 1774) | func (x *CallExpr) GetMethod() string {
    method GetRequest (line 1781) | func (x *CallExpr) GetRequest() []*MethodRequest {
    method GetTimeout (line 1788) | func (x *CallExpr) GetTimeout() string {
    method GetRetry (line 1795) | func (x *CallExpr) GetRetry() *RetryPolicy {
    method GetError (line 1802) | func (x *CallExpr) GetError() []*GRPCError {
    method GetOption (line 1809) | func (x *CallExpr) GetOption() *GRPCCallOption {
    method GetMetadata (line 1816) | func (x *CallExpr) GetMetadata() string {
  type SwitchExpr (line 1831) | type SwitchExpr struct
    method Reset (line 1842) | func (x *SwitchExpr) Reset() {
    method String (line 1851) | func (x *SwitchExpr) String() string {
    method ProtoMessage (line 1855) | func (*SwitchExpr) ProtoMessage() {}
    method ProtoReflect (line 1857) | func (x *SwitchExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1870) | func (*SwitchExpr) Descriptor() ([]byte, []int) {
    method GetCase (line 1874) | func (x *SwitchExpr) GetCase() []*SwitchCaseExpr {
    method GetDefault (line 1881) | func (x *SwitchExpr) GetDefault() *SwitchDefaultExpr {
  type SwitchCaseExpr (line 1889) | type SwitchCaseExpr struct
    method Reset (line 1907) | func (x *SwitchCaseExpr) Reset() {
    method String (line 1916) | func (x *SwitchCaseExpr) String() string {
    method ProtoMessage (line 1920) | func (*SwitchCaseExpr) ProtoMessage() {}
    method ProtoReflect (line 1922) | func (x *SwitchCaseExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1935) | func (*SwitchCaseExpr) Descriptor() ([]byte, []int) {
    method GetIf (line 1939) | func (x *SwitchCaseExpr) GetIf() string {
    method GetDef (line 1946) | func (x *SwitchCaseExpr) GetDef() []*VariableDefinition {
    method GetExpr (line 1953) | func (m *SwitchCaseExpr) GetExpr() isSwitchCaseExpr_Expr {
    method GetBy (line 1960) | func (x *SwitchCaseExpr) GetBy() string {
  type isSwitchCaseExpr_Expr (line 1967) | type isSwitchCaseExpr_Expr interface
  type SwitchCaseExpr_By (line 1971) | type SwitchCaseExpr_By struct
    method isSwitchCaseExpr_Expr (line 1976) | func (*SwitchCaseExpr_By) isSwitchCaseExpr_Expr() {}
  type SwitchDefaultExpr (line 1979) | type SwitchDefaultExpr struct
    method Reset (line 1994) | func (x *SwitchDefaultExpr) Reset() {
    method String (line 2003) | func (x *SwitchDefaultExpr) String() string {
    method ProtoMessage (line 2007) | func (*SwitchDefaultExpr) ProtoMessage() {}
    method ProtoReflect (line 2009) | func (x *SwitchDefaultExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2022) | func (*SwitchDefaultExpr) Descriptor() ([]byte, []int) {
    method GetDef (line 2026) | func (x *SwitchDefaultExpr) GetDef() []*VariableDefinition {
    method GetExpr (line 2033) | func (m *SwitchDefaultExpr) GetExpr() isSwitchDefaultExpr_Expr {
    method GetBy (line 2040) | func (x *SwitchDefaultExpr) GetBy() string {
  type isSwitchDefaultExpr_Expr (line 2047) | type isSwitchDefaultExpr_Expr interface
  type SwitchDefaultExpr_By (line 2051) | type SwitchDefaultExpr_By struct
    method isSwitchDefaultExpr_Expr (line 2056) | func (*SwitchDefaultExpr_By) isSwitchDefaultExpr_Expr() {}
  type GRPCError (line 2059) | type GRPCError struct
    method Reset (line 2093) | func (x *GRPCError) Reset() {
    method String (line 2102) | func (x *GRPCError) String() string {
    method ProtoMessage (line 2106) | func (*GRPCError) ProtoMessage() {}
    method ProtoReflect (line 2108) | func (x *GRPCError) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2121) | func (*GRPCError) Descriptor() ([]byte, []int) {
    method GetDef (line 2125) | func (x *GRPCError) GetDef() []*VariableDefinition {
    method GetIf (line 2132) | func (x *GRPCError) GetIf() string {
    method GetCode (line 2139) | func (x *GRPCError) GetCode() code.Code {
    method GetMessage (line 2146) | func (x *GRPCError) GetMessage() string {
    method GetDetails (line 2153) | func (x *GRPCError) GetDetails() []*GRPCErrorDetail {
    method GetIgnore (line 2160) | func (x *GRPCError) GetIgnore() bool {
    method GetIgnoreAndResponse (line 2167) | func (x *GRPCError) GetIgnoreAndResponse() string {
    method GetLogLevel (line 2174) | func (x *GRPCError) GetLogLevel() GRPCError_LogLevel {
  type GRPCErrorDetail (line 2181) | type GRPCErrorDetail struct
    method Reset (line 2216) | func (x *GRPCErrorDetail) Reset() {
    method String (line 2225) | func (x *GRPCErrorDetail) String() string {
    method ProtoMessage (line 2229) | func (*GRPCErrorDetail) ProtoMessage() {}
    method ProtoReflect (line 2231) | func (x *GRPCErrorDetail) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2244) | func (*GRPCErrorDetail) Descriptor() ([]byte, []int) {
    method GetIf (line 2248) | func (x *GRPCErrorDetail) GetIf() string {
    method GetDef (line 2255) | func (x *GRPCErrorDetail) GetDef() []*VariableDefinition {
    method GetMessage (line 2262) | func (x *GRPCErrorDetail) GetMessage() []*MessageExpr {
    method GetErrorInfo (line 2269) | func (x *GRPCErrorDetail) GetErrorInfo() []*errdetails.ErrorInfo {
    method GetRetryInfo (line 2276) | func (x *GRPCErrorDetail) GetRetryInfo() []*errdetails.RetryInfo {
    method GetDebugInfo (line 2283) | func (x *GRPCErrorDetail) GetDebugInfo() []*errdetails.DebugInfo {
    method GetQuotaFailure (line 2290) | func (x *GRPCErrorDetail) GetQuotaFailure() []*errdetails.QuotaFailure {
    method GetPreconditionFailure (line 2297) | func (x *GRPCErrorDetail) GetPreconditionFailure() []*errdetails.Preco...
    method GetBadRequest (line 2304) | func (x *GRPCErrorDetail) GetBadRequest() []*errdetails.BadRequest {
    method GetRequestInfo (line 2311) | func (x *GRPCErrorDetail) GetRequestInfo() []*errdetails.RequestInfo {
    method GetResourceInfo (line 2318) | func (x *GRPCErrorDetail) GetResourceInfo() []*errdetails.ResourceInfo {
    method GetHelp (line 2325) | func (x *GRPCErrorDetail) GetHelp() []*errdetails.Help {
    method GetLocalizedMessage (line 2332) | func (x *GRPCErrorDetail) GetLocalizedMessage() []*errdetails.Localize...
    method GetBy (line 2339) | func (x *GRPCErrorDetail) GetBy() []string {
  type GRPCCallOption (line 2347) | type GRPCCallOption struct
    method Reset (line 2395) | func (x *GRPCCallOption) Reset() {
    method String (line 2404) | func (x *GRPCCallOption) String() string {
    method ProtoMessage (line 2408) | func (*GRPCCallOption) ProtoMessage() {}
    method ProtoReflect (line 2410) | func (x *GRPCCallOption) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2423) | func (*GRPCCallOption) Descriptor() ([]byte, []int) {
    method GetContentSubtype (line 2427) | func (x *GRPCCallOption) GetContentSubtype() string {
    method GetHeader (line 2434) | func (x *GRPCCallOption) GetHeader() string {
    method GetMaxCallRecvMsgSize (line 2441) | func (x *GRPCCallOption) GetMaxCallRecvMsgSize() int64 {
    method GetMaxCallSendMsgSize (line 2448) | func (x *GRPCCallOption) GetMaxCallSendMsgSize() int64 {
    method GetStaticMethod (line 2455) | func (x *GRPCCallOption) GetStaticMethod() bool {
    method GetTrailer (line 2462) | func (x *GRPCCallOption) GetTrailer() string {
    method GetWaitForReady (line 2469) | func (x *GRPCCallOption) GetWaitForReady() bool {
  type ValidationExpr (line 2477) | type ValidationExpr struct
    method Reset (line 2490) | func (x *ValidationExpr) Reset() {
    method String (line 2499) | func (x *ValidationExpr) String() string {
    method ProtoMessage (line 2503) | func (*ValidationExpr) ProtoMessage() {}
    method ProtoReflect (line 2505) | func (x *ValidationExpr) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2518) | func (*ValidationExpr) Descriptor() ([]byte, []int) {
    method GetName (line 2522) | func (x *ValidationExpr) GetName() string {
    method GetError (line 2529) | func (x *ValidationExpr) GetError() *GRPCError {
  type RetryPolicy (line 2537) | type RetryPolicy struct
    method Reset (line 2553) | func (x *RetryPolicy) Reset() {
    method String (line 2562) | func (x *RetryPolicy) String() string {
    method ProtoMessage (line 2566) | func (*RetryPolicy) ProtoMessage() {}
    method ProtoReflect (line 2568) | func (x *RetryPolicy) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2581) | func (*RetryPolicy) Descriptor() ([]byte, []int) {
    method GetPolicy (line 2585) | func (m *RetryPolicy) GetPolicy() isRetryPolicy_Policy {
    method GetConstant (line 2592) | func (x *RetryPolicy) GetConstant() *RetryPolicyConstant {
    method GetExponential (line 2599) | func (x *RetryPolicy) GetExponential() *RetryPolicyExponential {
    method GetIf (line 2606) | func (x *RetryPolicy) GetIf() string {
  type isRetryPolicy_Policy (line 2613) | type isRetryPolicy_Policy interface
  type RetryPolicy_Constant (line 2617) | type RetryPolicy_Constant struct
    method isRetryPolicy_Policy (line 2630) | func (*RetryPolicy_Constant) isRetryPolicy_Policy() {}
  type RetryPolicy_Exponential (line 2622) | type RetryPolicy_Exponential struct
    method isRetryPolicy_Policy (line 2632) | func (*RetryPolicy_Exponential) isRetryPolicy_Policy() {}
  type RetryPolicyConstant (line 2635) | type RetryPolicyConstant struct
    method Reset (line 2646) | func (x *RetryPolicyConstant) Reset() {
    method String (line 2655) | func (x *RetryPolicyConstant) String() string {
    method ProtoMessage (line 2659) | func (*RetryPolicyConstant) ProtoMessage() {}
    method ProtoReflect (line 2661) | func (x *RetryPolicyConstant) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2674) | func (*RetryPolicyConstant) Descriptor() ([]byte, []int) {
    method GetInterval (line 2678) | func (x *RetryPolicyConstant) GetInterval() string {
    method GetMaxRetries (line 2685) | func (x *RetryPolicyConstant) GetMaxRetries() uint64 {
  type RetryPolicyExponential (line 2693) | type RetryPolicyExponential struct
    method Reset (line 2710) | func (x *RetryPolicyExponential) Reset() {
    method String (line 2719) | func (x *RetryPolicyExponential) String() string {
    method ProtoMessage (line 2723) | func (*RetryPolicyExponential) ProtoMessage() {}
    method ProtoReflect (line 2725) | func (x *RetryPolicyExponential) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2738) | func (*RetryPolicyExponential) Descriptor() ([]byte, []int) {
    method GetInitialInterval (line 2742) | func (x *RetryPolicyExponential) GetInitialInterval() string {
    method GetRandomizationFactor (line 2749) | func (x *RetryPolicyExponential) GetRandomizationFactor() float64 {
    method GetMultiplier (line 2756) | func (x *RetryPolicyExponential) GetMultiplier() float64 {
    method GetMaxInterval (line 2763) | func (x *RetryPolicyExponential) GetMaxInterval() string {
    method GetMaxRetries (line 2770) | func (x *RetryPolicyExponential) GetMaxRetries() uint64 {
  type MethodRequest (line 2778) | type MethodRequest struct
    method Reset (line 2797) | func (x *MethodRequest) Reset() {
    method String (line 2806) | func (x *MethodRequest) String() string {
    method ProtoMessage (line 2810) | func (*MethodRequest) ProtoMessage() {}
    method ProtoReflect (line 2812) | func (x *MethodRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2825) | func (*MethodRequest) Descriptor() ([]byte, []int) {
    method GetField (line 2829) | func (x *MethodRequest) GetField() string {
    method GetBy (line 2836) | func (x *MethodRequest) GetBy() string {
    method GetIf (line 2843) | func (x *MethodRequest) GetIf() string {
  type MethodResponse (line 2851) | type MethodResponse struct
    method Reset (line 2867) | func (x *MethodResponse) Reset() {
    method String (line 2876) | func (x *MethodResponse) String() string {
    method ProtoMessage (line 2880) | func (*MethodResponse) ProtoMessage() {}
    method ProtoReflect (line 2882) | func (x *MethodResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2895) | func (*MethodResponse) Descriptor() ([]byte, []int) {
    method GetName (line 2899) | func (x *MethodResponse) GetName() string {
    method GetField (line 2906) | func (x *MethodResponse) GetField() string {
    method GetAutobind (line 2913) | func (x *MethodResponse) GetAutobind() bool {
  type Argument (line 2921) | type Argument struct
    method Reset (line 2939) | func (x *Argument) Reset() {
    method String (line 2948) | func (x *Argument) String() string {
    method ProtoMessage (line 2952) | func (*Argument) ProtoMessage() {}
    method ProtoReflect (line 2954) | func (x *Argument) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2967) | func (*Argument) Descriptor() ([]byte, []int) {
    method GetName (line 2971) | func (x *Argument) GetName() string {
    method GetBy (line 2978) | func (x *Argument) GetBy() string {
    method GetInline (line 2985) | func (x *Argument) GetInline() string {
  type FieldRule (line 2993) | type FieldRule struct
    method Reset (line 3015) | fun
Condensed preview — 814 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,180K chars).
[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 634,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 595,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".github/workflows/buf.yml",
    "chars": 384,
    "preview": "name: buf\non:\n  push:\n    branches:\n      - main\njobs:\n  buf:\n    name: push Buf modules to BSR\n    runs-on: ubuntu-late"
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 422,
    "preview": "name: lint\non:\n  push:\n    branches:\n      - main\n  pull_request:\njobs:\n  lint:\n    name: lint\n    runs-on: ubuntu-lates"
  },
  {
    "path": ".github/workflows/release-jetbrains.yml",
    "chars": 1089,
    "preview": "name: release-jetbrains\non:\n  push:\n    tags:\n      - \"jetbrains/v*\"\n\npermissions:\n  contents: write\n\njobs:\n  release-je"
  },
  {
    "path": ".github/workflows/release-vscode.yml",
    "chars": 1784,
    "preview": "name: release-vscode\non:\n  push:\n    tags:\n      - \"v*.*.*\"\n\npermissions:\n  contents: write\n\njobs:\n  release-vscode:\n   "
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 864,
    "preview": "name: test\non:\n  push:\n    branches:\n      - main\n  pull_request:\njobs:\n  build_and_generate:\n    name: build and genera"
  },
  {
    "path": ".gitignore",
    "chars": 301,
    "preview": "# Binaries for programs and plugins\n*.exe\n*.exe~\n*.dll\n*.so\n*.dylib\n\n# Test binary, built with `go test -c`\n*.test\n\n# Ou"
  },
  {
    "path": ".golangci.yml",
    "chars": 2129,
    "preview": "# golangci-lint configuration file\n# see: https://github.com/golangci/golangci/wiki/Configuration\n\nrun:\n  timeout: 5m\n  "
  },
  {
    "path": ".goreleaser.yaml",
    "chars": 1542,
    "preview": "# This is an example .goreleaser.yml file with some sensible defaults.\n# Make sure to check the documentation at https:/"
  },
  {
    "path": ".octocov.yml",
    "chars": 437,
    "preview": "coverage:\n  paths:\n    - cover.out\n  acceptable: current >= 55%\ncodeToTestRatio:\n  code:\n    - '**/*.go'\n    - '!**/*_te"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 274,
    "preview": "{\n    \"protoc\": {\n        \"options\": [\n            \"--proto_path=proto\",\n            \"--proto_path=proto_deps\",\n        "
  },
  {
    "path": "LICENSE",
    "chars": 1070,
    "preview": "MIT License\n\nCopyright (c) 2023 Mercari, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
  },
  {
    "path": "Makefile",
    "chars": 3858,
    "preview": "export\n\nGOBIN := $(PWD)/bin\nPATH := $(GOBIN):$(PATH)\nSHELL := env PATH='$(PATH)' bash\n\nPKG := github.com/mercari/grpc-fe"
  },
  {
    "path": "README.md",
    "chars": 6867,
    "preview": "# gRPC Federation\n\n<img width=\"500px\" src=\"https://github.com/mercari/grpc-federation/blob/main/images/logo.png?raw=true"
  },
  {
    "path": "_examples/01_minimum/.gitignore",
    "chars": 17,
    "preview": "grpc/federation\n\n"
  },
  {
    "path": "_examples/01_minimum/.vscode/settings.json",
    "chars": 304,
    "preview": "{\n    \"protoc\": {\n        \"options\": [\n            \"--proto_path=proto\",\n            \"--proto_path=proto_deps\"\n        ]"
  },
  {
    "path": "_examples/01_minimum/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/01_minimum/buf.gen.yaml",
    "chars": 243,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/01_minimum/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/01_minimum/federation/federation.pb.go",
    "chars": 12830,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/01_minimum/federation/federation_grpc.pb.go",
    "chars": 4001,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/01_minimum/federation/federation_grpc_federation.pb.go",
    "chars": 9615,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/01_minimum/go.mod",
    "chars": 1685,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/google/go-cmp v0."
  },
  {
    "path": "_examples/01_minimum/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/01_minimum/grpc-federation.yaml",
    "chars": 206,
    "preview": "imports:\n  - proto\nsrc:\n  - proto\nout: .\nplugins:\n  - plugin: go\n    opt: paths=source_relative\n  - plugin: go-grpc\n    "
  },
  {
    "path": "_examples/01_minimum/main_test.go",
    "chars": 2339,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google"
  },
  {
    "path": "_examples/01_minimum/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/01_minimum/proto/federation/federation.proto",
    "chars": 568,
    "preview": "syntax = \"proto3\";\n\npackage federation;\n\nimport \"grpc/federation/federation.proto\";\n\noption go_package = \"example/federa"
  },
  {
    "path": "_examples/02_simple/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/02_simple/.vscode/settings.json",
    "chars": 304,
    "preview": "{\n    \"protoc\": {\n        \"options\": [\n            \"--proto_path=proto\",\n            \"--proto_path=proto_deps\"\n        ]"
  },
  {
    "path": "_examples/02_simple/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/02_simple/buf.gen.yaml",
    "chars": 266,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/02_simple/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/02_simple/federation/federation.pb.go",
    "chars": 102165,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/02_simple/federation/federation_grpc.pb.go",
    "chars": 4001,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/02_simple/federation/federation_grpc_federation.pb.go",
    "chars": 122274,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/02_simple/go.mod",
    "chars": 1685,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/google/go-cmp v0."
  },
  {
    "path": "_examples/02_simple/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/02_simple/grpc-federation.yaml",
    "chars": 237,
    "preview": "imports:\n  - proto\nsrc:\n  - proto\nout: .\nplugins:\n  - plugin: go\n    opt: paths=source_relative\n  - plugin: go-grpc\n    "
  },
  {
    "path": "_examples/02_simple/main_test.go",
    "chars": 9362,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"git"
  },
  {
    "path": "_examples/02_simple/post/post.pb.go",
    "chars": 13596,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/02_simple/post/post_grpc.pb.go",
    "chars": 5186,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/02_simple/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/02_simple/proto/federation/federation.proto",
    "chars": 12764,
    "preview": "syntax = \"proto3\";\n\npackage federation;\n\nimport \"google/protobuf/any.proto\";\nimport \"google/protobuf/wrappers.proto\";\nim"
  },
  {
    "path": "_examples/02_simple/proto/post/post.proto",
    "chars": 527,
    "preview": "syntax = \"proto3\";\n\npackage post;\n\noption go_package = \"example/post;post\";\n\nservice PostService {\n  rpc GetPost(GetPost"
  },
  {
    "path": "_examples/02_simple/proto/user/user.proto",
    "chars": 1221,
    "preview": "syntax = \"proto3\";\n\npackage user;\n\nimport \"google/protobuf/any.proto\";\n\noption go_package = \"example/user;user\";\n\nservic"
  },
  {
    "path": "_examples/02_simple/user/user.pb.go",
    "chars": 32506,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/02_simple/user/user_grpc.pb.go",
    "chars": 5186,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/03_custom_resolver/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/03_custom_resolver/.vscode/settings.json",
    "chars": 304,
    "preview": "{\n    \"protoc\": {\n        \"options\": [\n            \"--proto_path=proto\",\n            \"--proto_path=proto_deps\"\n        ]"
  },
  {
    "path": "_examples/03_custom_resolver/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/03_custom_resolver/buf.gen.yaml",
    "chars": 266,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/03_custom_resolver/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/03_custom_resolver/federation/federation.pb.go",
    "chars": 28306,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/03_custom_resolver/federation/federation_grpc.pb.go",
    "chars": 4329,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/03_custom_resolver/federation/federation_grpc_federation.pb.go",
    "chars": 54384,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/03_custom_resolver/federation/other.pb.go",
    "chars": 5593,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/03_custom_resolver/federation/other_grpc_federation.pb.go",
    "chars": 268,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/03_custom_resolver/go.mod",
    "chars": 1685,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/google/go-cmp v0."
  },
  {
    "path": "_examples/03_custom_resolver/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/03_custom_resolver/main_test.go",
    "chars": 8747,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github"
  },
  {
    "path": "_examples/03_custom_resolver/post/post.pb.go",
    "chars": 13596,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/03_custom_resolver/post/post_grpc.pb.go",
    "chars": 5186,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/03_custom_resolver/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/03_custom_resolver/proto/federation/federation.proto",
    "chars": 3906,
    "preview": "syntax = \"proto3\";\n\npackage federation.v2dev;\n\nimport \"grpc/federation/federation.proto\";\nimport \"google/protobuf/durati"
  },
  {
    "path": "_examples/03_custom_resolver/proto/federation/other.proto",
    "chars": 231,
    "preview": "syntax = \"proto3\";\n\npackage federation.v2dev;\n\nimport \"grpc/federation/federation.proto\";\n\noption go_package = \"example/"
  },
  {
    "path": "_examples/03_custom_resolver/proto/post/post.proto",
    "chars": 527,
    "preview": "syntax = \"proto3\";\n\npackage post;\n\noption go_package = \"example/post;post\";\n\nservice PostService {\n  rpc GetPost(GetPost"
  },
  {
    "path": "_examples/03_custom_resolver/proto/user/user.proto",
    "chars": 482,
    "preview": "syntax = \"proto3\";\n\npackage user;\n\noption go_package = \"example/user;user\";\n\nservice UserService {\n  rpc GetUser(GetUser"
  },
  {
    "path": "_examples/03_custom_resolver/user/user.pb.go",
    "chars": 12906,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/03_custom_resolver/user/user_grpc.pb.go",
    "chars": 5186,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/04_timeout/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/04_timeout/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/04_timeout/buf.gen.yaml",
    "chars": 266,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/04_timeout/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/04_timeout/federation/federation.pb.go",
    "chars": 19416,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/04_timeout/federation/federation_grpc.pb.go",
    "chars": 5607,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/04_timeout/federation/federation_grpc_federation.pb.go",
    "chars": 23625,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/04_timeout/go.mod",
    "chars": 1652,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/mercari/grpc-fede"
  },
  {
    "path": "_examples/04_timeout/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/04_timeout/grpc/federation/federation.pb.go",
    "chars": 211139,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/04_timeout/grpc-federation.yaml",
    "chars": 206,
    "preview": "imports:\n  - proto\nsrc:\n  - proto\nout: .\nplugins:\n  - plugin: go\n    opt: paths=source_relative\n  - plugin: go-grpc\n    "
  },
  {
    "path": "_examples/04_timeout/main_test.go",
    "chars": 4187,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\t\"go.opentelemetry.io/otel\"\n\t"
  },
  {
    "path": "_examples/04_timeout/post/post.pb.go",
    "chars": 16998,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/04_timeout/post/post_grpc.pb.go",
    "chars": 6742,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/04_timeout/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/04_timeout/proto/federation/federation.proto",
    "chars": 1753,
    "preview": "syntax = \"proto3\";\n\npackage federation;\n\nimport \"grpc/federation/federation.proto\";\nimport \"google/protobuf/descriptor.p"
  },
  {
    "path": "_examples/04_timeout/proto/post/post.proto",
    "chars": 651,
    "preview": "syntax = \"proto3\";\n\npackage post;\n\noption go_package = \"example/post;post\";\n\nservice PostService {\n  rpc GetPost(GetPost"
  },
  {
    "path": "_examples/05_async/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/05_async/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/05_async/buf.gen.yaml",
    "chars": 235,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/05_async/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/05_async/federation/federation.pb.go",
    "chars": 29141,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/05_async/federation/federation_grpc.pb.go",
    "chars": 3909,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/05_async/federation/federation_grpc_federation.pb.go",
    "chars": 50707,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/05_async/go.mod",
    "chars": 1685,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/google/go-cmp v0."
  },
  {
    "path": "_examples/05_async/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/05_async/grpc/federation/federation.pb.go",
    "chars": 211139,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/05_async/main_test.go",
    "chars": 2522,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com"
  },
  {
    "path": "_examples/05_async/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/05_async/proto/federation/federation.proto",
    "chars": 2269,
    "preview": "syntax = \"proto3\";\n\npackage org.federation;\n\nimport \"grpc/federation/federation.proto\";\n\noption go_package = \"example/fe"
  },
  {
    "path": "_examples/06_alias/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/06_alias/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/06_alias/buf.gen.yaml",
    "chars": 266,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/06_alias/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/06_alias/federation/federation.pb.go",
    "chars": 40537,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/06_alias/federation/federation_grpc.pb.go",
    "chars": 4009,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/06_alias/federation/federation_grpc_federation.pb.go",
    "chars": 43073,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/06_alias/go.mod",
    "chars": 1685,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/google/go-cmp v0."
  },
  {
    "path": "_examples/06_alias/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/06_alias/grpc/federation/federation.pb.go",
    "chars": 211139,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/06_alias/main_test.go",
    "chars": 5157,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com"
  },
  {
    "path": "_examples/06_alias/post/post.pb.go",
    "chars": 25864,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/06_alias/post/post_grpc.pb.go",
    "chars": 3739,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/06_alias/post/v2/extra.pb.go",
    "chars": 5024,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/06_alias/post/v2/post.pb.go",
    "chars": 20169,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/06_alias/post/v2/post_grpc.pb.go",
    "chars": 3751,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/06_alias/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/06_alias/proto/federation/federation.proto",
    "chars": 4123,
    "preview": "syntax = \"proto3\";\n\npackage org.federation;\n\nimport \"grpc/federation/federation.proto\";\nimport \"post/post.proto\";\n\noptio"
  },
  {
    "path": "_examples/06_alias/proto/post/post.proto",
    "chars": 890,
    "preview": "syntax = \"proto3\";\n\npackage org.post;\n\noption go_package = \"example/post;post\";\n\nservice PostService {\n  rpc GetPost(Get"
  },
  {
    "path": "_examples/06_alias/proto/post/v2/extra.proto",
    "chars": 291,
    "preview": "syntax = \"proto3\";\n\npackage org.post.v2;\n\noption go_package = \"example/post/v2;post\";\n\n// A second proto file in the v2 "
  },
  {
    "path": "_examples/06_alias/proto/post/v2/post.proto",
    "chars": 727,
    "preview": "syntax = \"proto3\";\n\npackage org.post.v2;\n\noption go_package = \"example/post/v2;post\";\n\nservice PostService {\n  rpc GetPo"
  },
  {
    "path": "_examples/07_autobind/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/07_autobind/.vscode/settings.json",
    "chars": 304,
    "preview": "{\n    \"protoc\": {\n        \"options\": [\n            \"--proto_path=proto\",\n            \"--proto_path=proto_deps\"\n        ]"
  },
  {
    "path": "_examples/07_autobind/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/07_autobind/buf.gen.yaml",
    "chars": 266,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/07_autobind/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/07_autobind/federation/federation.pb.go",
    "chars": 14494,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/07_autobind/federation/federation_grpc.pb.go",
    "chars": 4009,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/07_autobind/federation/federation_grpc_federation.pb.go",
    "chars": 19648,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/07_autobind/go.mod",
    "chars": 1685,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/google/go-cmp v0."
  },
  {
    "path": "_examples/07_autobind/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/07_autobind/main_test.go",
    "chars": 3368,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"git"
  },
  {
    "path": "_examples/07_autobind/post/post.pb.go",
    "chars": 9481,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/07_autobind/post/post_grpc.pb.go",
    "chars": 3731,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/07_autobind/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/07_autobind/proto/federation/federation.proto",
    "chars": 1260,
    "preview": "syntax = \"proto3\";\n\npackage org.federation;\n\nimport \"google/protobuf/any.proto\";\nimport \"grpc/federation/federation.prot"
  },
  {
    "path": "_examples/07_autobind/proto/post/post.proto",
    "chars": 351,
    "preview": "syntax = \"proto3\";\n\npackage post;\n\noption go_package = \"example/post;post\";\n\nservice PostService {\n  rpc GetPost(GetPost"
  },
  {
    "path": "_examples/08_literal/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/08_literal/.vscode/settings.json",
    "chars": 304,
    "preview": "{\n    \"protoc\": {\n        \"options\": [\n            \"--proto_path=proto\",\n            \"--proto_path=proto_deps\"\n        ]"
  },
  {
    "path": "_examples/08_literal/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/08_literal/buf.gen.yaml",
    "chars": 266,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/08_literal/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/08_literal/content/content.pb.go",
    "chars": 46336,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/08_literal/content/content_grpc.pb.go",
    "chars": 3941,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/08_literal/federation/federation.pb.go",
    "chars": 37632,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/08_literal/federation/federation_grpc.pb.go",
    "chars": 3909,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/08_literal/federation/federation_grpc_federation.pb.go",
    "chars": 44571,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/08_literal/go.mod",
    "chars": 1685,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/google/go-cmp v0."
  },
  {
    "path": "_examples/08_literal/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/08_literal/main_test.go",
    "chars": 6355,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com"
  },
  {
    "path": "_examples/08_literal/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/08_literal/proto/content/content.proto",
    "chars": 3459,
    "preview": "syntax = \"proto3\";\n\npackage content;\n\noption go_package = \"example/content;content\";\n\nservice ContentService {\n  rpc Get"
  },
  {
    "path": "_examples/08_literal/proto/federation/federation.proto",
    "chars": 4759,
    "preview": "syntax = \"proto3\";\n\npackage org.federation;\n\nimport \"grpc/federation/federation.proto\";\n\noption go_package = \"example/fe"
  },
  {
    "path": "_examples/09_multi_user/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/09_multi_user/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/09_multi_user/buf.gen.yaml",
    "chars": 266,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/09_multi_user/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/09_multi_user/federation/federation.pb.go",
    "chars": 14986,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/09_multi_user/federation/federation_grpc.pb.go",
    "chars": 3909,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/09_multi_user/federation/federation_grpc_federation.pb.go",
    "chars": 26550,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/09_multi_user/go.mod",
    "chars": 1685,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/google/go-cmp v0."
  },
  {
    "path": "_examples/09_multi_user/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/09_multi_user/grpc/federation/federation.pb.go",
    "chars": 211139,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/09_multi_user/main_test.go",
    "chars": 3786,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com"
  },
  {
    "path": "_examples/09_multi_user/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/09_multi_user/proto/federation/federation.proto",
    "chars": 1397,
    "preview": "syntax = \"proto3\";\n\npackage org.federation;\n\nimport \"grpc/federation/federation.proto\";\n\noption go_package = \"example/fe"
  },
  {
    "path": "_examples/09_multi_user/proto/user/user.proto",
    "chars": 306,
    "preview": "syntax = \"proto3\";\n\npackage user;\n\noption go_package = \"example/user;user\";\n\nservice UserService {\n  rpc GetUser(GetUser"
  },
  {
    "path": "_examples/09_multi_user/user/user.pb.go",
    "chars": 8792,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/09_multi_user/user/user_grpc.pb.go",
    "chars": 3731,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/10_oneof/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/10_oneof/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/10_oneof/buf.gen.yaml",
    "chars": 266,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/10_oneof/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/10_oneof/federation/federation.pb.go",
    "chars": 44202,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/10_oneof/federation/federation_grpc.pb.go",
    "chars": 5490,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/10_oneof/federation/federation_grpc_federation.pb.go",
    "chars": 60198,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/10_oneof/go.mod",
    "chars": 1685,
    "preview": "module example\n\ngo 1.24.0\n\nreplace github.com/mercari/grpc-federation => ../../\n\nrequire (\n\tgithub.com/google/go-cmp v0."
  },
  {
    "path": "_examples/10_oneof/go.sum",
    "chars": 7375,
    "preview": "cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=\ncel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxx"
  },
  {
    "path": "_examples/10_oneof/grpc/federation/federation.pb.go",
    "chars": 211139,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/10_oneof/main_test.go",
    "chars": 5649,
    "preview": "package main_test\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com"
  },
  {
    "path": "_examples/10_oneof/proto/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "_examples/10_oneof/proto/federation/federation.proto",
    "chars": 4544,
    "preview": "syntax = \"proto3\";\n\npackage org.federation;\n\nimport \"grpc/federation/federation.proto\";\n\noption go_package = \"example/fe"
  },
  {
    "path": "_examples/10_oneof/proto/user/user.proto",
    "chars": 440,
    "preview": "syntax = \"proto3\";\n\npackage user;\n\noption go_package = \"example/user;user\";\n\nservice UserService {\n  rpc GetUser(GetUser"
  },
  {
    "path": "_examples/10_oneof/user/user.pb.go",
    "chars": 11684,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/10_oneof/user/user_grpc.pb.go",
    "chars": 3731,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/11_multi_service/.gitignore",
    "chars": 16,
    "preview": "grpc/federation\n"
  },
  {
    "path": "_examples/11_multi_service/Makefile",
    "chars": 866,
    "preview": "MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))\nGOBIN := $(MAKEFILE_DIR)/../../bin\nPATH := $(GOBIN):$(PATH)\n\nJAEGER_"
  },
  {
    "path": "_examples/11_multi_service/buf.gen.yaml",
    "chars": 266,
    "preview": "version: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: go\n    out: .\n    opt: paths=source_relative\n  - plugin: go-gr"
  },
  {
    "path": "_examples/11_multi_service/buf.work.yaml",
    "chars": 50,
    "preview": "version: v1\ndirectories:\n  - proto\n  - proto_deps\n"
  },
  {
    "path": "_examples/11_multi_service/comment/comment.pb.go",
    "chars": 4650,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/11_multi_service/favorite/favorite.pb.go",
    "chars": 5234,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/11_multi_service/federation/federation.pb.go",
    "chars": 38943,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/11_multi_service/federation/federation_grpc.pb.go",
    "chars": 13609,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/11_multi_service/federation/federation_grpc_federation.pb.go",
    "chars": 104083,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/11_multi_service/federation/other.pb.go",
    "chars": 8231,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  },
  {
    "path": "_examples/11_multi_service/federation/other_grpc.pb.go",
    "chars": 3701,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc           "
  },
  {
    "path": "_examples/11_multi_service/federation/other_grpc_federation.pb.go",
    "chars": 28036,
    "preview": "// Code generated by protoc-gen-grpc-federation. DO NOT EDIT!\n// versions:\n//\n//\tprotoc-gen-grpc-federation: (devel)\n//\n"
  },
  {
    "path": "_examples/11_multi_service/federation/ping.pb.go",
    "chars": 8474,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.33.0\n// \tprotoc        (unknown)\n// s"
  }
]

// ... and 614 more files (download for full content)

About this extraction

This page contains the full source code of the mercari/grpc-federation GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 814 files (8.1 MB), approximately 2.2M tokens, and a symbol index with 16463 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!