From 9b41ba7fb5ecf2316806010d6f2352a082e19d30 Mon Sep 17 00:00:00 2001 From: Hanjun Kim Date: Wed, 7 Apr 2021 19:31:39 +0900 Subject: [PATCH] Use Docker to generate swagger files (#9064) * use docker for proto-swagger-gen fixes #7933 * fix deprecated commands and flags see https://docs.buf.build/faq/ for detail * run proto-gen and proto-swagger-gen * add changelog entry --- CHANGELOG.md | 1 + Makefile | 6 +- client/docs/swagger-ui/swagger.yaml | 92 +++++++++++ contrib/devtools/dockerfile | 6 + docs/core/proto-docs.md | 6 + .../grpc/reflection/v2alpha1/reflection.pb.go | 152 +++++++++--------- 6 files changed, 184 insertions(+), 79 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99dff3b43adc..661d3f2ddd15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -100,6 +100,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (types) [\#8962](https://github.com/cosmos/cosmos-sdk/issues/8962) Add `Abs()` method to `sdk.Int`. * (x/bank) [\#8950](https://github.com/cosmos/cosmos-sdk/pull/8950) Improve efficiency on supply updates. * (store) [\#8012](https://github.com/cosmos/cosmos-sdk/pull/8012) Implementation of ADR-038 WriteListener and listen.KVStore +* (makefile) [\#7933](https://github.com/cosmos/cosmos-sdk/issues/7933) Use Docker to generate swagger files. ### Bug Fixes diff --git a/Makefile b/Makefile index d7b8a1fa8cfd..a26681ea8e5f 100644 --- a/Makefile +++ b/Makefile @@ -386,13 +386,13 @@ proto-gen-any: $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen sh ./scripts/protocgen-any.sh proto-swagger-gen: - @./scripts/protoc-swagger-gen.sh + $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen sh ./scripts/protoc-swagger-gen.sh proto-lint: - @$(DOCKER_BUF) check lint --error-format=json + @$(DOCKER_BUF) lint --error-format=json proto-check-breaking: - @$(DOCKER_BUF) check breaking --against-input $(HTTPS_GIT)#branch=master + @$(DOCKER_BUF) breaking --against $(HTTPS_GIT)#branch=master TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.0-rc6/proto/tendermint GOGO_PROTO_URL = https://raw.githubusercontent.com/regen-network/protobuf/cosmos diff --git a/client/docs/swagger-ui/swagger.yaml b/client/docs/swagger-ui/swagger.yaml index 0a96bc1d791e..1fbc6279ee6a 100644 --- a/client/docs/swagger-ui/swagger.yaml +++ b/client/docs/swagger-ui/swagger.yaml @@ -6265,6 +6265,24 @@ paths: signatures required by gogoproto. title: supply is the supply of the coins + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise title: >- QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC @@ -6292,6 +6310,62 @@ paths: value: type: string format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query '/cosmos/bank/v1beta1/supply/{denom}': @@ -24029,6 +24103,24 @@ definitions: NOTE: The amount field is an Int which implements the custom method signatures required by gogoproto. title: supply is the supply of the coins + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise title: >- QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC diff --git a/contrib/devtools/dockerfile b/contrib/devtools/dockerfile index 565e66ea330f..10be41345386 100644 --- a/contrib/devtools/dockerfile +++ b/contrib/devtools/dockerfile @@ -18,4 +18,10 @@ RUN GO111MODULE=on go get \ RUN GO111MODULE=on go get -u github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc +RUN apk add --no-cache \ + nodejs \ + npm + +RUN npm install -g swagger-combine + COPY --from=BUILDER /usr/local/bin /usr/local/bin diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 22e023eecb1d..219c8bf9d4d9 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -1871,6 +1871,11 @@ QueryTotalSupplyRequest is the request type for the Query/TotalSupply RPC method. +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | + + @@ -1885,6 +1890,7 @@ method | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `supply` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | supply is the supply of the coins | +| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | diff --git a/server/grpc/reflection/v2alpha1/reflection.pb.go b/server/grpc/reflection/v2alpha1/reflection.pb.go index 338d9ce23c30..abe503b34403 100644 --- a/server/grpc/reflection/v2alpha1/reflection.pb.go +++ b/server/grpc/reflection/v2alpha1/reflection.pb.go @@ -1466,85 +1466,85 @@ func init() { } var fileDescriptor_15c91f0b8d6bf3d0 = []byte{ - // 1245 bytes of a gzipped FileDescriptorProto + // 1243 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcf, 0x6f, 0x1b, 0xc5, 0x17, 0xcf, 0xda, 0xf9, 0xf9, 0xd2, 0xc4, 0xed, 0x7c, 0x9b, 0xc4, 0x75, 0xfb, 0x75, 0xdb, 0x8d, - 0x84, 0x82, 0x50, 0xed, 0x26, 0x0d, 0x69, 0x05, 0x2d, 0x91, 0xd3, 0xd0, 0x12, 0x89, 0xa0, 0xe0, - 0xa4, 0xa2, 0x20, 0xd4, 0xd5, 0x7a, 0x77, 0xbc, 0x1e, 0xe1, 0xfd, 0x91, 0x9d, 0xdd, 0xe0, 0x5c, + 0x84, 0x82, 0x50, 0xed, 0x26, 0x0d, 0x69, 0x05, 0x29, 0x95, 0xd3, 0xd0, 0x12, 0x89, 0xa0, 0xe0, + 0xa4, 0x50, 0x21, 0xd4, 0xd5, 0x7a, 0x77, 0xbc, 0x1e, 0xe1, 0xfd, 0x91, 0x9d, 0xdd, 0xe0, 0x5c, 0x39, 0x70, 0x06, 0xf1, 0x27, 0x70, 0xe0, 0xce, 0x9d, 0x3b, 0x82, 0x4b, 0x25, 0x2e, 0x1c, 0x51, - 0x82, 0xc4, 0x01, 0xfe, 0x08, 0x34, 0x3f, 0xd6, 0x5e, 0x6f, 0xd6, 0xf6, 0x26, 0xe1, 0xd4, 0xce, - 0xbc, 0xcf, 0xfb, 0xbc, 0xcf, 0x9b, 0x99, 0xbc, 0xf7, 0xd6, 0x70, 0xdf, 0x70, 0xa9, 0xed, 0xd2, - 0x6a, 0x43, 0xa7, 0xb8, 0xea, 0xe3, 0x66, 0x1b, 0x1b, 0x01, 0x71, 0x9d, 0xea, 0xd1, 0x9a, 0xde, - 0xf6, 0x5a, 0xfa, 0x6a, 0x6c, 0xaf, 0xe2, 0xf9, 0x6e, 0xe0, 0xa2, 0xdb, 0xc2, 0xa3, 0xc2, 0x3c, - 0x2a, 0x31, 0x6b, 0xe4, 0x51, 0xba, 0x65, 0xb9, 0xae, 0xd5, 0xc6, 0x55, 0xdd, 0x23, 0x55, 0xdd, - 0x71, 0xdc, 0x40, 0x67, 0x76, 0x2a, 0xdc, 0xd5, 0xbf, 0xf2, 0x30, 0x57, 0xf3, 0xbc, 0x6d, 0x4c, - 0x0d, 0x9f, 0x78, 0x81, 0xeb, 0xa3, 0x67, 0x30, 0xa1, 0x87, 0x41, 0xcb, 0x29, 0x2a, 0x77, 0x94, - 0x95, 0xd9, 0xb5, 0xfb, 0x95, 0x11, 0x01, 0x2a, 0x35, 0x86, 0xee, 0x11, 0xd4, 0x85, 0x3b, 0xe3, - 0x31, 0x5a, 0x3a, 0x71, 0x8a, 0xb9, 0x8c, 0x3c, 0x4f, 0x19, 0x3a, 0xce, 0xc3, 0xdd, 0x39, 0x8f, - 0x6b, 0x62, 0xa3, 0x98, 0xcf, 0xca, 0xc3, 0xd0, 0x7d, 0x3c, 0x6c, 0x03, 0xbd, 0x82, 0x39, 0xc3, - 0x75, 0x9a, 0xc4, 0x0a, 0x7d, 0x7e, 0x02, 0xc5, 0x71, 0xce, 0xf7, 0x28, 0x03, 0x5f, 0xcc, 0x2b, - 0xc6, 0xdb, 0x4f, 0x87, 0x34, 0x98, 0x3f, 0x0c, 0xb1, 0x7f, 0xac, 0x51, 0xec, 0x1f, 0x11, 0x03, - 0xd3, 0xe2, 0x44, 0xc6, 0x00, 0x1f, 0x33, 0xb7, 0x7d, 0xe9, 0x15, 0x0f, 0x70, 0x18, 0x37, 0xa0, - 0x27, 0x90, 0x0b, 0x3a, 0xc5, 0x49, 0x4e, 0x7a, 0x6f, 0x24, 0xe9, 0x41, 0x27, 0xc6, 0x94, 0x0b, - 0x3a, 0xaa, 0x03, 0x57, 0xe2, 0x7b, 0xa8, 0x04, 0xd3, 0xcd, 0xb0, 0xdd, 0x76, 0x74, 0x1b, 0xf3, - 0xab, 0x9e, 0xa9, 0x77, 0xd7, 0x68, 0x0b, 0xc6, 0x6d, 0x6a, 0xd1, 0x62, 0xee, 0x4e, 0x7e, 0x65, - 0x76, 0xad, 0x32, 0x32, 0xd8, 0x2e, 0xb5, 0x62, 0xd1, 0xb8, 0xaf, 0xda, 0x82, 0x42, 0xe2, 0x65, - 0xa0, 0x17, 0x00, 0x94, 0x58, 0x8e, 0x66, 0xbb, 0x26, 0xa6, 0x45, 0x85, 0x93, 0x6f, 0x8c, 0x24, - 0xdf, 0x27, 0x96, 0x43, 0x1c, 0x6b, 0xd7, 0x35, 0x71, 0x2c, 0xc8, 0x0c, 0x63, 0x62, 0x7b, 0x54, - 0xfd, 0x56, 0x81, 0x85, 0x54, 0x10, 0x42, 0x30, 0x1e, 0xcb, 0x8f, 0xff, 0x1f, 0x2d, 0xc2, 0xa4, - 0x13, 0xda, 0x0d, 0xec, 0xf3, 0x87, 0x39, 0x51, 0x97, 0x2b, 0xf4, 0x21, 0x2c, 0xf3, 0x87, 0xab, - 0x11, 0xa7, 0xe9, 0x6a, 0x9e, 0xef, 0x1e, 0x11, 0x13, 0xfb, 0x9a, 0x8d, 0x83, 0x96, 0x6b, 0x6a, - 0xdd, 0xa3, 0xca, 0x73, 0xaa, 0xdb, 0x1c, 0xba, 0xe3, 0x34, 0xdd, 0x3d, 0x09, 0xdc, 0xe5, 0xb8, - 0x67, 0x12, 0xa6, 0xde, 0x85, 0x42, 0xe2, 0x3d, 0xa3, 0x79, 0xc8, 0x11, 0x53, 0x4a, 0xc9, 0x11, - 0x53, 0xb5, 0xa0, 0x90, 0x78, 0xaa, 0xe8, 0x00, 0x80, 0x38, 0x01, 0xf6, 0x9b, 0xba, 0xd1, 0x3d, - 0xa0, 0xf5, 0x91, 0x07, 0xb4, 0x13, 0xb9, 0xc4, 0x8e, 0x27, 0xc6, 0xa3, 0xfe, 0x98, 0x83, 0xff, - 0xa5, 0x60, 0x86, 0xbe, 0x80, 0xaf, 0x15, 0xb8, 0xd5, 0xa5, 0xd0, 0x74, 0xc3, 0xc0, 0x5e, 0x40, - 0x1c, 0x4b, 0xb3, 0x31, 0xa5, 0xba, 0x85, 0xa3, 0xa7, 0xb1, 0x9d, 0x5d, 0x5c, 0x2d, 0xe2, 0xd8, - 0x15, 0x14, 0x31, 0xb1, 0x25, 0x32, 0x08, 0x44, 0xd1, 0x11, 0x2c, 0xf6, 0x74, 0x10, 0xdb, 0x6b, - 0x63, 0x1b, 0xb3, 0x35, 0x2d, 0xe6, 0xb9, 0x82, 0xcd, 0xec, 0x0a, 0x76, 0x7a, 0xde, 0xb1, 0xe0, - 0x0b, 0x24, 0xc5, 0x4e, 0xd5, 0x4f, 0xa0, 0x3c, 0xdc, 0x71, 0xe8, 0xf1, 0xdd, 0x80, 0xe9, 0xe0, - 0xd8, 0xc3, 0x5a, 0xe8, 0xb7, 0xf9, 0x33, 0x9b, 0xa9, 0x4f, 0xb1, 0xf5, 0x0b, 0xbf, 0xad, 0x7e, - 0x09, 0xcb, 0x19, 0xce, 0x64, 0x28, 0xfb, 0x3a, 0x2c, 0x36, 0x09, 0x6e, 0x9b, 0x9a, 0xd9, 0xc5, - 0x6b, 0xcc, 0x20, 0x6e, 0x65, 0xa6, 0x7e, 0x9d, 0x5b, 0x7b, 0x64, 0x1f, 0x31, 0x9b, 0xfa, 0x39, - 0x2c, 0x0d, 0x28, 0x65, 0xa8, 0x06, 0xff, 0x6f, 0x60, 0xa3, 0xf5, 0x60, 0x8d, 0xdd, 0xb4, 0x1b, - 0x3a, 0x81, 0xa6, 0x9b, 0xa6, 0x8f, 0x29, 0xd5, 0x3c, 0x1f, 0x37, 0x49, 0x47, 0x2a, 0x28, 0x09, - 0x50, 0x4d, 0x60, 0x6a, 0x02, 0xb2, 0xc7, 0x11, 0xaa, 0x07, 0x73, 0x7d, 0x55, 0x00, 0xbd, 0x84, - 0x59, 0x59, 0x09, 0x35, 0x9b, 0x5a, 0xb2, 0x9b, 0xbc, 0x3d, 0xfa, 0xaf, 0x5d, 0xf8, 0xf4, 0x71, - 0x7d, 0x30, 0x56, 0x07, 0xda, 0xdd, 0xdf, 0x9a, 0x80, 0xbc, 0x4d, 0x2d, 0xf5, 0x27, 0x05, 0xae, - 0xa7, 0xa1, 0xd1, 0x9b, 0x70, 0xd5, 0xc7, 0x87, 0x21, 0xa6, 0x81, 0x96, 0x38, 0xc2, 0x82, 0xdc, - 0x8f, 0xfe, 0x4c, 0xd1, 0x32, 0xcc, 0x45, 0x50, 0xdf, 0x0d, 0x03, 0x2c, 0x2f, 0xeb, 0x8a, 0xdc, - 0xac, 0xb3, 0x3d, 0xb4, 0xd2, 0xe3, 0xeb, 0x5e, 0xaa, 0x28, 0x03, 0xf3, 0x72, 0xff, 0x40, 0xdc, - 0x2d, 0x7a, 0x0b, 0xae, 0xf9, 0x98, 0x7a, 0xae, 0x43, 0x71, 0x2f, 0xf4, 0x38, 0x87, 0x5e, 0x8d, - 0x0c, 0xdd, 0x12, 0x71, 0x13, 0x6e, 0x3c, 0xc7, 0x41, 0xb2, 0x7b, 0x0a, 0x42, 0xd5, 0x84, 0x52, - 0x9a, 0x51, 0x50, 0xfc, 0x57, 0x3d, 0x5a, 0x4a, 0x48, 0x36, 0xde, 0x3e, 0x09, 0x67, 0x8c, 0x3d, - 0x09, 0xa2, 0xbd, 0x2b, 0x97, 0x6a, 0xef, 0x91, 0x84, 0x44, 0xcf, 0xee, 0x97, 0x90, 0x34, 0xc6, - 0x24, 0xf0, 0xc9, 0x40, 0xb9, 0xd4, 0x64, 0xa0, 0x2e, 0xc3, 0x5d, 0x1e, 0x25, 0xbd, 0xcd, 0x4b, - 0x29, 0x47, 0xa0, 0x0e, 0x03, 0x49, 0x49, 0x7b, 0x30, 0x29, 0xa6, 0x02, 0xa9, 0xe9, 0xe2, 0xd3, - 0x85, 0xe4, 0x91, 0xe2, 0x06, 0x8d, 0x08, 0x52, 0x5c, 0x87, 0x8b, 0x1b, 0x08, 0x92, 0xe2, 0xea, - 0x30, 0xc5, 0x26, 0x0a, 0xc2, 0x5b, 0xcb, 0xe5, 0x46, 0x93, 0x88, 0x48, 0x2d, 0xc2, 0xe2, 0x73, - 0x1c, 0xf4, 0x0d, 0x1b, 0x52, 0xd3, 0x4b, 0x58, 0x3a, 0x63, 0x91, 0x42, 0xc4, 0x24, 0xa3, 0x5c, - 0x74, 0x92, 0x39, 0x86, 0xa5, 0x01, 0xba, 0xd0, 0xab, 0x33, 0x43, 0x98, 0x68, 0xa2, 0x0f, 0xcf, - 0x95, 0xe9, 0xc0, 0x19, 0x4c, 0xfd, 0x5e, 0x81, 0xc5, 0x74, 0xe4, 0xd0, 0x82, 0x7d, 0x13, 0x66, - 0x08, 0x65, 0x63, 0x4f, 0xd8, 0x16, 0x25, 0x66, 0xba, 0x3e, 0x4d, 0xe8, 0x2e, 0x5f, 0xa3, 0x3d, - 0x98, 0x12, 0x43, 0x46, 0xd4, 0xd2, 0x36, 0xb2, 0x89, 0x15, 0x13, 0x47, 0xfc, 0x52, 0x24, 0x8d, - 0xba, 0x0f, 0x0b, 0xa9, 0x88, 0xd4, 0x79, 0xe8, 0x0d, 0x28, 0x30, 0x9d, 0x9a, 0x38, 0x37, 0x4f, - 0x0f, 0x5a, 0xb2, 0x08, 0xce, 0xb1, 0x6d, 0xce, 0xb3, 0xa7, 0x07, 0xad, 0xb5, 0x1f, 0x00, 0xae, - 0xd5, 0xbb, 0x5a, 0x64, 0xfe, 0xe8, 0x57, 0x05, 0xd0, 0xd9, 0x42, 0x85, 0xde, 0x19, 0x99, 0xc2, - 0xc0, 0xd2, 0x57, 0x7a, 0xf7, 0x42, 0xbe, 0xe2, 0x69, 0xa9, 0x8f, 0xbf, 0xfa, 0xed, 0xcf, 0xef, - 0x72, 0x1b, 0x68, 0xbd, 0x3a, 0xe8, 0x4b, 0x6a, 0xb5, 0x81, 0x03, 0x7d, 0xb5, 0xaa, 0x7b, 0x5e, - 0xac, 0x7d, 0x56, 0xc5, 0x37, 0x8b, 0xcc, 0x26, 0x39, 0xb9, 0x65, 0xca, 0x26, 0xbd, 0x8a, 0x66, - 0xcb, 0x66, 0x40, 0x91, 0xbd, 0x70, 0x36, 0xe2, 0xcb, 0x29, 0xca, 0x26, 0x31, 0x64, 0x66, 0xcb, - 0x26, 0xb5, 0x20, 0x67, 0xcc, 0x26, 0xbd, 0x5e, 0x5f, 0x3c, 0x1b, 0xfe, 0xfd, 0xf6, 0xb7, 0x22, - 0x9b, 0x41, 0xfa, 0x08, 0xb3, 0x95, 0x4d, 0xd9, 0xb0, 0x1a, 0x5f, 0x7a, 0x7a, 0x29, 0x0e, 0x99, - 0xe5, 0x36, 0xcf, 0xf2, 0x3d, 0xf4, 0xf8, 0xdc, 0x59, 0xc6, 0xbf, 0x26, 0xff, 0x11, 0xd9, 0x0e, - 0xaa, 0x73, 0x99, 0xb2, 0x1d, 0xde, 0x34, 0xb2, 0x65, 0x3b, 0xa2, 0xa7, 0xa8, 0xef, 0xf3, 0x6c, - 0x37, 0xd1, 0x93, 0x73, 0x66, 0xdb, 0x5f, 0xa5, 0xd1, 0x2f, 0x0a, 0x14, 0x12, 0xdd, 0x02, 0x3d, - 0xcc, 0xa2, 0x2f, 0xa5, 0xf3, 0x94, 0x1e, 0x9d, 0xdf, 0xf1, 0x92, 0x77, 0x17, 0x74, 0x62, 0xab, - 0xad, 0x4f, 0x7f, 0x3e, 0x29, 0x2b, 0xaf, 0x4f, 0xca, 0xca, 0x1f, 0x27, 0x65, 0xe5, 0x9b, 0xd3, - 0xf2, 0xd8, 0xeb, 0xd3, 0xf2, 0xd8, 0xef, 0xa7, 0xe5, 0xb1, 0xcf, 0x36, 0x2d, 0x12, 0xb4, 0xc2, - 0x46, 0xc5, 0x70, 0xed, 0x28, 0x82, 0xf8, 0xe7, 0x1e, 0x35, 0xbf, 0xa8, 0xb2, 0xd3, 0xc0, 0x7e, - 0xd5, 0xf2, 0x3d, 0x83, 0x05, 0x48, 0xf9, 0xf9, 0xa7, 0x31, 0xc9, 0x7f, 0xb5, 0x79, 0xf0, 0x6f, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xdd, 0xd8, 0x11, 0x28, 0x12, 0x00, 0x00, + 0x82, 0xc4, 0x01, 0xfe, 0x08, 0xb4, 0x33, 0xb3, 0xf6, 0x78, 0xb3, 0xb6, 0x37, 0x09, 0xa7, 0x64, + 0xe6, 0x7d, 0xde, 0x67, 0x3e, 0x6f, 0x66, 0xfc, 0xde, 0x9b, 0x85, 0xfb, 0x86, 0x4b, 0x6d, 0x97, + 0x56, 0x1b, 0x3a, 0xc5, 0x55, 0x1f, 0x37, 0xdb, 0xd8, 0x08, 0x88, 0xeb, 0x54, 0x8f, 0xd6, 0xf4, + 0xb6, 0xd7, 0xd2, 0x57, 0xa5, 0xb9, 0x8a, 0xe7, 0xbb, 0x81, 0x8b, 0x6e, 0x73, 0x8f, 0x4a, 0xe4, + 0x51, 0x91, 0xac, 0xb1, 0x47, 0xe9, 0x96, 0xe5, 0xba, 0x56, 0x1b, 0x57, 0x75, 0x8f, 0x54, 0x75, + 0xc7, 0x71, 0x03, 0x3d, 0xb2, 0x53, 0xee, 0xae, 0xfe, 0x95, 0x87, 0xb9, 0x9a, 0xe7, 0x6d, 0x63, + 0x6a, 0xf8, 0xc4, 0x0b, 0x5c, 0x1f, 0x3d, 0x83, 0x09, 0x3d, 0x0c, 0x5a, 0x4e, 0x51, 0xb9, 0xa3, + 0xac, 0xcc, 0xae, 0xdd, 0xaf, 0x8c, 0x58, 0xa0, 0x52, 0x8b, 0xd0, 0x3d, 0x82, 0x3a, 0x77, 0x8f, + 0x78, 0x8c, 0x96, 0x4e, 0x9c, 0x62, 0x2e, 0x23, 0xcf, 0xd3, 0x08, 0x2d, 0xf3, 0x30, 0x77, 0xc6, + 0xe3, 0x9a, 0xd8, 0x28, 0xe6, 0xb3, 0xf2, 0x44, 0xe8, 0x3e, 0x9e, 0x68, 0x02, 0xbd, 0x82, 0x39, + 0xc3, 0x75, 0x9a, 0xc4, 0x0a, 0x7d, 0xb6, 0x03, 0xc5, 0x71, 0xc6, 0xf7, 0x28, 0x03, 0x9f, 0xe4, + 0x25, 0xf1, 0xf6, 0xd3, 0x21, 0x0d, 0xe6, 0x0f, 0x43, 0xec, 0x1f, 0x6b, 0x14, 0xfb, 0x47, 0xc4, + 0xc0, 0xb4, 0x38, 0x91, 0x71, 0x81, 0x8f, 0x23, 0xb7, 0x7d, 0xe1, 0x25, 0x2f, 0x70, 0x28, 0x1b, + 0xd0, 0x63, 0xc8, 0x05, 0x9d, 0xe2, 0x24, 0x23, 0xbd, 0x37, 0x92, 0xf4, 0xa0, 0x23, 0x31, 0xe5, + 0x82, 0x8e, 0xea, 0xc0, 0x15, 0x79, 0x0e, 0x95, 0x60, 0xba, 0x19, 0xb6, 0xdb, 0x8e, 0x6e, 0x63, + 0x76, 0xd4, 0x33, 0xf5, 0xee, 0x18, 0x6d, 0xc1, 0xb8, 0x4d, 0x2d, 0x5a, 0xcc, 0xdd, 0xc9, 0xaf, + 0xcc, 0xae, 0x55, 0x46, 0x2e, 0xb6, 0x4b, 0x2d, 0x69, 0x35, 0xe6, 0xab, 0xb6, 0xa0, 0x90, 0xb8, + 0x19, 0xe8, 0x05, 0x00, 0x25, 0x96, 0xa3, 0xd9, 0xae, 0x89, 0x69, 0x51, 0x61, 0xe4, 0x1b, 0x23, + 0xc9, 0xf7, 0x89, 0xe5, 0x10, 0xc7, 0xda, 0x75, 0x4d, 0x2c, 0x2d, 0x32, 0x13, 0x31, 0x45, 0x73, + 0x54, 0xfd, 0x56, 0x81, 0x85, 0x54, 0x10, 0x42, 0x30, 0x2e, 0xc5, 0xc7, 0xfe, 0x47, 0x8b, 0x30, + 0xe9, 0x84, 0x76, 0x03, 0xfb, 0xec, 0x62, 0x4e, 0xd4, 0xc5, 0x08, 0x7d, 0x08, 0xcb, 0xec, 0xe2, + 0x6a, 0xc4, 0x69, 0xba, 0x9a, 0xe7, 0xbb, 0x47, 0xc4, 0xc4, 0xbe, 0x66, 0xe3, 0xa0, 0xe5, 0x9a, + 0x5a, 0x77, 0xab, 0xf2, 0x8c, 0xea, 0x36, 0x83, 0xee, 0x38, 0x4d, 0x77, 0x4f, 0x00, 0x77, 0x19, + 0xee, 0x99, 0x80, 0xa9, 0x77, 0xa1, 0x90, 0xb8, 0xcf, 0x68, 0x1e, 0x72, 0xc4, 0x14, 0x52, 0x72, + 0xc4, 0x54, 0x2d, 0x28, 0x24, 0xae, 0x2a, 0x3a, 0x00, 0x20, 0x4e, 0x80, 0xfd, 0xa6, 0x6e, 0x74, + 0x37, 0x68, 0x7d, 0xe4, 0x06, 0xed, 0xc4, 0x2e, 0xd2, 0xf6, 0x48, 0x3c, 0xea, 0x8f, 0x39, 0xf8, + 0x5f, 0x0a, 0x66, 0xe8, 0x0d, 0xf8, 0x5a, 0x81, 0x5b, 0x5d, 0x0a, 0x4d, 0x37, 0x0c, 0xec, 0x05, + 0xc4, 0xb1, 0x34, 0x1b, 0x53, 0xaa, 0x5b, 0x38, 0xbe, 0x1a, 0xdb, 0xd9, 0xc5, 0xd5, 0x62, 0x8e, + 0x5d, 0x4e, 0x21, 0x89, 0x2d, 0x91, 0x41, 0x20, 0x8a, 0x8e, 0x60, 0xb1, 0xa7, 0x83, 0xd8, 0x5e, + 0x1b, 0xdb, 0x38, 0x1a, 0xd3, 0x62, 0x9e, 0x29, 0x78, 0x92, 0x5d, 0xc1, 0x4e, 0xcf, 0x5b, 0x5a, + 0x7c, 0x81, 0xa4, 0xd8, 0xa9, 0xfa, 0x29, 0x94, 0x87, 0x3b, 0x0e, 0xdd, 0xbe, 0x1b, 0x30, 0x1d, + 0x1c, 0x7b, 0x58, 0x0b, 0xfd, 0x36, 0xbb, 0x66, 0x33, 0xf5, 0xa9, 0x68, 0xfc, 0xc2, 0x6f, 0xab, + 0x5f, 0xc2, 0x72, 0x86, 0x3d, 0x19, 0xca, 0xbe, 0x0e, 0x8b, 0x4d, 0x82, 0xdb, 0xa6, 0x66, 0x76, + 0xf1, 0x5a, 0x64, 0xe0, 0xa7, 0x32, 0x53, 0xbf, 0xce, 0xac, 0x3d, 0xb2, 0x8f, 0x22, 0x9b, 0xfa, + 0x39, 0x2c, 0x0d, 0x48, 0x65, 0xa8, 0x06, 0xff, 0x6f, 0x60, 0xa3, 0xf5, 0x60, 0x2d, 0x3a, 0x69, + 0x37, 0x74, 0x02, 0x4d, 0x37, 0x4d, 0x1f, 0x53, 0xaa, 0x79, 0x3e, 0x6e, 0x92, 0x8e, 0x50, 0x50, + 0xe2, 0xa0, 0x1a, 0xc7, 0xd4, 0x38, 0x64, 0x8f, 0x21, 0x54, 0x0f, 0xe6, 0xfa, 0xb2, 0x00, 0x7a, + 0x09, 0xb3, 0x22, 0x13, 0x6a, 0x36, 0xb5, 0x44, 0x35, 0x79, 0x7b, 0xf4, 0xaf, 0x9d, 0xfb, 0xf4, + 0x71, 0x7d, 0x30, 0x56, 0x07, 0xda, 0x9d, 0xdf, 0x9a, 0x80, 0xbc, 0x4d, 0x2d, 0xf5, 0x27, 0x05, + 0xae, 0xa7, 0xa1, 0xd1, 0x9b, 0x70, 0xd5, 0xc7, 0x87, 0x21, 0xa6, 0x81, 0x96, 0xd8, 0xc2, 0x82, + 0x98, 0x8f, 0x7f, 0xa6, 0x68, 0x19, 0xe6, 0x62, 0xa8, 0xef, 0x86, 0x01, 0x16, 0x87, 0x75, 0x45, + 0x4c, 0xd6, 0xa3, 0x39, 0xb4, 0xd2, 0xe3, 0xeb, 0x1e, 0x2a, 0x4f, 0x03, 0xf3, 0x62, 0xfe, 0x80, + 0x9f, 0x2d, 0x7a, 0x0b, 0xae, 0xf9, 0x98, 0x7a, 0xae, 0x43, 0x71, 0x6f, 0xe9, 0x71, 0x06, 0xbd, + 0x1a, 0x1b, 0xba, 0x29, 0xe2, 0x26, 0xdc, 0x78, 0x8e, 0x83, 0x64, 0xf5, 0xe4, 0x84, 0xaa, 0x09, + 0xa5, 0x34, 0x23, 0xa7, 0xf8, 0xaf, 0x6a, 0xb4, 0x90, 0x90, 0x2c, 0xbc, 0x7d, 0x12, 0xce, 0x18, + 0x7b, 0x12, 0x78, 0x79, 0x57, 0x2e, 0x55, 0xde, 0x63, 0x09, 0x89, 0x9a, 0xdd, 0x2f, 0x21, 0x69, + 0x94, 0x24, 0xb0, 0xce, 0x40, 0xb9, 0x54, 0x67, 0xa0, 0x2e, 0xc3, 0x5d, 0xb6, 0x4a, 0x7a, 0x99, + 0x17, 0x52, 0x8e, 0x40, 0x1d, 0x06, 0x12, 0x92, 0xf6, 0x60, 0x92, 0x77, 0x05, 0x42, 0xd3, 0xc5, + 0xbb, 0x0b, 0xc1, 0x23, 0xc4, 0x0d, 0x6a, 0x11, 0x84, 0xb8, 0x0e, 0x13, 0x37, 0x10, 0x24, 0xc4, + 0xd5, 0x61, 0x2a, 0xea, 0x28, 0x08, 0x2b, 0x2d, 0x97, 0x6b, 0x4d, 0x62, 0x22, 0xb5, 0x08, 0x8b, + 0xcf, 0x71, 0xd0, 0xd7, 0x6c, 0x08, 0x4d, 0x2f, 0x61, 0xe9, 0x8c, 0x45, 0x08, 0xe1, 0x9d, 0x8c, + 0x72, 0xd1, 0x4e, 0xe6, 0x18, 0x96, 0x06, 0xe8, 0x42, 0xaf, 0xce, 0x34, 0x61, 0xbc, 0x88, 0x3e, + 0x3c, 0x57, 0xa4, 0x03, 0x7b, 0x30, 0xf5, 0x7b, 0x05, 0x16, 0xd3, 0x91, 0x43, 0x13, 0xf6, 0x4d, + 0x98, 0x21, 0x34, 0x6a, 0x7b, 0xc2, 0x36, 0x4f, 0x31, 0xd3, 0xf5, 0x69, 0x42, 0x77, 0xd9, 0x18, + 0xed, 0xc1, 0x14, 0x6f, 0x32, 0xe2, 0x92, 0xb6, 0x91, 0x4d, 0x2c, 0xef, 0x38, 0xe4, 0x43, 0x11, + 0x34, 0xea, 0x3e, 0x2c, 0xa4, 0x22, 0x52, 0xfb, 0xa1, 0x37, 0xa0, 0x10, 0xe9, 0xd4, 0xf8, 0xbe, + 0x79, 0x7a, 0xd0, 0x12, 0x49, 0x70, 0x2e, 0x9a, 0x66, 0x3c, 0x7b, 0x7a, 0xd0, 0x5a, 0xfb, 0x01, + 0xe0, 0x5a, 0xbd, 0xab, 0x45, 0xc4, 0x8f, 0x7e, 0x55, 0x00, 0x9d, 0x4d, 0x54, 0xe8, 0x9d, 0x91, + 0x21, 0x0c, 0x4c, 0x7d, 0xa5, 0x77, 0x2f, 0xe4, 0xcb, 0xaf, 0x96, 0xba, 0xf9, 0xd5, 0x6f, 0x7f, + 0x7e, 0x97, 0xdb, 0x40, 0xeb, 0xd5, 0x41, 0x2f, 0xa9, 0xd5, 0x06, 0x0e, 0xf4, 0xd5, 0xaa, 0xee, + 0x79, 0x52, 0xf9, 0xac, 0xf2, 0x37, 0x8b, 0x88, 0x26, 0xd9, 0xb9, 0x65, 0x8a, 0x26, 0x3d, 0x8b, + 0x66, 0x8b, 0x66, 0x40, 0x92, 0xbd, 0x70, 0x34, 0xfc, 0xe5, 0x14, 0x47, 0x93, 0x68, 0x32, 0xb3, + 0x45, 0x93, 0x9a, 0x90, 0x33, 0x46, 0x93, 0x9e, 0xaf, 0x2f, 0x1e, 0x0d, 0x7b, 0xbf, 0xfd, 0xad, + 0x88, 0x62, 0x90, 0xde, 0xc2, 0x6c, 0x65, 0x53, 0x36, 0x2c, 0xc7, 0x97, 0x9e, 0x5e, 0x8a, 0x43, + 0x44, 0xb9, 0xcd, 0xa2, 0x7c, 0x0f, 0x6d, 0x9e, 0x3b, 0x4a, 0xf9, 0x35, 0xf9, 0x0f, 0x8f, 0x76, + 0x50, 0x9e, 0xcb, 0x14, 0xed, 0xf0, 0xa2, 0x91, 0x2d, 0xda, 0x11, 0x35, 0x45, 0x7d, 0x9f, 0x45, + 0xfb, 0x04, 0x3d, 0x3e, 0x67, 0xb4, 0xfd, 0x59, 0x1a, 0xfd, 0xa2, 0x40, 0x21, 0x51, 0x2d, 0xd0, + 0xc3, 0x2c, 0xfa, 0x52, 0x2a, 0x4f, 0xe9, 0xd1, 0xf9, 0x1d, 0x2f, 0x79, 0x76, 0x41, 0x47, 0x1a, + 0x6d, 0x7d, 0xf2, 0xf3, 0x49, 0x59, 0x79, 0x7d, 0x52, 0x56, 0xfe, 0x38, 0x29, 0x2b, 0xdf, 0x9c, + 0x96, 0xc7, 0x5e, 0x9f, 0x96, 0xc7, 0x7e, 0x3f, 0x2d, 0x8f, 0x7d, 0xb6, 0x69, 0x91, 0xa0, 0x15, + 0x36, 0x2a, 0x86, 0x6b, 0xc7, 0x2b, 0xf0, 0x3f, 0xf7, 0xa8, 0xf9, 0x45, 0x35, 0xda, 0x0d, 0xec, + 0x57, 0x2d, 0xdf, 0x33, 0xd2, 0xbe, 0xfd, 0x34, 0x26, 0xd9, 0x27, 0x9b, 0x07, 0xff, 0x06, 0x00, + 0x00, 0xff, 0xff, 0x52, 0x36, 0x45, 0xcc, 0x25, 0x12, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used.