From d838fbf2b422b54f552be06bad1a998337664e16 Mon Sep 17 00:00:00 2001 From: Russia9 Date: Sat, 16 Apr 2022 19:15:29 +0300 Subject: [PATCH] Init --- .drone.yml | 37 + .gitignore | 63 + Dockerfile | 13 + LICENSE | 674 ++ README.md | 2 + cmd/main/main.go | 170 + go.mod | 26 + go.sum | 96 + internal/utils/common.go | 10 + pkg/domain/user.go | 22 + pkg/message/deal.go | 13 + pkg/message/duel.go | 17 + pkg/message/lot.go | 20 + pkg/message/offer.go | 10 + pkg/message/store.go | 23 + pkg/storage/mongodb/user.go | 52 + .../confluentinc/confluent-kafka-go/LICENSE | 202 + .../confluent-kafka-go/kafka/.gitignore | 2 + .../confluent-kafka-go/kafka/00version.go | 58 + .../confluent-kafka-go/kafka/README.md | 145 + .../confluent-kafka-go/kafka/adminapi.go | 1025 +++ .../confluent-kafka-go/kafka/adminoptions.go | 264 + .../confluent-kafka-go/kafka/api.html | 4737 ++++++++++ .../confluent-kafka-go/kafka/build_darwin.go | 13 + .../confluent-kafka-go/kafka/build_dynamic.go | 9 + .../kafka/build_glibc_linux.go | 13 + .../kafka/build_musl_linux.go | 13 + .../confluent-kafka-go/kafka/build_windows.go | 13 + .../confluent-kafka-go/kafka/config.go | 280 + .../confluent-kafka-go/kafka/consumer.go | 923 ++ .../confluent-kafka-go/kafka/context.go | 31 + .../confluent-kafka-go/kafka/error.go | 154 + .../confluent-kafka-go/kafka/error_gen.go | 112 + .../confluent-kafka-go/kafka/event.go | 316 + .../kafka/generated_errors.go | 337 + .../confluent-kafka-go/kafka/glue_rdkafka.h | 48 + .../confluent-kafka-go/kafka/handle.go | 379 + .../confluent-kafka-go/kafka/header.go | 67 + .../confluent-kafka-go/kafka/kafka.go | 375 + .../kafka/librdkafka_vendor/.gitignore | 3 + .../kafka/librdkafka_vendor/LICENSES.txt | 366 + .../kafka/librdkafka_vendor/README.md | 24 + .../kafka/librdkafka_vendor/bundle-import.sh | 113 + .../kafka/librdkafka_vendor/import.sh | 110 + .../kafka/librdkafka_vendor/librdkafka.go | 21 + .../librdkafka_vendor/librdkafka_darwin.a | Bin 0 -> 9358312 bytes .../librdkafka_glibc_linux.a | Bin 0 -> 11466986 bytes .../librdkafka_vendor/librdkafka_musl_linux.a | Bin 0 -> 11135120 bytes .../librdkafka_vendor/librdkafka_windows.a | Bin 0 -> 10245456 bytes .../kafka/librdkafka_vendor/rdkafka.h | 7781 +++++++++++++++++ .../confluent-kafka-go/kafka/log.go | 89 + .../confluent-kafka-go/kafka/message.go | 223 + .../confluent-kafka-go/kafka/metadata.go | 180 + .../confluent-kafka-go/kafka/misc.go | 35 + .../confluent-kafka-go/kafka/offset.go | 145 + .../confluent-kafka-go/kafka/producer.go | 918 ++ .../confluent-kafka-go/kafka/select_rdkafka.h | 29 + .../kafka/testconf-example.json | 8 + .../confluent-kafka-go/kafka/testhelpers.go | 248 + .../confluent-kafka-go/kafka/time.go | 55 + vendor/github.com/go-stack/stack/LICENSE.md | 21 + vendor/github.com/go-stack/stack/README.md | 38 + vendor/github.com/go-stack/stack/stack.go | 400 + vendor/github.com/golang/snappy/.gitignore | 16 + vendor/github.com/golang/snappy/AUTHORS | 18 + vendor/github.com/golang/snappy/CONTRIBUTORS | 41 + vendor/github.com/golang/snappy/LICENSE | 27 + vendor/github.com/golang/snappy/README | 107 + vendor/github.com/golang/snappy/decode.go | 264 + .../github.com/golang/snappy/decode_amd64.s | 490 ++ .../github.com/golang/snappy/decode_arm64.s | 494 ++ vendor/github.com/golang/snappy/decode_asm.go | 15 + .../github.com/golang/snappy/decode_other.go | 115 + vendor/github.com/golang/snappy/encode.go | 289 + .../github.com/golang/snappy/encode_amd64.s | 730 ++ .../github.com/golang/snappy/encode_arm64.s | 722 ++ vendor/github.com/golang/snappy/encode_asm.go | 30 + .../github.com/golang/snappy/encode_other.go | 238 + vendor/github.com/golang/snappy/snappy.go | 98 + vendor/github.com/google/uuid/.travis.yml | 9 + vendor/github.com/google/uuid/CONTRIBUTING.md | 10 + vendor/github.com/google/uuid/CONTRIBUTORS | 9 + vendor/github.com/google/uuid/LICENSE | 27 + vendor/github.com/google/uuid/README.md | 19 + vendor/github.com/google/uuid/dce.go | 80 + vendor/github.com/google/uuid/doc.go | 12 + vendor/github.com/google/uuid/hash.go | 53 + vendor/github.com/google/uuid/marshal.go | 38 + vendor/github.com/google/uuid/node.go | 90 + vendor/github.com/google/uuid/node_js.go | 12 + vendor/github.com/google/uuid/node_net.go | 33 + vendor/github.com/google/uuid/null.go | 118 + vendor/github.com/google/uuid/sql.go | 59 + vendor/github.com/google/uuid/time.go | 123 + vendor/github.com/google/uuid/util.go | 43 + vendor/github.com/google/uuid/uuid.go | 294 + vendor/github.com/google/uuid/version1.go | 44 + vendor/github.com/google/uuid/version4.go | 76 + .../klauspost/compress/.gitattributes | 2 + .../github.com/klauspost/compress/.gitignore | 25 + .../klauspost/compress/.goreleaser.yml | 141 + vendor/github.com/klauspost/compress/LICENSE | 304 + .../github.com/klauspost/compress/README.md | 489 ++ .../klauspost/compress/compressible.go | 85 + .../klauspost/compress/fse/README.md | 79 + .../klauspost/compress/fse/bitreader.go | 122 + .../klauspost/compress/fse/bitwriter.go | 168 + .../klauspost/compress/fse/bytereader.go | 47 + .../klauspost/compress/fse/compress.go | 683 ++ .../klauspost/compress/fse/decompress.go | 374 + .../github.com/klauspost/compress/fse/fse.go | 144 + vendor/github.com/klauspost/compress/gen.sh | 4 + .../klauspost/compress/huff0/.gitignore | 1 + .../klauspost/compress/huff0/README.md | 89 + .../klauspost/compress/huff0/autogen.go | 5 + .../klauspost/compress/huff0/bitreader.go | 243 + .../klauspost/compress/huff0/bitwriter.go | 210 + .../klauspost/compress/huff0/bytereader.go | 54 + .../klauspost/compress/huff0/compress.go | 729 ++ .../klauspost/compress/huff0/decompress.go | 1270 +++ .../compress/huff0/decompress_8b_amd64.s | 488 ++ .../compress/huff0/decompress_8b_amd64.s.in | 197 + .../compress/huff0/decompress_amd64.go | 181 + .../compress/huff0/decompress_amd64.s | 506 ++ .../compress/huff0/decompress_amd64.s.in | 195 + .../compress/huff0/decompress_generic.go | 193 + .../klauspost/compress/huff0/huff0.go | 337 + .../compress/internal/snapref/LICENSE | 27 + .../compress/internal/snapref/decode.go | 264 + .../compress/internal/snapref/decode_other.go | 113 + .../compress/internal/snapref/encode.go | 289 + .../compress/internal/snapref/encode_other.go | 236 + .../compress/internal/snapref/snappy.go | 98 + vendor/github.com/klauspost/compress/s2sx.mod | 4 + vendor/github.com/klauspost/compress/s2sx.sum | 0 .../klauspost/compress/zstd/README.md | 455 + .../klauspost/compress/zstd/bitreader.go | 147 + .../klauspost/compress/zstd/bitwriter.go | 189 + .../klauspost/compress/zstd/blockdec.go | 698 ++ .../klauspost/compress/zstd/blockenc.go | 871 ++ .../compress/zstd/blocktype_string.go | 85 + .../klauspost/compress/zstd/bytebuf.go | 133 + .../klauspost/compress/zstd/bytereader.go | 88 + .../klauspost/compress/zstd/decodeheader.go | 230 + .../klauspost/compress/zstd/decoder.go | 924 ++ .../compress/zstd/decoder_options.go | 114 + .../klauspost/compress/zstd/dict.go | 122 + .../klauspost/compress/zstd/enc_base.go | 188 + .../klauspost/compress/zstd/enc_best.go | 558 ++ .../klauspost/compress/zstd/enc_better.go | 1237 +++ .../klauspost/compress/zstd/enc_dfast.go | 1124 +++ .../klauspost/compress/zstd/enc_fast.go | 898 ++ .../klauspost/compress/zstd/encoder.go | 641 ++ .../compress/zstd/encoder_options.go | 317 + .../klauspost/compress/zstd/framedec.go | 376 + .../klauspost/compress/zstd/frameenc.go | 137 + .../klauspost/compress/zstd/fse_decoder.go | 385 + .../klauspost/compress/zstd/fse_encoder.go | 724 ++ .../klauspost/compress/zstd/fse_predefined.go | 158 + .../klauspost/compress/zstd/fuzz.go | 11 + .../klauspost/compress/zstd/fuzz_none.go | 11 + .../klauspost/compress/zstd/hash.go | 41 + .../klauspost/compress/zstd/history.go | 119 + .../compress/zstd/internal/xxhash/LICENSE.txt | 22 + .../compress/zstd/internal/xxhash/README.md | 58 + .../compress/zstd/internal/xxhash/xxhash.go | 237 + .../zstd/internal/xxhash/xxhash_amd64.s | 216 + .../zstd/internal/xxhash/xxhash_arm64.s | 186 + .../zstd/internal/xxhash/xxhash_asm.go | 16 + .../zstd/internal/xxhash/xxhash_other.go | 77 + .../zstd/internal/xxhash/xxhash_safe.go | 11 + .../klauspost/compress/zstd/seqdec.go | 715 ++ .../klauspost/compress/zstd/seqenc.go | 114 + .../klauspost/compress/zstd/snappy.go | 435 + .../github.com/klauspost/compress/zstd/zip.go | 120 + .../klauspost/compress/zstd/zstd.go | 163 + vendor/github.com/pkg/errors/.gitignore | 24 + vendor/github.com/pkg/errors/.travis.yml | 10 + vendor/github.com/pkg/errors/LICENSE | 23 + vendor/github.com/pkg/errors/Makefile | 44 + vendor/github.com/pkg/errors/README.md | 59 + vendor/github.com/pkg/errors/appveyor.yml | 32 + vendor/github.com/pkg/errors/errors.go | 288 + vendor/github.com/pkg/errors/go113.go | 38 + vendor/github.com/pkg/errors/stack.go | 177 + vendor/github.com/rs/zerolog/.gitignore | 25 + vendor/github.com/rs/zerolog/CNAME | 1 + vendor/github.com/rs/zerolog/LICENSE | 21 + vendor/github.com/rs/zerolog/README.md | 695 ++ vendor/github.com/rs/zerolog/_config.yml | 1 + vendor/github.com/rs/zerolog/array.go | 240 + vendor/github.com/rs/zerolog/console.go | 409 + vendor/github.com/rs/zerolog/context.go | 433 + vendor/github.com/rs/zerolog/ctx.go | 51 + vendor/github.com/rs/zerolog/encoder.go | 56 + vendor/github.com/rs/zerolog/encoder_cbor.go | 42 + vendor/github.com/rs/zerolog/encoder_json.go | 39 + vendor/github.com/rs/zerolog/event.go | 773 ++ vendor/github.com/rs/zerolog/fields.go | 277 + vendor/github.com/rs/zerolog/globals.go | 138 + vendor/github.com/rs/zerolog/go112.go | 7 + vendor/github.com/rs/zerolog/hook.go | 64 + .../rs/zerolog/internal/cbor/README.md | 56 + .../rs/zerolog/internal/cbor/base.go | 19 + .../rs/zerolog/internal/cbor/cbor.go | 100 + .../rs/zerolog/internal/cbor/decode_stream.go | 614 ++ .../rs/zerolog/internal/cbor/string.go | 95 + .../rs/zerolog/internal/cbor/time.go | 93 + .../rs/zerolog/internal/cbor/types.go | 477 + .../rs/zerolog/internal/json/base.go | 19 + .../rs/zerolog/internal/json/bytes.go | 85 + .../rs/zerolog/internal/json/string.go | 149 + .../rs/zerolog/internal/json/time.go | 106 + .../rs/zerolog/internal/json/types.go | 405 + vendor/github.com/rs/zerolog/log.go | 457 + vendor/github.com/rs/zerolog/log/log.go | 131 + vendor/github.com/rs/zerolog/not_go112.go | 5 + vendor/github.com/rs/zerolog/pretty.png | Bin 0 -> 84064 bytes vendor/github.com/rs/zerolog/sampler.go | 134 + vendor/github.com/rs/zerolog/syslog.go | 80 + vendor/github.com/rs/zerolog/writer.go | 154 + vendor/github.com/xdg-go/pbkdf2/.gitignore | 12 + vendor/github.com/xdg-go/pbkdf2/LICENSE | 175 + vendor/github.com/xdg-go/pbkdf2/README.md | 17 + vendor/github.com/xdg-go/pbkdf2/pbkdf2.go | 76 + vendor/github.com/xdg-go/scram/.gitignore | 0 vendor/github.com/xdg-go/scram/CHANGELOG.md | 22 + vendor/github.com/xdg-go/scram/LICENSE | 175 + vendor/github.com/xdg-go/scram/README.md | 72 + vendor/github.com/xdg-go/scram/client.go | 130 + vendor/github.com/xdg-go/scram/client_conv.go | 149 + vendor/github.com/xdg-go/scram/common.go | 97 + vendor/github.com/xdg-go/scram/doc.go | 26 + vendor/github.com/xdg-go/scram/parse.go | 205 + vendor/github.com/xdg-go/scram/scram.go | 71 + vendor/github.com/xdg-go/scram/server.go | 50 + vendor/github.com/xdg-go/scram/server_conv.go | 151 + .../github.com/xdg-go/stringprep/.gitignore | 0 .../github.com/xdg-go/stringprep/CHANGELOG.md | 29 + vendor/github.com/xdg-go/stringprep/LICENSE | 175 + vendor/github.com/xdg-go/stringprep/README.md | 28 + vendor/github.com/xdg-go/stringprep/bidi.go | 73 + vendor/github.com/xdg-go/stringprep/doc.go | 10 + vendor/github.com/xdg-go/stringprep/error.go | 14 + vendor/github.com/xdg-go/stringprep/map.go | 21 + .../github.com/xdg-go/stringprep/profile.go | 75 + .../github.com/xdg-go/stringprep/saslprep.go | 52 + vendor/github.com/xdg-go/stringprep/set.go | 36 + vendor/github.com/xdg-go/stringprep/tables.go | 3215 +++++++ vendor/github.com/youmark/pkcs8/.gitignore | 23 + vendor/github.com/youmark/pkcs8/.travis.yml | 14 + vendor/github.com/youmark/pkcs8/LICENSE | 21 + vendor/github.com/youmark/pkcs8/README | 1 + vendor/github.com/youmark/pkcs8/README.md | 22 + vendor/github.com/youmark/pkcs8/cipher.go | 60 + .../github.com/youmark/pkcs8/cipher_3des.go | 24 + vendor/github.com/youmark/pkcs8/cipher_aes.go | 84 + vendor/github.com/youmark/pkcs8/kdf_pbkdf2.go | 91 + vendor/github.com/youmark/pkcs8/kdf_scrypt.go | 62 + vendor/github.com/youmark/pkcs8/pkcs8.go | 309 + vendor/go.mongodb.org/mongo-driver/LICENSE | 201 + .../go.mongodb.org/mongo-driver/bson/bson.go | 50 + .../bson/bsoncodec/array_codec.go | 50 + .../mongo-driver/bson/bsoncodec/bsoncodec.go | 216 + .../bson/bsoncodec/byte_slice_codec.go | 111 + .../bson/bsoncodec/cond_addr_codec.go | 63 + .../bson/bsoncodec/default_value_decoders.go | 1729 ++++ .../bson/bsoncodec/default_value_encoders.go | 766 ++ .../mongo-driver/bson/bsoncodec/doc.go | 84 + .../bson/bsoncodec/empty_interface_codec.go | 140 + .../mongo-driver/bson/bsoncodec/map_codec.go | 288 + .../mongo-driver/bson/bsoncodec/mode.go | 65 + .../bson/bsoncodec/pointer_codec.go | 109 + .../mongo-driver/bson/bsoncodec/proxy.go | 14 + .../mongo-driver/bson/bsoncodec/registry.go | 468 + .../bson/bsoncodec/slice_codec.go | 199 + .../bson/bsoncodec/string_codec.go | 119 + .../bson/bsoncodec/struct_codec.go | 664 ++ .../bson/bsoncodec/struct_tag_parser.go | 139 + .../mongo-driver/bson/bsoncodec/time_codec.go | 127 + .../mongo-driver/bson/bsoncodec/types.go | 57 + .../mongo-driver/bson/bsoncodec/uint_codec.go | 173 + .../bsonoptions/byte_slice_codec_options.go | 38 + .../empty_interface_codec_options.go | 38 + .../bson/bsonoptions/map_codec_options.go | 67 + .../bson/bsonoptions/slice_codec_options.go | 38 + .../bson/bsonoptions/string_codec_options.go | 41 + .../bson/bsonoptions/struct_codec_options.go | 87 + .../bson/bsonoptions/time_codec_options.go | 38 + .../bson/bsonoptions/uint_codec_options.go | 38 + .../mongo-driver/bson/bsonrw/copier.go | 445 + .../mongo-driver/bson/bsonrw/doc.go | 9 + .../bson/bsonrw/extjson_parser.go | 806 ++ .../bson/bsonrw/extjson_reader.go | 644 ++ .../bson/bsonrw/extjson_tables.go | 223 + .../bson/bsonrw/extjson_wrappers.go | 492 ++ .../bson/bsonrw/extjson_writer.go | 732 ++ .../mongo-driver/bson/bsonrw/json_scanner.go | 528 ++ .../mongo-driver/bson/bsonrw/mode.go | 108 + .../mongo-driver/bson/bsonrw/reader.go | 63 + .../mongo-driver/bson/bsonrw/value_reader.go | 875 ++ .../mongo-driver/bson/bsonrw/value_writer.go | 606 ++ .../mongo-driver/bson/bsonrw/writer.go | 78 + .../mongo-driver/bson/bsontype/bsontype.go | 97 + .../mongo-driver/bson/decoder.go | 118 + .../go.mongodb.org/mongo-driver/bson/doc.go | 138 + .../mongo-driver/bson/encoder.go | 99 + .../mongo-driver/bson/marshal.go | 248 + .../mongo-driver/bson/primitive/decimal.go | 424 + .../mongo-driver/bson/primitive/objectid.go | 204 + .../mongo-driver/bson/primitive/primitive.go | 217 + .../mongo-driver/bson/primitive_codecs.go | 92 + .../go.mongodb.org/mongo-driver/bson/raw.go | 85 + .../mongo-driver/bson/raw_element.go | 51 + .../mongo-driver/bson/raw_value.go | 309 + .../mongo-driver/bson/registry.go | 24 + .../go.mongodb.org/mongo-driver/bson/types.go | 36 + .../mongo-driver/bson/unmarshal.go | 101 + .../go.mongodb.org/mongo-driver/event/doc.go | 56 + .../mongo-driver/event/monitoring.go | 190 + .../internal/background_context.go | 34 + .../internal/cancellation_listener.go | 47 + .../mongo-driver/internal/const.go | 19 + .../mongo-driver/internal/error.go | 119 + .../internal/randutil/randutil.go | 77 + .../mongo-driver/internal/string_util.go | 45 + .../internal/uri_validation_errors.go | 22 + .../mongo-driver/mongo/address/addr.go | 49 + .../mongo-driver/mongo/batch_cursor.go | 42 + .../mongo-driver/mongo/bulk_write.go | 511 ++ .../mongo-driver/mongo/bulk_write_models.go | 305 + .../mongo-driver/mongo/change_stream.go | 663 ++ .../mongo/change_stream_deployment.go | 50 + .../mongo-driver/mongo/client.go | 1015 +++ .../mongo-driver/mongo/client_encryption.go | 141 + .../mongo-driver/mongo/collection.go | 1754 ++++ .../mongo-driver/mongo/crypt_retrievers.go | 65 + .../mongo-driver/mongo/cursor.go | 322 + .../mongo-driver/mongo/database.go | 662 ++ .../mongo/description/description.go | 10 + .../mongo-driver/mongo/description/server.go | 481 + .../mongo/description/server_kind.go | 46 + .../mongo/description/server_selector.go | 336 + .../mongo/description/topology.go | 142 + .../mongo/description/topology_kind.go | 40 + .../mongo/description/topology_version.go | 66 + .../mongo/description/version_range.go | 42 + .../go.mongodb.org/mongo-driver/mongo/doc.go | 145 + .../mongo-driver/mongo/errors.go | 638 ++ .../mongo/index_options_builder.go | 176 + .../mongo-driver/mongo/index_view.go | 504 ++ .../mongo-driver/mongo/mongo.go | 413 + .../mongo-driver/mongo/mongocryptd.go | 156 + .../mongo/options/aggregateoptions.go | 173 + .../mongo/options/autoencryptionoptions.go | 148 + .../mongo/options/bulkwriteoptions.go | 78 + .../mongo/options/changestreamoptions.go | 166 + .../mongo/options/clientencryptionoptions.go | 138 + .../mongo/options/clientoptions.go | 1101 +++ .../mongo/options/collectionoptions.go | 88 + .../mongo/options/countoptions.go | 95 + .../mongo/options/createcollectionoptions.go | 283 + .../mongo/options/datakeyoptions.go | 82 + .../mongo-driver/mongo/options/dboptions.go | 88 + .../mongo/options/deleteoptions.go | 73 + .../mongo/options/distinctoptions.go | 57 + .../mongo/options/encryptoptions.go | 64 + .../mongo/options/estimatedcountoptions.go | 44 + .../mongo-driver/mongo/options/findoptions.go | 1016 +++ .../mongo/options/gridfsoptions.go | 321 + .../mongo/options/indexoptions.go | 458 + .../mongo/options/insertoptions.go | 93 + .../mongo/options/listcollectionsoptions.go | 66 + .../mongo/options/listdatabasesoptions.go | 55 + .../mongo/options/mongooptions.go | 159 + .../mongo/options/replaceoptions.go | 102 + .../mongo/options/runcmdoptions.go | 42 + .../mongo/options/serverapioptions.go | 60 + .../mongo/options/sessionoptions.go | 122 + .../mongo/options/transactionoptions.go | 92 + .../mongo/options/updateoptions.go | 115 + .../mongo/readconcern/readconcern.go | 82 + .../mongo-driver/mongo/readpref/mode.go | 88 + .../mongo-driver/mongo/readpref/options.go | 71 + .../mongo-driver/mongo/readpref/readpref.go | 134 + .../mongo-driver/mongo/results.go | 264 + .../mongo-driver/mongo/session.go | 373 + .../mongo-driver/mongo/single_result.go | 121 + .../go.mongodb.org/mongo-driver/mongo/util.go | 7 + .../mongo/writeconcern/writeconcern.go | 216 + vendor/go.mongodb.org/mongo-driver/tag/tag.go | 79 + .../mongo-driver/version/version.go | 10 + .../mongo-driver/x/bsonx/array.go | 97 + .../mongo-driver/x/bsonx/bsoncore/array.go | 164 + .../x/bsonx/bsoncore/bson_arraybuilder.go | 201 + .../x/bsonx/bsoncore/bson_documentbuilder.go | 189 + .../mongo-driver/x/bsonx/bsoncore/bsoncore.go | 862 ++ .../mongo-driver/x/bsonx/bsoncore/document.go | 410 + .../x/bsonx/bsoncore/document_sequence.go | 183 + .../mongo-driver/x/bsonx/bsoncore/element.go | 152 + .../mongo-driver/x/bsonx/bsoncore/tables.go | 223 + .../mongo-driver/x/bsonx/bsoncore/value.go | 980 +++ .../mongo-driver/x/bsonx/constructor.go | 166 + .../mongo-driver/x/bsonx/document.go | 305 + .../mongo-driver/x/bsonx/element.go | 51 + .../mongo-driver/x/bsonx/mdocument.go | 231 + .../mongo-driver/x/bsonx/primitive_codecs.go | 637 ++ .../x/bsonx/reflectionfree_d_codec.go | 1025 +++ .../mongo-driver/x/bsonx/registry.go | 22 + .../mongo-driver/x/bsonx/value.go | 866 ++ .../mongo-driver/x/mongo/driver/DESIGN.md | 23 + .../mongo-driver/x/mongo/driver/auth/auth.go | 225 + .../x/mongo/driver/auth/aws_conv.go | 347 + .../x/mongo/driver/auth/conversation.go | 31 + .../mongo-driver/x/mongo/driver/auth/cred.go | 16 + .../x/mongo/driver/auth/default.go | 98 + .../mongo-driver/x/mongo/driver/auth/doc.go | 23 + .../x/mongo/driver/auth/gssapi.go | 59 + .../x/mongo/driver/auth/gssapi_not_enabled.go | 17 + .../mongo/driver/auth/gssapi_not_supported.go | 22 + .../driver/auth/internal/awsv4/credentials.go | 63 + .../x/mongo/driver/auth/internal/awsv4/doc.go | 15 + .../driver/auth/internal/awsv4/request.go | 80 + .../mongo/driver/auth/internal/awsv4/rest.go | 46 + .../mongo/driver/auth/internal/awsv4/rules.go | 98 + .../driver/auth/internal/awsv4/signer.go | 472 + .../mongo/driver/auth/internal/gssapi/gss.go | 167 + .../driver/auth/internal/gssapi/gss_wrapper.c | 248 + .../driver/auth/internal/gssapi/gss_wrapper.h | 66 + .../mongo/driver/auth/internal/gssapi/sspi.go | 353 + .../auth/internal/gssapi/sspi_wrapper.c | 243 + .../auth/internal/gssapi/sspi_wrapper.h | 58 + .../x/mongo/driver/auth/mongodbaws.go | 76 + .../x/mongo/driver/auth/mongodbcr.go | 110 + .../mongo-driver/x/mongo/driver/auth/plain.go | 55 + .../mongo-driver/x/mongo/driver/auth/sasl.go | 174 + .../mongo-driver/x/mongo/driver/auth/scram.go | 130 + .../mongo-driver/x/mongo/driver/auth/util.go | 30 + .../mongo-driver/x/mongo/driver/auth/x509.go | 85 + .../x/mongo/driver/batch_cursor.go | 452 + .../mongo-driver/x/mongo/driver/batches.go | 70 + .../x/mongo/driver/compression.go | 105 + .../x/mongo/driver/connstring/connstring.go | 1025 +++ .../mongo-driver/x/mongo/driver/crypt.go | 335 + .../mongo-driver/x/mongo/driver/dns/dns.go | 144 + .../mongo-driver/x/mongo/driver/driver.go | 248 + .../mongo-driver/x/mongo/driver/errors.go | 495 ++ .../mongo-driver/x/mongo/driver/legacy.go | 16 + .../driver/list_collections_batch_cursor.go | 129 + .../x/mongo/driver/mongocrypt/binary.go | 56 + .../x/mongo/driver/mongocrypt/errors.go | 44 + .../driver/mongocrypt/errors_not_enabled.go | 21 + .../x/mongo/driver/mongocrypt/mongocrypt.go | 247 + .../driver/mongocrypt/mongocrypt_context.go | 104 + .../mongocrypt_context_not_enabled.go | 57 + .../mongocrypt/mongocrypt_kms_context.go | 76 + .../mongocrypt_kms_context_not_enabled.go | 39 + .../mongocrypt/mongocrypt_not_enabled.go | 55 + .../options/mongocrypt_context_options.go | 65 + .../mongocrypt/options/mongocrypt_options.go | 34 + .../x/mongo/driver/mongocrypt/state.go | 43 + .../mongo-driver/x/mongo/driver/ocsp/cache.go | 121 + .../x/mongo/driver/ocsp/config.go | 60 + .../mongo-driver/x/mongo/driver/ocsp/ocsp.go | 353 + .../x/mongo/driver/ocsp/options.go | 13 + .../mongo-driver/x/mongo/driver/operation.go | 1618 ++++ .../driver/operation/abort_transaction.go | 199 + .../x/mongo/driver/operation/aggregate.go | 409 + .../x/mongo/driver/operation/command.go | 207 + .../driver/operation/commit_transaction.go | 202 + .../x/mongo/driver/operation/count.go | 315 + .../x/mongo/driver/operation/create.go | 359 + .../x/mongo/driver/operation/createIndexes.go | 267 + .../x/mongo/driver/operation/delete.go | 286 + .../x/mongo/driver/operation/distinct.go | 285 + .../mongo/driver/operation/drop_collection.go | 209 + .../x/mongo/driver/operation/drop_database.go | 154 + .../x/mongo/driver/operation/drop_indexes.go | 232 + .../x/mongo/driver/operation/end_sessions.go | 161 + .../x/mongo/driver/operation/errors.go | 13 + .../x/mongo/driver/operation/find.go | 537 ++ .../mongo/driver/operation/find_and_modify.go | 454 + .../x/mongo/driver/operation/hello.go | 258 + .../x/mongo/driver/operation/insert.go | 265 + .../x/mongo/driver/operation/listDatabases.go | 314 + .../driver/operation/list_collections.go | 253 + .../x/mongo/driver/operation/list_indexes.go | 223 + .../x/mongo/driver/operation/update.go | 373 + .../x/mongo/driver/operation_exhaust.go | 38 + .../x/mongo/driver/operation_legacy.go | 719 ++ .../x/mongo/driver/serverapioptions.go | 36 + .../x/mongo/driver/session/client_session.go | 531 ++ .../x/mongo/driver/session/cluster_clock.go | 36 + .../x/mongo/driver/session/options.go | 62 + .../x/mongo/driver/session/server_session.go | 74 + .../x/mongo/driver/session/session_pool.go | 190 + .../x/mongo/driver/topology/DESIGN.md | 40 + .../driver/topology/cancellation_listener.go | 14 + .../x/mongo/driver/topology/connection.go | 837 ++ .../driver/topology/connection_legacy.go | 1 + .../driver/topology/connection_options.go | 197 + .../x/mongo/driver/topology/diff.go | 73 + .../x/mongo/driver/topology/errors.go | 92 + .../x/mongo/driver/topology/fsm.go | 391 + .../driver/topology/hanging_tls_conn_1_16.go | 37 + .../driver/topology/hanging_tls_conn_1_17.go | 44 + .../x/mongo/driver/topology/pool.go | 1129 +++ .../topology/pool_generation_counter.go | 152 + .../x/mongo/driver/topology/rtt_monitor.go | 207 + .../x/mongo/driver/topology/server.go | 957 ++ .../x/mongo/driver/topology/server_options.go | 190 + .../topology/tls_connection_source_1_16.go | 58 + .../topology/tls_connection_source_1_17.go | 47 + .../x/mongo/driver/topology/topology.go | 839 ++ .../mongo/driver/topology/topology_options.go | 457 + .../mongo-driver/x/mongo/driver/uuid/uuid.go | 62 + .../x/mongo/driver/wiremessage/wiremessage.go | 578 ++ vendor/golang.org/x/crypto/AUTHORS | 3 + vendor/golang.org/x/crypto/CONTRIBUTORS | 3 + vendor/golang.org/x/crypto/LICENSE | 27 + vendor/golang.org/x/crypto/PATENTS | 22 + vendor/golang.org/x/crypto/ocsp/ocsp.go | 792 ++ vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go | 77 + vendor/golang.org/x/crypto/scrypt/scrypt.go | 212 + vendor/golang.org/x/sync/AUTHORS | 3 + vendor/golang.org/x/sync/CONTRIBUTORS | 3 + vendor/golang.org/x/sync/LICENSE | 27 + vendor/golang.org/x/sync/PATENTS | 22 + vendor/golang.org/x/sync/errgroup/errgroup.go | 66 + vendor/golang.org/x/text/AUTHORS | 3 + vendor/golang.org/x/text/CONTRIBUTORS | 3 + vendor/golang.org/x/text/LICENSE | 27 + vendor/golang.org/x/text/PATENTS | 22 + .../golang.org/x/text/transform/transform.go | 709 ++ .../x/text/unicode/norm/composition.go | 512 ++ .../x/text/unicode/norm/forminfo.go | 278 + .../golang.org/x/text/unicode/norm/input.go | 109 + vendor/golang.org/x/text/unicode/norm/iter.go | 458 + .../x/text/unicode/norm/normalize.go | 609 ++ .../x/text/unicode/norm/readwriter.go | 125 + .../x/text/unicode/norm/tables10.0.0.go | 7658 ++++++++++++++++ .../x/text/unicode/norm/tables11.0.0.go | 7694 ++++++++++++++++ .../x/text/unicode/norm/tables12.0.0.go | 7711 ++++++++++++++++ .../x/text/unicode/norm/tables13.0.0.go | 7761 ++++++++++++++++ .../x/text/unicode/norm/tables9.0.0.go | 7638 ++++++++++++++++ .../x/text/unicode/norm/transform.go | 88 + vendor/golang.org/x/text/unicode/norm/trie.go | 54 + vendor/modules.txt | 94 + 548 files changed, 164542 insertions(+) create mode 100644 .drone.yml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 cmd/main/main.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 internal/utils/common.go create mode 100644 pkg/domain/user.go create mode 100644 pkg/message/deal.go create mode 100644 pkg/message/duel.go create mode 100644 pkg/message/lot.go create mode 100644 pkg/message/offer.go create mode 100644 pkg/message/store.go create mode 100644 pkg/storage/mongodb/user.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/LICENSE create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/.gitignore create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/00version.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/README.md create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/adminapi.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/adminoptions.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/api.html create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_darwin.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_dynamic.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_glibc_linux.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_musl_linux.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_windows.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/config.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/consumer.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/context.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/error.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/error_gen.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/event.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/generated_errors.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/glue_rdkafka.h create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/handle.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/header.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/kafka.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/.gitignore create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/LICENSES.txt create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/README.md create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/bundle-import.sh create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/import.sh create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_darwin.a create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_glibc_linux.a create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_musl_linux.a create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_windows.a create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/rdkafka.h create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/log.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/message.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/metadata.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/misc.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/offset.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/producer.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/select_rdkafka.h create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/testconf-example.json create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/testhelpers.go create mode 100644 vendor/github.com/confluentinc/confluent-kafka-go/kafka/time.go create mode 100644 vendor/github.com/go-stack/stack/LICENSE.md create mode 100644 vendor/github.com/go-stack/stack/README.md create mode 100644 vendor/github.com/go-stack/stack/stack.go create mode 100644 vendor/github.com/golang/snappy/.gitignore create mode 100644 vendor/github.com/golang/snappy/AUTHORS create mode 100644 vendor/github.com/golang/snappy/CONTRIBUTORS create mode 100644 vendor/github.com/golang/snappy/LICENSE create mode 100644 vendor/github.com/golang/snappy/README create mode 100644 vendor/github.com/golang/snappy/decode.go create mode 100644 vendor/github.com/golang/snappy/decode_amd64.s create mode 100644 vendor/github.com/golang/snappy/decode_arm64.s create mode 100644 vendor/github.com/golang/snappy/decode_asm.go create mode 100644 vendor/github.com/golang/snappy/decode_other.go create mode 100644 vendor/github.com/golang/snappy/encode.go create mode 100644 vendor/github.com/golang/snappy/encode_amd64.s create mode 100644 vendor/github.com/golang/snappy/encode_arm64.s create mode 100644 vendor/github.com/golang/snappy/encode_asm.go create mode 100644 vendor/github.com/golang/snappy/encode_other.go create mode 100644 vendor/github.com/golang/snappy/snappy.go create mode 100644 vendor/github.com/google/uuid/.travis.yml create mode 100644 vendor/github.com/google/uuid/CONTRIBUTING.md create mode 100644 vendor/github.com/google/uuid/CONTRIBUTORS create mode 100644 vendor/github.com/google/uuid/LICENSE create mode 100644 vendor/github.com/google/uuid/README.md create mode 100644 vendor/github.com/google/uuid/dce.go create mode 100644 vendor/github.com/google/uuid/doc.go create mode 100644 vendor/github.com/google/uuid/hash.go create mode 100644 vendor/github.com/google/uuid/marshal.go create mode 100644 vendor/github.com/google/uuid/node.go create mode 100644 vendor/github.com/google/uuid/node_js.go create mode 100644 vendor/github.com/google/uuid/node_net.go create mode 100644 vendor/github.com/google/uuid/null.go create mode 100644 vendor/github.com/google/uuid/sql.go create mode 100644 vendor/github.com/google/uuid/time.go create mode 100644 vendor/github.com/google/uuid/util.go create mode 100644 vendor/github.com/google/uuid/uuid.go create mode 100644 vendor/github.com/google/uuid/version1.go create mode 100644 vendor/github.com/google/uuid/version4.go create mode 100644 vendor/github.com/klauspost/compress/.gitattributes create mode 100644 vendor/github.com/klauspost/compress/.gitignore create mode 100644 vendor/github.com/klauspost/compress/.goreleaser.yml create mode 100644 vendor/github.com/klauspost/compress/LICENSE create mode 100644 vendor/github.com/klauspost/compress/README.md create mode 100644 vendor/github.com/klauspost/compress/compressible.go create mode 100644 vendor/github.com/klauspost/compress/fse/README.md create mode 100644 vendor/github.com/klauspost/compress/fse/bitreader.go create mode 100644 vendor/github.com/klauspost/compress/fse/bitwriter.go create mode 100644 vendor/github.com/klauspost/compress/fse/bytereader.go create mode 100644 vendor/github.com/klauspost/compress/fse/compress.go create mode 100644 vendor/github.com/klauspost/compress/fse/decompress.go create mode 100644 vendor/github.com/klauspost/compress/fse/fse.go create mode 100644 vendor/github.com/klauspost/compress/gen.sh create mode 100644 vendor/github.com/klauspost/compress/huff0/.gitignore create mode 100644 vendor/github.com/klauspost/compress/huff0/README.md create mode 100644 vendor/github.com/klauspost/compress/huff0/autogen.go create mode 100644 vendor/github.com/klauspost/compress/huff0/bitreader.go create mode 100644 vendor/github.com/klauspost/compress/huff0/bitwriter.go create mode 100644 vendor/github.com/klauspost/compress/huff0/bytereader.go create mode 100644 vendor/github.com/klauspost/compress/huff0/compress.go create mode 100644 vendor/github.com/klauspost/compress/huff0/decompress.go create mode 100644 vendor/github.com/klauspost/compress/huff0/decompress_8b_amd64.s create mode 100644 vendor/github.com/klauspost/compress/huff0/decompress_8b_amd64.s.in create mode 100644 vendor/github.com/klauspost/compress/huff0/decompress_amd64.go create mode 100644 vendor/github.com/klauspost/compress/huff0/decompress_amd64.s create mode 100644 vendor/github.com/klauspost/compress/huff0/decompress_amd64.s.in create mode 100644 vendor/github.com/klauspost/compress/huff0/decompress_generic.go create mode 100644 vendor/github.com/klauspost/compress/huff0/huff0.go create mode 100644 vendor/github.com/klauspost/compress/internal/snapref/LICENSE create mode 100644 vendor/github.com/klauspost/compress/internal/snapref/decode.go create mode 100644 vendor/github.com/klauspost/compress/internal/snapref/decode_other.go create mode 100644 vendor/github.com/klauspost/compress/internal/snapref/encode.go create mode 100644 vendor/github.com/klauspost/compress/internal/snapref/encode_other.go create mode 100644 vendor/github.com/klauspost/compress/internal/snapref/snappy.go create mode 100644 vendor/github.com/klauspost/compress/s2sx.mod create mode 100644 vendor/github.com/klauspost/compress/s2sx.sum create mode 100644 vendor/github.com/klauspost/compress/zstd/README.md create mode 100644 vendor/github.com/klauspost/compress/zstd/bitreader.go create mode 100644 vendor/github.com/klauspost/compress/zstd/bitwriter.go create mode 100644 vendor/github.com/klauspost/compress/zstd/blockdec.go create mode 100644 vendor/github.com/klauspost/compress/zstd/blockenc.go create mode 100644 vendor/github.com/klauspost/compress/zstd/blocktype_string.go create mode 100644 vendor/github.com/klauspost/compress/zstd/bytebuf.go create mode 100644 vendor/github.com/klauspost/compress/zstd/bytereader.go create mode 100644 vendor/github.com/klauspost/compress/zstd/decodeheader.go create mode 100644 vendor/github.com/klauspost/compress/zstd/decoder.go create mode 100644 vendor/github.com/klauspost/compress/zstd/decoder_options.go create mode 100644 vendor/github.com/klauspost/compress/zstd/dict.go create mode 100644 vendor/github.com/klauspost/compress/zstd/enc_base.go create mode 100644 vendor/github.com/klauspost/compress/zstd/enc_best.go create mode 100644 vendor/github.com/klauspost/compress/zstd/enc_better.go create mode 100644 vendor/github.com/klauspost/compress/zstd/enc_dfast.go create mode 100644 vendor/github.com/klauspost/compress/zstd/enc_fast.go create mode 100644 vendor/github.com/klauspost/compress/zstd/encoder.go create mode 100644 vendor/github.com/klauspost/compress/zstd/encoder_options.go create mode 100644 vendor/github.com/klauspost/compress/zstd/framedec.go create mode 100644 vendor/github.com/klauspost/compress/zstd/frameenc.go create mode 100644 vendor/github.com/klauspost/compress/zstd/fse_decoder.go create mode 100644 vendor/github.com/klauspost/compress/zstd/fse_encoder.go create mode 100644 vendor/github.com/klauspost/compress/zstd/fse_predefined.go create mode 100644 vendor/github.com/klauspost/compress/zstd/fuzz.go create mode 100644 vendor/github.com/klauspost/compress/zstd/fuzz_none.go create mode 100644 vendor/github.com/klauspost/compress/zstd/hash.go create mode 100644 vendor/github.com/klauspost/compress/zstd/history.go create mode 100644 vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt create mode 100644 vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md create mode 100644 vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash.go create mode 100644 vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s create mode 100644 vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s create mode 100644 vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_asm.go create mode 100644 vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_other.go create mode 100644 vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_safe.go create mode 100644 vendor/github.com/klauspost/compress/zstd/seqdec.go create mode 100644 vendor/github.com/klauspost/compress/zstd/seqenc.go create mode 100644 vendor/github.com/klauspost/compress/zstd/snappy.go create mode 100644 vendor/github.com/klauspost/compress/zstd/zip.go create mode 100644 vendor/github.com/klauspost/compress/zstd/zstd.go create mode 100644 vendor/github.com/pkg/errors/.gitignore create mode 100644 vendor/github.com/pkg/errors/.travis.yml create mode 100644 vendor/github.com/pkg/errors/LICENSE create mode 100644 vendor/github.com/pkg/errors/Makefile create mode 100644 vendor/github.com/pkg/errors/README.md create mode 100644 vendor/github.com/pkg/errors/appveyor.yml create mode 100644 vendor/github.com/pkg/errors/errors.go create mode 100644 vendor/github.com/pkg/errors/go113.go create mode 100644 vendor/github.com/pkg/errors/stack.go create mode 100644 vendor/github.com/rs/zerolog/.gitignore create mode 100644 vendor/github.com/rs/zerolog/CNAME create mode 100644 vendor/github.com/rs/zerolog/LICENSE create mode 100644 vendor/github.com/rs/zerolog/README.md create mode 100644 vendor/github.com/rs/zerolog/_config.yml create mode 100644 vendor/github.com/rs/zerolog/array.go create mode 100644 vendor/github.com/rs/zerolog/console.go create mode 100644 vendor/github.com/rs/zerolog/context.go create mode 100644 vendor/github.com/rs/zerolog/ctx.go create mode 100644 vendor/github.com/rs/zerolog/encoder.go create mode 100644 vendor/github.com/rs/zerolog/encoder_cbor.go create mode 100644 vendor/github.com/rs/zerolog/encoder_json.go create mode 100644 vendor/github.com/rs/zerolog/event.go create mode 100644 vendor/github.com/rs/zerolog/fields.go create mode 100644 vendor/github.com/rs/zerolog/globals.go create mode 100644 vendor/github.com/rs/zerolog/go112.go create mode 100644 vendor/github.com/rs/zerolog/hook.go create mode 100644 vendor/github.com/rs/zerolog/internal/cbor/README.md create mode 100644 vendor/github.com/rs/zerolog/internal/cbor/base.go create mode 100644 vendor/github.com/rs/zerolog/internal/cbor/cbor.go create mode 100644 vendor/github.com/rs/zerolog/internal/cbor/decode_stream.go create mode 100644 vendor/github.com/rs/zerolog/internal/cbor/string.go create mode 100644 vendor/github.com/rs/zerolog/internal/cbor/time.go create mode 100644 vendor/github.com/rs/zerolog/internal/cbor/types.go create mode 100644 vendor/github.com/rs/zerolog/internal/json/base.go create mode 100644 vendor/github.com/rs/zerolog/internal/json/bytes.go create mode 100644 vendor/github.com/rs/zerolog/internal/json/string.go create mode 100644 vendor/github.com/rs/zerolog/internal/json/time.go create mode 100644 vendor/github.com/rs/zerolog/internal/json/types.go create mode 100644 vendor/github.com/rs/zerolog/log.go create mode 100644 vendor/github.com/rs/zerolog/log/log.go create mode 100644 vendor/github.com/rs/zerolog/not_go112.go create mode 100644 vendor/github.com/rs/zerolog/pretty.png create mode 100644 vendor/github.com/rs/zerolog/sampler.go create mode 100644 vendor/github.com/rs/zerolog/syslog.go create mode 100644 vendor/github.com/rs/zerolog/writer.go create mode 100644 vendor/github.com/xdg-go/pbkdf2/.gitignore create mode 100644 vendor/github.com/xdg-go/pbkdf2/LICENSE create mode 100644 vendor/github.com/xdg-go/pbkdf2/README.md create mode 100644 vendor/github.com/xdg-go/pbkdf2/pbkdf2.go create mode 100644 vendor/github.com/xdg-go/scram/.gitignore create mode 100644 vendor/github.com/xdg-go/scram/CHANGELOG.md create mode 100644 vendor/github.com/xdg-go/scram/LICENSE create mode 100644 vendor/github.com/xdg-go/scram/README.md create mode 100644 vendor/github.com/xdg-go/scram/client.go create mode 100644 vendor/github.com/xdg-go/scram/client_conv.go create mode 100644 vendor/github.com/xdg-go/scram/common.go create mode 100644 vendor/github.com/xdg-go/scram/doc.go create mode 100644 vendor/github.com/xdg-go/scram/parse.go create mode 100644 vendor/github.com/xdg-go/scram/scram.go create mode 100644 vendor/github.com/xdg-go/scram/server.go create mode 100644 vendor/github.com/xdg-go/scram/server_conv.go create mode 100644 vendor/github.com/xdg-go/stringprep/.gitignore create mode 100644 vendor/github.com/xdg-go/stringprep/CHANGELOG.md create mode 100644 vendor/github.com/xdg-go/stringprep/LICENSE create mode 100644 vendor/github.com/xdg-go/stringprep/README.md create mode 100644 vendor/github.com/xdg-go/stringprep/bidi.go create mode 100644 vendor/github.com/xdg-go/stringprep/doc.go create mode 100644 vendor/github.com/xdg-go/stringprep/error.go create mode 100644 vendor/github.com/xdg-go/stringprep/map.go create mode 100644 vendor/github.com/xdg-go/stringprep/profile.go create mode 100644 vendor/github.com/xdg-go/stringprep/saslprep.go create mode 100644 vendor/github.com/xdg-go/stringprep/set.go create mode 100644 vendor/github.com/xdg-go/stringprep/tables.go create mode 100644 vendor/github.com/youmark/pkcs8/.gitignore create mode 100644 vendor/github.com/youmark/pkcs8/.travis.yml create mode 100644 vendor/github.com/youmark/pkcs8/LICENSE create mode 100644 vendor/github.com/youmark/pkcs8/README create mode 100644 vendor/github.com/youmark/pkcs8/README.md create mode 100644 vendor/github.com/youmark/pkcs8/cipher.go create mode 100644 vendor/github.com/youmark/pkcs8/cipher_3des.go create mode 100644 vendor/github.com/youmark/pkcs8/cipher_aes.go create mode 100644 vendor/github.com/youmark/pkcs8/kdf_pbkdf2.go create mode 100644 vendor/github.com/youmark/pkcs8/kdf_scrypt.go create mode 100644 vendor/github.com/youmark/pkcs8/pkcs8.go create mode 100644 vendor/go.mongodb.org/mongo-driver/LICENSE create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bson.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/array_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/bsoncodec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/byte_slice_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/cond_addr_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/default_value_decoders.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/default_value_encoders.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/doc.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/empty_interface_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/map_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/mode.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/pointer_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/proxy.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/registry.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/slice_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/string_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/struct_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/struct_tag_parser.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/time_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/types.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/uint_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonoptions/byte_slice_codec_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonoptions/empty_interface_codec_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonoptions/map_codec_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonoptions/slice_codec_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonoptions/string_codec_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonoptions/struct_codec_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonoptions/time_codec_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonoptions/uint_codec_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/copier.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/doc.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/extjson_parser.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/extjson_reader.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/extjson_tables.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/extjson_wrappers.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/extjson_writer.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/json_scanner.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/mode.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/reader.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/value_reader.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/value_writer.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsonrw/writer.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/bsontype/bsontype.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/decoder.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/doc.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/encoder.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/marshal.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/primitive/decimal.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/primitive/objectid.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/primitive/primitive.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/primitive_codecs.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/raw.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/raw_element.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/raw_value.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/registry.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/types.go create mode 100644 vendor/go.mongodb.org/mongo-driver/bson/unmarshal.go create mode 100644 vendor/go.mongodb.org/mongo-driver/event/doc.go create mode 100644 vendor/go.mongodb.org/mongo-driver/event/monitoring.go create mode 100644 vendor/go.mongodb.org/mongo-driver/internal/background_context.go create mode 100644 vendor/go.mongodb.org/mongo-driver/internal/cancellation_listener.go create mode 100644 vendor/go.mongodb.org/mongo-driver/internal/const.go create mode 100644 vendor/go.mongodb.org/mongo-driver/internal/error.go create mode 100644 vendor/go.mongodb.org/mongo-driver/internal/randutil/randutil.go create mode 100644 vendor/go.mongodb.org/mongo-driver/internal/string_util.go create mode 100644 vendor/go.mongodb.org/mongo-driver/internal/uri_validation_errors.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/address/addr.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/batch_cursor.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/bulk_write.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/bulk_write_models.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/change_stream.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/change_stream_deployment.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/client.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/client_encryption.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/collection.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/crypt_retrievers.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/cursor.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/database.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/description/description.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/description/server.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/description/server_kind.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/description/server_selector.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/description/topology.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/description/topology_kind.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/description/topology_version.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/description/version_range.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/doc.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/errors.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/index_options_builder.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/index_view.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/mongo.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/mongocryptd.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/aggregateoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/autoencryptionoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/bulkwriteoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/changestreamoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/clientencryptionoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/clientoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/collectionoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/countoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/createcollectionoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/datakeyoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/dboptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/deleteoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/distinctoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/encryptoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/estimatedcountoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/findoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/gridfsoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/indexoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/insertoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/listcollectionsoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/listdatabasesoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/mongooptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/replaceoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/runcmdoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/serverapioptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/sessionoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/transactionoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/options/updateoptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/readconcern/readconcern.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/readpref/mode.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/readpref/options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/readpref/readpref.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/results.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/session.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/single_result.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/util.go create mode 100644 vendor/go.mongodb.org/mongo-driver/mongo/writeconcern/writeconcern.go create mode 100644 vendor/go.mongodb.org/mongo-driver/tag/tag.go create mode 100644 vendor/go.mongodb.org/mongo-driver/version/version.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/array.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/bsoncore/array.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/bsoncore/bson_arraybuilder.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/bsoncore/bson_documentbuilder.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/bsoncore/bsoncore.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/bsoncore/document.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/bsoncore/document_sequence.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/bsoncore/element.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/bsoncore/tables.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/bsoncore/value.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/constructor.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/document.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/element.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/mdocument.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/primitive_codecs.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/reflectionfree_d_codec.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/registry.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/bsonx/value.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/DESIGN.md create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/auth.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/aws_conv.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/conversation.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/cred.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/default.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/doc.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/gssapi.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/gssapi_not_enabled.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/gssapi_not_supported.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/awsv4/credentials.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/awsv4/doc.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/awsv4/request.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/awsv4/rest.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/awsv4/rules.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/awsv4/signer.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/gssapi/gss.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/gssapi/gss_wrapper.c create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/gssapi/gss_wrapper.h create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/gssapi/sspi.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/gssapi/sspi_wrapper.c create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/gssapi/sspi_wrapper.h create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/mongodbaws.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/mongodbcr.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/plain.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/sasl.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/scram.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/util.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/auth/x509.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/batch_cursor.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/batches.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/compression.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/connstring/connstring.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/crypt.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/dns/dns.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/driver.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/errors.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/legacy.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/list_collections_batch_cursor.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/binary.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/errors.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/errors_not_enabled.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/mongocrypt.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/mongocrypt_context.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/mongocrypt_context_not_enabled.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/mongocrypt_kms_context.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/mongocrypt_kms_context_not_enabled.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/mongocrypt_not_enabled.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/options/mongocrypt_context_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/options/mongocrypt_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/state.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/ocsp/cache.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/ocsp/config.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/ocsp/ocsp.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/ocsp/options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/abort_transaction.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/aggregate.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/command.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/commit_transaction.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/count.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/create.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/createIndexes.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/delete.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/distinct.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/drop_collection.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/drop_database.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/drop_indexes.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/end_sessions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/errors.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/find.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/find_and_modify.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/hello.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/insert.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/listDatabases.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/list_collections.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/list_indexes.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation/update.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation_exhaust.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/operation_legacy.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/serverapioptions.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/session/client_session.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/session/cluster_clock.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/session/options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/session/server_session.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/session/session_pool.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/DESIGN.md create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/cancellation_listener.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/connection.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/connection_legacy.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/connection_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/diff.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/errors.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/fsm.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/hanging_tls_conn_1_16.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/hanging_tls_conn_1_17.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/pool.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/pool_generation_counter.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/rtt_monitor.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/server.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/server_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/tls_connection_source_1_16.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/tls_connection_source_1_17.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/topology.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/topology/topology_options.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/uuid/uuid.go create mode 100644 vendor/go.mongodb.org/mongo-driver/x/mongo/driver/wiremessage/wiremessage.go create mode 100644 vendor/golang.org/x/crypto/AUTHORS create mode 100644 vendor/golang.org/x/crypto/CONTRIBUTORS create mode 100644 vendor/golang.org/x/crypto/LICENSE create mode 100644 vendor/golang.org/x/crypto/PATENTS create mode 100644 vendor/golang.org/x/crypto/ocsp/ocsp.go create mode 100644 vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go create mode 100644 vendor/golang.org/x/crypto/scrypt/scrypt.go create mode 100644 vendor/golang.org/x/sync/AUTHORS create mode 100644 vendor/golang.org/x/sync/CONTRIBUTORS create mode 100644 vendor/golang.org/x/sync/LICENSE create mode 100644 vendor/golang.org/x/sync/PATENTS create mode 100644 vendor/golang.org/x/sync/errgroup/errgroup.go create mode 100644 vendor/golang.org/x/text/AUTHORS create mode 100644 vendor/golang.org/x/text/CONTRIBUTORS create mode 100644 vendor/golang.org/x/text/LICENSE create mode 100644 vendor/golang.org/x/text/PATENTS create mode 100644 vendor/golang.org/x/text/transform/transform.go create mode 100644 vendor/golang.org/x/text/unicode/norm/composition.go create mode 100644 vendor/golang.org/x/text/unicode/norm/forminfo.go create mode 100644 vendor/golang.org/x/text/unicode/norm/input.go create mode 100644 vendor/golang.org/x/text/unicode/norm/iter.go create mode 100644 vendor/golang.org/x/text/unicode/norm/normalize.go create mode 100644 vendor/golang.org/x/text/unicode/norm/readwriter.go create mode 100644 vendor/golang.org/x/text/unicode/norm/tables10.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/norm/tables11.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/norm/tables12.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/norm/tables13.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/norm/tables9.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/norm/transform.go create mode 100644 vendor/golang.org/x/text/unicode/norm/trie.go create mode 100644 vendor/modules.txt diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..73fcd08 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,37 @@ +kind: pipeline +type: docker +name: build + +steps: + - name: build + image: plugins/docker + settings: + registry: cr.selcloud.ru + username: + from_secret: docker_username + password: + from_secret: docker_password + repo: cr.selcloud.ru/russia9/${DRONE_REPO_NAME}/${DRONE_COMMIT_BRANCH} + tags: + - latest + - ${DRONE_COMMIT_SHA} + cache_from: + - cr.selcloud.ru/russia9/${DRONE_REPO_NAME}/${DRONE_COMMIT_BRANCH}:latest + + - name: deploy + image: appleboy/drone-ssh + settings: + host: + from_secret: ssh_address + username: + from_secret: ssh_username + key: + from_secret: ssh_key + port: 22 + script_stop: true + script: + - docker-compose -f /srv/chatwars-spy/docker-compose.yml pull + - docker-compose -f /srv/chatwars-spy/docker-compose.yml up -d + when: + branch: + - master diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f2b36e1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,63 @@ +# Created by .ignore support plugin (hsz.mobi) +### Go template +# 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 + +# Dependency directories (remove the comment below to include it) +# vendor/ + +### Vim template +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +*~ +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea + +# CMake +cmake-build-*/ + +# File-based project format +*.iws + +# IntelliJ +out/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fa27b2b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM golang:1.18 + +# Set app workdir +WORKDIR /go/src/app + +# Copy application sources +COPY . . + +# Build app +RUN go build -o app gitea.russia9.dev/Russia9/chatwars-spy/cmd/main + +# Run app +CMD ["./app"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..c3cd839 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# ChatWars Spy +Ищет пользователей ChatWars из информации о дуэлях, предложениях и сделках на бирже. \ No newline at end of file diff --git a/cmd/main/main.go b/cmd/main/main.go new file mode 100644 index 0000000..44385c3 --- /dev/null +++ b/cmd/main/main.go @@ -0,0 +1,170 @@ +package main + +import ( + "context" + "encoding/json" + "gitea.russia9.dev/Russia9/chatwars-spy/internal/utils" + "gitea.russia9.dev/Russia9/chatwars-spy/pkg/domain" + "gitea.russia9.dev/Russia9/chatwars-spy/pkg/message" + "gitea.russia9.dev/Russia9/chatwars-spy/pkg/storage/mongodb" + "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/google/uuid" + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + "os" + "strconv" +) + +func main() { + // Log settings + zerolog.TimeFieldFormat = zerolog.TimeFormatUnix + pretty, err := strconv.ParseBool(os.Getenv("LOG_PRETTY")) + if err != nil { + pretty = false + } + if pretty { + log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) + } + switch os.Getenv("LOG_LEVEL") { + case "DISABLED": + zerolog.SetGlobalLevel(zerolog.Disabled) + case "PANIC": + zerolog.SetGlobalLevel(zerolog.PanicLevel) + case "FATAL": + zerolog.SetGlobalLevel(zerolog.FatalLevel) + case "ERROR": + zerolog.SetGlobalLevel(zerolog.ErrorLevel) + case "WARN": + zerolog.SetGlobalLevel(zerolog.WarnLevel) + case "DEBUG": + zerolog.SetGlobalLevel(zerolog.DebugLevel) + case "TRACE": + zerolog.SetGlobalLevel(zerolog.TraceLevel) + default: + zerolog.SetGlobalLevel(zerolog.InfoLevel) + } + + version := utils.GetEnv("CHATWARS_VERSION", "cw3") + + // Kafka consumer init + consumer, err := kafka.NewConsumer(&kafka.ConfigMap{ + "bootstrap.servers": utils.GetEnv("KAFKA_ADDRESS", "digest-api.chtwrs.com:9092"), + "group.id": version + "-" + uuid.New().String(), + "auto.offset.reset": "latest", + }) + if err != nil { + log.Fatal().Err(err).Send() + } + + // DB init + client, err := mongo.Connect(context.Background(), options.Client().ApplyURI(os.Getenv("MONGO_URI"))) + if err != nil { + log.Fatal().Err(err).Send() + } + defer client.Disconnect(context.Background()) + err = client.Ping(context.Background(), nil) + if err != nil { + log.Fatal().Err(err).Send() + } + db := client.Database(utils.GetEnv("MONGO_DB", "chatwars")) + repo := mongodb.NewUserRepo(db) + + // Kafka subscribe + err = consumer.SubscribeTopics([]string{version + "-offers", version + "-deals", version + "-duels"}, nil) + if err != nil { + log.Fatal().Err(err).Send() + } + + log.Info().Msg("Started watching") + + // Get messages + for { + // Read message + raw, err := consumer.ReadMessage(-1) + if err != nil { + log.Error().Str("source", "consumer").Err(err).Send() + continue + } + + log.Trace().Bytes("message", raw.Value).Msg("received message") + + switch *raw.TopicPartition.Topic { + case version + "-offers": // Offers + // Decode message + var msg message.Offer + err = json.Unmarshal(raw.Value, &msg) + if err != nil { + log.Warn().Err(err).Str("topic", *raw.TopicPartition.Topic).Send() + continue + } + + // Store user + _ = repo.Store(context.Background(), + &domain.User{ + ID: msg.SellerID, + Castle: msg.SellerCastle, + Name: msg.SellerName, + Source: "offers", + }, + ) + case version + "-duels": // Duels + // Decode message + var msg message.Duel + err = json.Unmarshal(raw.Value, &msg) + if err != nil { + log.Warn().Err(err).Str("topic", *raw.TopicPartition.Topic).Send() + continue + } + + // Store users + _ = repo.Store(context.Background(), + &domain.User{ + ID: msg.Winner.ID, + Castle: msg.Winner.Castle, + Guild: msg.Winner.Tag, + Name: msg.Winner.Name, + Level: msg.Winner.Level, + Source: "duels", + }, + ) + _ = repo.Store(context.Background(), + &domain.User{ + ID: msg.Loser.ID, + Castle: msg.Loser.Castle, + Guild: msg.Loser.Tag, + Name: msg.Loser.Name, + Level: msg.Loser.Level, + Source: "duels", + }, + ) + case version + "-deals": // Deals + // Decode message + var msg message.Deal + err = json.Unmarshal(raw.Value, &msg) + if err != nil { + log.Warn().Err(err).Str("topic", *raw.TopicPartition.Topic).Send() + continue + } + + // Store users + _ = repo.Store(context.Background(), + &domain.User{ + ID: msg.SellerID, + Castle: msg.SellerCastle, + Name: msg.SellerName, + Source: "deals", + }, + ) + _ = repo.Store(context.Background(), + &domain.User{ + ID: msg.BuyerID, + Castle: msg.BuyerCastle, + Name: msg.BuyerName, + Source: "deals", + }, + ) + } + } +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..4291930 --- /dev/null +++ b/go.mod @@ -0,0 +1,26 @@ +module gitea.russia9.dev/Russia9/chatwars-spy + +go 1.18 + +require ( + github.com/confluentinc/confluent-kafka-go v1.8.2 + github.com/google/uuid v1.3.0 + github.com/rs/zerolog v1.26.1 + go.mongodb.org/mongo-driver v1.9.0 +) + +require ( + github.com/go-stack/stack v1.8.1 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/klauspost/compress v1.15.1 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/stretchr/testify v1.7.0 // indirect + github.com/xdg-go/pbkdf2 v1.0.0 // indirect + github.com/xdg-go/scram v1.1.1 // indirect + github.com/xdg-go/stringprep v1.0.3 // indirect + github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect + golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect + golang.org/x/text v0.3.7 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..50465fc --- /dev/null +++ b/go.sum @@ -0,0 +1,96 @@ +github.com/confluentinc/confluent-kafka-go v1.8.2 h1:PBdbvYpyOdFLehj8j+9ba7FL4c4Moxn79gy9cYKxG5E= +github.com/confluentinc/confluent-kafka-go v1.8.2/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +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-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A= +github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +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/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= +github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= +github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= +github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= +github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk= +github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.mongodb.org/mongo-driver v1.9.0 h1:f3aLGJvQmBl8d9S40IL+jEyBC6hfLPbJjv9t5hEM9ck= +go.mongodb.org/mongo-driver v1.9.0/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/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.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/utils/common.go b/internal/utils/common.go new file mode 100644 index 0000000..282a613 --- /dev/null +++ b/internal/utils/common.go @@ -0,0 +1,10 @@ +package utils + +import "os" + +func GetEnv(key, fallback string) string { + if value, ok := os.LookupEnv(key); ok { + return value + } + return fallback +} diff --git a/pkg/domain/user.go b/pkg/domain/user.go new file mode 100644 index 0000000..0231431 --- /dev/null +++ b/pkg/domain/user.go @@ -0,0 +1,22 @@ +package domain + +import ( + "context" + "time" +) + +type User struct { + ID string `bson:"_id"` + Castle string + Guild string + Name string + Level int + Source string + + FirstSeen time.Time + LastSeen time.Time +} + +type UserRepo interface { + Store(ctx context.Context, object *User) error +} diff --git a/pkg/message/deal.go b/pkg/message/deal.go new file mode 100644 index 0000000..44dfa82 --- /dev/null +++ b/pkg/message/deal.go @@ -0,0 +1,13 @@ +package message + +type Deal struct { + SellerID string `json:"sellerId"` + SellerCastle string `json:"sellerCastle"` + SellerName string `json:"sellerName"` + BuyerID string `json:"buyerId"` + BuyerCastle string `json:"buyerCastle"` + BuyerName string `json:"buyerName"` + Item string `json:"item"` + Quantity int `json:"qty"` + Price int `json:"price"` +} diff --git a/pkg/message/duel.go b/pkg/message/duel.go new file mode 100644 index 0000000..c365c97 --- /dev/null +++ b/pkg/message/duel.go @@ -0,0 +1,17 @@ +package message + +type Duel struct { + Winner DuelUser `json:"winner"` + Loser DuelUser `json:"loser"` + IsChallenge bool `json:"isChallenge"` + IsGuildDuel bool `json:"isGuildDuel"` +} + +type DuelUser struct { + ID string `json:"id"` + Name string `json:"name"` + Tag string `json:"tag,omitempty"` + Castle string `json:"castle"` + Level int `json:"level"` + Health int `json:"hp"` +} diff --git a/pkg/message/lot.go b/pkg/message/lot.go new file mode 100644 index 0000000..17e90cd --- /dev/null +++ b/pkg/message/lot.go @@ -0,0 +1,20 @@ +package message + +type Lot struct { + LotID string `json:"lotId"` + ItemName string `json:"itemName"` + SellerTag string `json:"sellerTag"` + SellerName string `json:"sellerName"` + Quality string `json:"quality"` + SellerCastle string `json:"sellerCastle"` + Condition string `json:"condition"` + EndAt string `json:"endAt"` + StartAt string `json:"startedAt"` + BuyerCastle string `json:"buyerCastle"` + Status string `json:"status"` + FinishedAt string `json:"finishedAt"` + BuyerTag string `json:"buyerTag"` + BuyerName string `json:"buyerName"` + Price int `json:"price"` + Stats map[string]int +} diff --git a/pkg/message/offer.go b/pkg/message/offer.go new file mode 100644 index 0000000..644baef --- /dev/null +++ b/pkg/message/offer.go @@ -0,0 +1,10 @@ +package message + +type Offer struct { + SellerID string `json:"sellerId"` + SellerName string `json:"sellerName"` + SellerCastle string `json:"sellerCastle"` + Item string `json:"item"` + Quantity int `json:"qty"` + Price int `json:"price"` +} diff --git a/pkg/message/store.go b/pkg/message/store.go new file mode 100644 index 0000000..dfce0b7 --- /dev/null +++ b/pkg/message/store.go @@ -0,0 +1,23 @@ +package message + +type Store struct { + Link string `json:"link"` + Name string `json:"name"` + OwnerName string `json:"ownerName"` + OwnerCastle string `json:"ownerCastle"` + Kind string `json:"kind"` + Mana int `json:"mana"` + Offers []StoreOffer `json:"offers"` + Specialization map[string]int `json:"specialization,omitempty"` + QualityCraftLevel int `json:"qualityCraftLevel"` + MaintenanceEnabled bool `json:"maintenanceEnabled"` + MaintenanceCost int `json:"maintenanceCost"` + GuildDiscount int `json:"guildDiscount"` + CastleDiscount int `json:"castleDiscount"` +} + +type StoreOffer struct { + Item string `json:"item"` + Price int `json:"price"` + Mana int `json:"mana"` +} diff --git a/pkg/storage/mongodb/user.go b/pkg/storage/mongodb/user.go new file mode 100644 index 0000000..ba85bd3 --- /dev/null +++ b/pkg/storage/mongodb/user.go @@ -0,0 +1,52 @@ +package mongodb + +import ( + "context" + "errors" + "gitea.russia9.dev/Russia9/chatwars-spy/pkg/domain" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "time" +) + +func NewUserRepo(database *mongo.Database) domain.UserRepo { + return &userRepo{Collection: database.Collection("users")} +} + +type userRepo struct { + Collection *mongo.Collection +} + +func (r *userRepo) Store(ctx context.Context, object *domain.User) error { + cursor := r.Collection.FindOne(ctx, bson.M{"_id": object.ID}) + if errors.Is(cursor.Err(), mongo.ErrNoDocuments) { + object.FirstSeen = time.Now() + object.LastSeen = time.Now() + _, err := r.Collection.InsertOne(ctx, object) + return err + } else if cursor.Err() != nil { + return cursor.Err() + } + + // Get old user + var old domain.User + err := cursor.Decode(&old) + if err != nil { + return err + } + + // Get old guild if empty + if object.Guild == "" { + object.Guild = old.Guild + } + + // Set old source + object.Source = old.Source + + // Set LastSeen date + object.LastSeen = time.Now() + + // Update object in DB + _, err = r.Collection.ReplaceOne(ctx, bson.M{"_id": object.ID}, object) + return err +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/LICENSE b/vendor/github.com/confluentinc/confluent-kafka-go/LICENSE new file mode 100644 index 0000000..e06d208 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/LICENSE @@ -0,0 +1,202 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/.gitignore b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/.gitignore new file mode 100644 index 0000000..b1a2111 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/.gitignore @@ -0,0 +1,2 @@ +testconf.json +go_rdkafka_generr/go_rdkafka_generr diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/00version.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/00version.go new file mode 100644 index 0000000..8c2c7b4 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/00version.go @@ -0,0 +1,58 @@ +package kafka + +/** + * Copyright 2016-2019 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ( + "fmt" +) + +/* +#include "select_rdkafka.h" + +//Minimum required librdkafka version. This is checked both during +//build-time and runtime. +//Make sure to keep the MIN_RD_KAFKA_VERSION, MIN_VER_ERRSTR and #error +//defines and strings in sync. +// + +#define MIN_RD_KAFKA_VERSION 0x01060000 + +#ifdef __APPLE__ +#define MIN_VER_ERRSTR "confluent-kafka-go requires librdkafka v1.6.0 or later. Install the latest version of librdkafka from Homebrew by running `brew install librdkafka` or `brew upgrade librdkafka`" +#else +#define MIN_VER_ERRSTR "confluent-kafka-go requires librdkafka v1.6.0 or later. Install the latest version of librdkafka from the Confluent repositories, see http://docs.confluent.io/current/installation.html" +#endif + +#if RD_KAFKA_VERSION < MIN_RD_KAFKA_VERSION +#ifdef __APPLE__ +#error "confluent-kafka-go requires librdkafka v1.6.0 or later. Install the latest version of librdkafka from Homebrew by running `brew install librdkafka` or `brew upgrade librdkafka`" +#else +#error "confluent-kafka-go requires librdkafka v1.6.0 or later. Install the latest version of librdkafka from the Confluent repositories, see http://docs.confluent.io/current/installation.html" +#endif +#endif +*/ +import "C" + +func versionCheck() error { + ver, verstr := LibraryVersion() + if ver < C.MIN_RD_KAFKA_VERSION { + return newErrorFromString(ErrNotImplemented, + fmt.Sprintf("%s: librdkafka version %s (0x%x) detected", + C.MIN_VER_ERRSTR, verstr, ver)) + } + return nil +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/README.md b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/README.md new file mode 100644 index 0000000..98152e9 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/README.md @@ -0,0 +1,145 @@ +# Information for confluent-kafka-go developers + +Whenever librdkafka error codes are updated make sure to run generate +before building: + +``` + $ make -f mk/Makefile generr + $ go build ./... +``` + + + + +## Testing + +Some of the tests included in this directory, the benchmark and integration tests in particular, +require an existing Kafka cluster and a testconf.json configuration file to +provide tests with bootstrap brokers, topic name, etc. + +The format of testconf.json is a JSON object: +``` +{ + "Brokers": "", + "Topic": "" +} +``` + +See testconf-example.json for an example and full set of available options. + + +To run unit-tests: +``` +$ go test +``` + +To run benchmark tests: +``` +$ go test -bench . +``` + +For the code coverage: +``` +$ go test -coverprofile=coverage.out -bench=. +$ go tool cover -func=coverage.out +``` + + +## Build tags + +Different build types are supported through Go build tags (`-tags ..`), +these tags should be specified on the **application** build/get/install command. + + * By default the bundled platform-specific static build of librdkafka will + be used. This works out of the box on Mac OSX and glibc-based Linux distros, + such as Ubuntu and CentOS. + * `-tags musl` - must be specified when building on/for musl-based Linux + distros, such as Alpine. Will use the bundled static musl build of + librdkafka. + * `-tags dynamic` - link librdkafka dynamically. A shared librdkafka library + must be installed manually through other means (apt-get, yum, build from + source, etc). + + + +## Generating HTML documentation + +To generate one-page HTML documentation run the mk/doc-gen.py script from the +top-level directory. This script requires the beautifulsoup4 Python package. + +``` +$ source .../your/virtualenv/bin/activate +$ pip install beautifulsoup4 +... +$ make -f mk/Makefile docs +``` + + +## Release process + +For each release candidate and final release, perform the following steps: + +### Update bundle to latest librdkafka + +See instructions in [kafka/librdkafka/README.md](kafka/librdkafka/README.md). + + +### Update librdkafka version requirement + +Update the minimum required librdkafka version in `kafka/00version.go` +and `README.md`. + + +### Update error codes + +Error codes can be automatically generated from the current librdkafka version. + + +Update generated error codes: + + $ make -f mk/Makefile generr + # Verify by building + + +### Rebuild everything + + $ go clean -i ./... + $ go build ./... + + +### Run full test suite + +Set up a test cluster using whatever mechanism you typically use +(docker, trivup, ccloud, ..). + +Make sure to update `kafka/testconf.json` as needed (broker list, $BROKERS) + +Run test suite: + + $ go test ./... + + +### Verify examples + +Manually verify that the examples/ applications work. + +Also make sure the examples in README.md work. + +Convert any examples using `github.com/confluentinc/confluent-kafka-go/kafka` to use +`gopkg.in/confluentinc/confluent-kafka-go.v1/kafka` import path. + + $ find examples/ -type f -name *\.go -exec sed -i -e 's|github\.com/confluentinc/confluent-kafka-go/kafka|gopkg\.in/confluentinc/confluent-kafka-go\.v1/kafka|g' {} + + +### Commit any changes + +Make sure to push to github before creating the tag to have CI tests pass. + + +### Create and push tag + + $ git tag v1.3.0 + $ git push --dry-run origin v1.3.0 + # Remove --dry-run and re-execute if it looks ok. + + +### Create release notes page on github diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/adminapi.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/adminapi.go new file mode 100644 index 0000000..e128129 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/adminapi.go @@ -0,0 +1,1025 @@ +/** + * Copyright 2018 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package kafka + +import ( + "context" + "fmt" + "strings" + "time" + "unsafe" +) + +/* +#include "select_rdkafka.h" +#include + +static const rd_kafka_topic_result_t * +topic_result_by_idx (const rd_kafka_topic_result_t **topics, size_t cnt, size_t idx) { + if (idx >= cnt) + return NULL; + return topics[idx]; +} + +static const rd_kafka_ConfigResource_t * +ConfigResource_by_idx (const rd_kafka_ConfigResource_t **res, size_t cnt, size_t idx) { + if (idx >= cnt) + return NULL; + return res[idx]; +} + +static const rd_kafka_ConfigEntry_t * +ConfigEntry_by_idx (const rd_kafka_ConfigEntry_t **entries, size_t cnt, size_t idx) { + if (idx >= cnt) + return NULL; + return entries[idx]; +} +*/ +import "C" + +// AdminClient is derived from an existing Producer or Consumer +type AdminClient struct { + handle *handle + isDerived bool // Derived from existing client handle +} + +func durationToMilliseconds(t time.Duration) int { + if t > 0 { + return (int)(t.Seconds() * 1000.0) + } + return (int)(t) +} + +// TopicResult provides per-topic operation result (error) information. +type TopicResult struct { + // Topic name + Topic string + // Error, if any, of result. Check with `Error.Code() != ErrNoError`. + Error Error +} + +// String returns a human-readable representation of a TopicResult. +func (t TopicResult) String() string { + if t.Error.code == 0 { + return t.Topic + } + return fmt.Sprintf("%s (%s)", t.Topic, t.Error.str) +} + +// TopicSpecification holds parameters for creating a new topic. +// TopicSpecification is analogous to NewTopic in the Java Topic Admin API. +type TopicSpecification struct { + // Topic name to create. + Topic string + // Number of partitions in topic. + NumPartitions int + // Default replication factor for the topic's partitions, or zero + // if an explicit ReplicaAssignment is set. + ReplicationFactor int + // (Optional) Explicit replica assignment. The outer array is + // indexed by the partition number, while the inner per-partition array + // contains the replica broker ids. The first broker in each + // broker id list will be the preferred replica. + ReplicaAssignment [][]int32 + // Topic configuration. + Config map[string]string +} + +// PartitionsSpecification holds parameters for creating additional partitions for a topic. +// PartitionsSpecification is analogous to NewPartitions in the Java Topic Admin API. +type PartitionsSpecification struct { + // Topic to create more partitions for. + Topic string + // New partition count for topic, must be higher than current partition count. + IncreaseTo int + // (Optional) Explicit replica assignment. The outer array is + // indexed by the new partition index (i.e., 0 for the first added + // partition), while the inner per-partition array + // contains the replica broker ids. The first broker in each + // broker id list will be the preferred replica. + ReplicaAssignment [][]int32 +} + +// ResourceType represents an Apache Kafka resource type +type ResourceType int + +const ( + // ResourceUnknown - Unknown + ResourceUnknown = ResourceType(C.RD_KAFKA_RESOURCE_UNKNOWN) + // ResourceAny - match any resource type (DescribeConfigs) + ResourceAny = ResourceType(C.RD_KAFKA_RESOURCE_ANY) + // ResourceTopic - Topic + ResourceTopic = ResourceType(C.RD_KAFKA_RESOURCE_TOPIC) + // ResourceGroup - Group + ResourceGroup = ResourceType(C.RD_KAFKA_RESOURCE_GROUP) + // ResourceBroker - Broker + ResourceBroker = ResourceType(C.RD_KAFKA_RESOURCE_BROKER) +) + +// String returns the human-readable representation of a ResourceType +func (t ResourceType) String() string { + return C.GoString(C.rd_kafka_ResourceType_name(C.rd_kafka_ResourceType_t(t))) +} + +// ResourceTypeFromString translates a resource type name/string to +// a ResourceType value. +func ResourceTypeFromString(typeString string) (ResourceType, error) { + switch strings.ToUpper(typeString) { + case "ANY": + return ResourceAny, nil + case "TOPIC": + return ResourceTopic, nil + case "GROUP": + return ResourceGroup, nil + case "BROKER": + return ResourceBroker, nil + default: + return ResourceUnknown, NewError(ErrInvalidArg, "Unknown resource type", false) + } +} + +// ConfigSource represents an Apache Kafka config source +type ConfigSource int + +const ( + // ConfigSourceUnknown is the default value + ConfigSourceUnknown = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG) + // ConfigSourceDynamicTopic is dynamic topic config that is configured for a specific topic + ConfigSourceDynamicTopic = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG) + // ConfigSourceDynamicBroker is dynamic broker config that is configured for a specific broker + ConfigSourceDynamicBroker = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG) + // ConfigSourceDynamicDefaultBroker is dynamic broker config that is configured as default for all brokers in the cluster + ConfigSourceDynamicDefaultBroker = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG) + // ConfigSourceStaticBroker is static broker config provided as broker properties at startup (e.g. from server.properties file) + ConfigSourceStaticBroker = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG) + // ConfigSourceDefault is built-in default configuration for configs that have a default value + ConfigSourceDefault = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG) +) + +// String returns the human-readable representation of a ConfigSource type +func (t ConfigSource) String() string { + return C.GoString(C.rd_kafka_ConfigSource_name(C.rd_kafka_ConfigSource_t(t))) +} + +// ConfigResource holds parameters for altering an Apache Kafka configuration resource +type ConfigResource struct { + // Type of resource to set. + Type ResourceType + // Name of resource to set. + Name string + // Config entries to set. + // Configuration updates are atomic, any configuration property not provided + // here will be reverted (by the broker) to its default value. + // Use DescribeConfigs to retrieve the list of current configuration entry values. + Config []ConfigEntry +} + +// String returns a human-readable representation of a ConfigResource +func (c ConfigResource) String() string { + return fmt.Sprintf("Resource(%s, %s)", c.Type, c.Name) +} + +// AlterOperation specifies the operation to perform on the ConfigEntry. +// Currently only AlterOperationSet. +type AlterOperation int + +const ( + // AlterOperationSet sets/overwrites the configuration setting. + AlterOperationSet = iota +) + +// String returns the human-readable representation of an AlterOperation +func (o AlterOperation) String() string { + switch o { + case AlterOperationSet: + return "Set" + default: + return fmt.Sprintf("Unknown%d?", int(o)) + } +} + +// ConfigEntry holds parameters for altering a resource's configuration. +type ConfigEntry struct { + // Name of configuration entry, e.g., topic configuration property name. + Name string + // Value of configuration entry. + Value string + // Operation to perform on the entry. + Operation AlterOperation +} + +// StringMapToConfigEntries creates a new map of ConfigEntry objects from the +// provided string map. The AlterOperation is set on each created entry. +func StringMapToConfigEntries(stringMap map[string]string, operation AlterOperation) []ConfigEntry { + var ceList []ConfigEntry + + for k, v := range stringMap { + ceList = append(ceList, ConfigEntry{Name: k, Value: v, Operation: operation}) + } + + return ceList +} + +// String returns a human-readable representation of a ConfigEntry. +func (c ConfigEntry) String() string { + return fmt.Sprintf("%v %s=\"%s\"", c.Operation, c.Name, c.Value) +} + +// ConfigEntryResult contains the result of a single configuration entry from a +// DescribeConfigs request. +type ConfigEntryResult struct { + // Name of configuration entry, e.g., topic configuration property name. + Name string + // Value of configuration entry. + Value string + // Source indicates the configuration source. + Source ConfigSource + // IsReadOnly indicates whether the configuration entry can be altered. + IsReadOnly bool + // IsSensitive indicates whether the configuration entry contains sensitive information, in which case the value will be unset. + IsSensitive bool + // IsSynonym indicates whether the configuration entry is a synonym for another configuration property. + IsSynonym bool + // Synonyms contains a map of configuration entries that are synonyms to this configuration entry. + Synonyms map[string]ConfigEntryResult +} + +// String returns a human-readable representation of a ConfigEntryResult. +func (c ConfigEntryResult) String() string { + return fmt.Sprintf("%s=\"%s\"", c.Name, c.Value) +} + +// setFromC sets up a ConfigEntryResult from a C ConfigEntry +func configEntryResultFromC(cEntry *C.rd_kafka_ConfigEntry_t) (entry ConfigEntryResult) { + entry.Name = C.GoString(C.rd_kafka_ConfigEntry_name(cEntry)) + cValue := C.rd_kafka_ConfigEntry_value(cEntry) + if cValue != nil { + entry.Value = C.GoString(cValue) + } + entry.Source = ConfigSource(C.rd_kafka_ConfigEntry_source(cEntry)) + entry.IsReadOnly = cint2bool(C.rd_kafka_ConfigEntry_is_read_only(cEntry)) + entry.IsSensitive = cint2bool(C.rd_kafka_ConfigEntry_is_sensitive(cEntry)) + entry.IsSynonym = cint2bool(C.rd_kafka_ConfigEntry_is_synonym(cEntry)) + + var cSynCnt C.size_t + cSyns := C.rd_kafka_ConfigEntry_synonyms(cEntry, &cSynCnt) + if cSynCnt > 0 { + entry.Synonyms = make(map[string]ConfigEntryResult) + } + + for si := 0; si < int(cSynCnt); si++ { + cSyn := C.ConfigEntry_by_idx(cSyns, cSynCnt, C.size_t(si)) + Syn := configEntryResultFromC(cSyn) + entry.Synonyms[Syn.Name] = Syn + } + + return entry +} + +// ConfigResourceResult provides the result for a resource from a AlterConfigs or +// DescribeConfigs request. +type ConfigResourceResult struct { + // Type of returned result resource. + Type ResourceType + // Name of returned result resource. + Name string + // Error, if any, of returned result resource. + Error Error + // Config entries, if any, of returned result resource. + Config map[string]ConfigEntryResult +} + +// String returns a human-readable representation of a ConfigResourceResult. +func (c ConfigResourceResult) String() string { + if c.Error.Code() != 0 { + return fmt.Sprintf("ResourceResult(%s, %s, \"%v\")", c.Type, c.Name, c.Error) + + } + return fmt.Sprintf("ResourceResult(%s, %s, %d config(s))", c.Type, c.Name, len(c.Config)) +} + +// waitResult waits for a result event on cQueue or the ctx to be cancelled, whichever happens +// first. +// The returned result event is checked for errors its error is returned if set. +func (a *AdminClient) waitResult(ctx context.Context, cQueue *C.rd_kafka_queue_t, cEventType C.rd_kafka_event_type_t) (rkev *C.rd_kafka_event_t, err error) { + + resultChan := make(chan *C.rd_kafka_event_t) + closeChan := make(chan bool) // never written to, just closed + + go func() { + for { + select { + case _, ok := <-closeChan: + if !ok { + // Context cancelled/timed out + close(resultChan) + return + } + + default: + // Wait for result event for at most 50ms + // to avoid blocking for too long if + // context is cancelled. + rkev := C.rd_kafka_queue_poll(cQueue, 50) + if rkev != nil { + resultChan <- rkev + close(resultChan) + return + } + } + } + }() + + select { + case rkev = <-resultChan: + // Result type check + if cEventType != C.rd_kafka_event_type(rkev) { + err = newErrorFromString(ErrInvalidType, + fmt.Sprintf("Expected %d result event, not %d", (int)(cEventType), (int)(C.rd_kafka_event_type(rkev)))) + C.rd_kafka_event_destroy(rkev) + return nil, err + } + + // Generic error handling + cErr := C.rd_kafka_event_error(rkev) + if cErr != 0 { + err = newErrorFromCString(cErr, C.rd_kafka_event_error_string(rkev)) + C.rd_kafka_event_destroy(rkev) + return nil, err + } + close(closeChan) + return rkev, nil + case <-ctx.Done(): + // signal close to go-routine + close(closeChan) + // wait for close from go-routine to make sure it is done + // using cQueue before we return. + rkev, ok := <-resultChan + if ok { + // throw away result since context was cancelled + C.rd_kafka_event_destroy(rkev) + } + return nil, ctx.Err() + } +} + +// cToTopicResults converts a C topic_result_t array to Go TopicResult list. +func (a *AdminClient) cToTopicResults(cTopicRes **C.rd_kafka_topic_result_t, cCnt C.size_t) (result []TopicResult, err error) { + + result = make([]TopicResult, int(cCnt)) + + for i := 0; i < int(cCnt); i++ { + cTopic := C.topic_result_by_idx(cTopicRes, cCnt, C.size_t(i)) + result[i].Topic = C.GoString(C.rd_kafka_topic_result_name(cTopic)) + result[i].Error = newErrorFromCString( + C.rd_kafka_topic_result_error(cTopic), + C.rd_kafka_topic_result_error_string(cTopic)) + } + + return result, nil +} + +// cConfigResourceToResult converts a C ConfigResource result array to Go ConfigResourceResult +func (a *AdminClient) cConfigResourceToResult(cRes **C.rd_kafka_ConfigResource_t, cCnt C.size_t) (result []ConfigResourceResult, err error) { + + result = make([]ConfigResourceResult, int(cCnt)) + + for i := 0; i < int(cCnt); i++ { + cRes := C.ConfigResource_by_idx(cRes, cCnt, C.size_t(i)) + result[i].Type = ResourceType(C.rd_kafka_ConfigResource_type(cRes)) + result[i].Name = C.GoString(C.rd_kafka_ConfigResource_name(cRes)) + result[i].Error = newErrorFromCString( + C.rd_kafka_ConfigResource_error(cRes), + C.rd_kafka_ConfigResource_error_string(cRes)) + var cConfigCnt C.size_t + cConfigs := C.rd_kafka_ConfigResource_configs(cRes, &cConfigCnt) + if cConfigCnt > 0 { + result[i].Config = make(map[string]ConfigEntryResult) + } + for ci := 0; ci < int(cConfigCnt); ci++ { + cEntry := C.ConfigEntry_by_idx(cConfigs, cConfigCnt, C.size_t(ci)) + entry := configEntryResultFromC(cEntry) + result[i].Config[entry.Name] = entry + } + } + + return result, nil +} + +// ClusterID returns the cluster ID as reported in broker metadata. +// +// Note on cancellation: Although the underlying C function respects the +// timeout, it currently cannot be manually cancelled. That means manually +// cancelling the context will block until the C function call returns. +// +// Requires broker version >= 0.10.0. +func (a *AdminClient) ClusterID(ctx context.Context) (clusterID string, err error) { + responseChan := make(chan *C.char, 1) + + go func() { + responseChan <- C.rd_kafka_clusterid(a.handle.rk, cTimeoutFromContext(ctx)) + }() + + select { + case <-ctx.Done(): + if cClusterID := <-responseChan; cClusterID != nil { + C.rd_kafka_mem_free(a.handle.rk, unsafe.Pointer(cClusterID)) + } + return "", ctx.Err() + + case cClusterID := <-responseChan: + if cClusterID == nil { // C timeout + <-ctx.Done() + return "", ctx.Err() + } + defer C.rd_kafka_mem_free(a.handle.rk, unsafe.Pointer(cClusterID)) + return C.GoString(cClusterID), nil + } +} + +// ControllerID returns the broker ID of the current controller as reported in +// broker metadata. +// +// Note on cancellation: Although the underlying C function respects the +// timeout, it currently cannot be manually cancelled. That means manually +// cancelling the context will block until the C function call returns. +// +// Requires broker version >= 0.10.0. +func (a *AdminClient) ControllerID(ctx context.Context) (controllerID int32, err error) { + responseChan := make(chan int32, 1) + + go func() { + responseChan <- int32(C.rd_kafka_controllerid(a.handle.rk, cTimeoutFromContext(ctx))) + }() + + select { + case <-ctx.Done(): + <-responseChan + return 0, ctx.Err() + + case controllerID := <-responseChan: + if controllerID < 0 { // C timeout + <-ctx.Done() + return 0, ctx.Err() + } + return controllerID, nil + } +} + +// CreateTopics creates topics in cluster. +// +// The list of TopicSpecification objects define the per-topic partition count, replicas, etc. +// +// Topic creation is non-atomic and may succeed for some topics but fail for others, +// make sure to check the result for topic-specific errors. +// +// Note: TopicSpecification is analogous to NewTopic in the Java Topic Admin API. +func (a *AdminClient) CreateTopics(ctx context.Context, topics []TopicSpecification, options ...CreateTopicsAdminOption) (result []TopicResult, err error) { + cTopics := make([]*C.rd_kafka_NewTopic_t, len(topics)) + + cErrstrSize := C.size_t(512) + cErrstr := (*C.char)(C.malloc(cErrstrSize)) + defer C.free(unsafe.Pointer(cErrstr)) + + // Convert Go TopicSpecifications to C TopicSpecifications + for i, topic := range topics { + + var cReplicationFactor C.int + if topic.ReplicationFactor == 0 { + cReplicationFactor = -1 + } else { + cReplicationFactor = C.int(topic.ReplicationFactor) + } + if topic.ReplicaAssignment != nil { + if cReplicationFactor != -1 { + return nil, newErrorFromString(ErrInvalidArg, + "TopicSpecification.ReplicationFactor and TopicSpecification.ReplicaAssignment are mutually exclusive") + } + + if len(topic.ReplicaAssignment) != topic.NumPartitions { + return nil, newErrorFromString(ErrInvalidArg, + "TopicSpecification.ReplicaAssignment must contain exactly TopicSpecification.NumPartitions partitions") + } + } + + cTopics[i] = C.rd_kafka_NewTopic_new( + C.CString(topic.Topic), + C.int(topic.NumPartitions), + cReplicationFactor, + cErrstr, cErrstrSize) + if cTopics[i] == nil { + return nil, newErrorFromString(ErrInvalidArg, + fmt.Sprintf("Topic %s: %s", topic.Topic, C.GoString(cErrstr))) + } + + defer C.rd_kafka_NewTopic_destroy(cTopics[i]) + + for p, replicas := range topic.ReplicaAssignment { + cReplicas := make([]C.int32_t, len(replicas)) + for ri, replica := range replicas { + cReplicas[ri] = C.int32_t(replica) + } + cErr := C.rd_kafka_NewTopic_set_replica_assignment( + cTopics[i], C.int32_t(p), + (*C.int32_t)(&cReplicas[0]), C.size_t(len(cReplicas)), + cErrstr, cErrstrSize) + if cErr != 0 { + return nil, newCErrorFromString(cErr, + fmt.Sprintf("Failed to set replica assignment for topic %s partition %d: %s", topic.Topic, p, C.GoString(cErrstr))) + } + } + + for key, value := range topic.Config { + cErr := C.rd_kafka_NewTopic_set_config( + cTopics[i], + C.CString(key), C.CString(value)) + if cErr != 0 { + return nil, newCErrorFromString(cErr, + fmt.Sprintf("Failed to set config %s=%s for topic %s", key, value, topic.Topic)) + } + } + } + + // Convert Go AdminOptions (if any) to C AdminOptions + genericOptions := make([]AdminOption, len(options)) + for i := range options { + genericOptions[i] = options[i] + } + cOptions, err := adminOptionsSetup(a.handle, C.RD_KAFKA_ADMIN_OP_CREATETOPICS, genericOptions) + if err != nil { + return nil, err + } + defer C.rd_kafka_AdminOptions_destroy(cOptions) + + // Create temporary queue for async operation + cQueue := C.rd_kafka_queue_new(a.handle.rk) + defer C.rd_kafka_queue_destroy(cQueue) + + // Asynchronous call + C.rd_kafka_CreateTopics( + a.handle.rk, + (**C.rd_kafka_NewTopic_t)(&cTopics[0]), + C.size_t(len(cTopics)), + cOptions, + cQueue) + + // Wait for result, error or context timeout + rkev, err := a.waitResult(ctx, cQueue, C.RD_KAFKA_EVENT_CREATETOPICS_RESULT) + if err != nil { + return nil, err + } + defer C.rd_kafka_event_destroy(rkev) + + cRes := C.rd_kafka_event_CreateTopics_result(rkev) + + // Convert result from C to Go + var cCnt C.size_t + cTopicRes := C.rd_kafka_CreateTopics_result_topics(cRes, &cCnt) + + return a.cToTopicResults(cTopicRes, cCnt) +} + +// DeleteTopics deletes a batch of topics. +// +// This operation is not transactional and may succeed for a subset of topics while +// failing others. +// It may take several seconds after the DeleteTopics result returns success for +// all the brokers to become aware that the topics are gone. During this time, +// topic metadata and configuration may continue to return information about deleted topics. +// +// Requires broker version >= 0.10.1.0 +func (a *AdminClient) DeleteTopics(ctx context.Context, topics []string, options ...DeleteTopicsAdminOption) (result []TopicResult, err error) { + cTopics := make([]*C.rd_kafka_DeleteTopic_t, len(topics)) + + cErrstrSize := C.size_t(512) + cErrstr := (*C.char)(C.malloc(cErrstrSize)) + defer C.free(unsafe.Pointer(cErrstr)) + + // Convert Go DeleteTopics to C DeleteTopics + for i, topic := range topics { + cTopics[i] = C.rd_kafka_DeleteTopic_new(C.CString(topic)) + if cTopics[i] == nil { + return nil, newErrorFromString(ErrInvalidArg, + fmt.Sprintf("Invalid arguments for topic %s", topic)) + } + + defer C.rd_kafka_DeleteTopic_destroy(cTopics[i]) + } + + // Convert Go AdminOptions (if any) to C AdminOptions + genericOptions := make([]AdminOption, len(options)) + for i := range options { + genericOptions[i] = options[i] + } + cOptions, err := adminOptionsSetup(a.handle, C.RD_KAFKA_ADMIN_OP_DELETETOPICS, genericOptions) + if err != nil { + return nil, err + } + defer C.rd_kafka_AdminOptions_destroy(cOptions) + + // Create temporary queue for async operation + cQueue := C.rd_kafka_queue_new(a.handle.rk) + defer C.rd_kafka_queue_destroy(cQueue) + + // Asynchronous call + C.rd_kafka_DeleteTopics( + a.handle.rk, + (**C.rd_kafka_DeleteTopic_t)(&cTopics[0]), + C.size_t(len(cTopics)), + cOptions, + cQueue) + + // Wait for result, error or context timeout + rkev, err := a.waitResult(ctx, cQueue, C.RD_KAFKA_EVENT_DELETETOPICS_RESULT) + if err != nil { + return nil, err + } + defer C.rd_kafka_event_destroy(rkev) + + cRes := C.rd_kafka_event_DeleteTopics_result(rkev) + + // Convert result from C to Go + var cCnt C.size_t + cTopicRes := C.rd_kafka_DeleteTopics_result_topics(cRes, &cCnt) + + return a.cToTopicResults(cTopicRes, cCnt) +} + +// CreatePartitions creates additional partitions for topics. +func (a *AdminClient) CreatePartitions(ctx context.Context, partitions []PartitionsSpecification, options ...CreatePartitionsAdminOption) (result []TopicResult, err error) { + cParts := make([]*C.rd_kafka_NewPartitions_t, len(partitions)) + + cErrstrSize := C.size_t(512) + cErrstr := (*C.char)(C.malloc(cErrstrSize)) + defer C.free(unsafe.Pointer(cErrstr)) + + // Convert Go PartitionsSpecification to C NewPartitions + for i, part := range partitions { + cParts[i] = C.rd_kafka_NewPartitions_new(C.CString(part.Topic), C.size_t(part.IncreaseTo), cErrstr, cErrstrSize) + if cParts[i] == nil { + return nil, newErrorFromString(ErrInvalidArg, + fmt.Sprintf("Topic %s: %s", part.Topic, C.GoString(cErrstr))) + } + + defer C.rd_kafka_NewPartitions_destroy(cParts[i]) + + for pidx, replicas := range part.ReplicaAssignment { + cReplicas := make([]C.int32_t, len(replicas)) + for ri, replica := range replicas { + cReplicas[ri] = C.int32_t(replica) + } + cErr := C.rd_kafka_NewPartitions_set_replica_assignment( + cParts[i], C.int32_t(pidx), + (*C.int32_t)(&cReplicas[0]), C.size_t(len(cReplicas)), + cErrstr, cErrstrSize) + if cErr != 0 { + return nil, newCErrorFromString(cErr, + fmt.Sprintf("Failed to set replica assignment for topic %s new partition index %d: %s", part.Topic, pidx, C.GoString(cErrstr))) + } + } + + } + + // Convert Go AdminOptions (if any) to C AdminOptions + genericOptions := make([]AdminOption, len(options)) + for i := range options { + genericOptions[i] = options[i] + } + cOptions, err := adminOptionsSetup(a.handle, C.RD_KAFKA_ADMIN_OP_CREATEPARTITIONS, genericOptions) + if err != nil { + return nil, err + } + defer C.rd_kafka_AdminOptions_destroy(cOptions) + + // Create temporary queue for async operation + cQueue := C.rd_kafka_queue_new(a.handle.rk) + defer C.rd_kafka_queue_destroy(cQueue) + + // Asynchronous call + C.rd_kafka_CreatePartitions( + a.handle.rk, + (**C.rd_kafka_NewPartitions_t)(&cParts[0]), + C.size_t(len(cParts)), + cOptions, + cQueue) + + // Wait for result, error or context timeout + rkev, err := a.waitResult(ctx, cQueue, C.RD_KAFKA_EVENT_CREATEPARTITIONS_RESULT) + if err != nil { + return nil, err + } + defer C.rd_kafka_event_destroy(rkev) + + cRes := C.rd_kafka_event_CreatePartitions_result(rkev) + + // Convert result from C to Go + var cCnt C.size_t + cTopicRes := C.rd_kafka_CreatePartitions_result_topics(cRes, &cCnt) + + return a.cToTopicResults(cTopicRes, cCnt) +} + +// AlterConfigs alters/updates cluster resource configuration. +// +// Updates are not transactional so they may succeed for a subset +// of the provided resources while others fail. +// The configuration for a particular resource is updated atomically, +// replacing values using the provided ConfigEntrys and reverting +// unspecified ConfigEntrys to their default values. +// +// Requires broker version >=0.11.0.0 +// +// AlterConfigs will replace all existing configuration for +// the provided resources with the new configuration given, +// reverting all other configuration to their default values. +// +// Multiple resources and resource types may be set, but at most one +// resource of type ResourceBroker is allowed per call since these +// resource requests must be sent to the broker specified in the resource. +func (a *AdminClient) AlterConfigs(ctx context.Context, resources []ConfigResource, options ...AlterConfigsAdminOption) (result []ConfigResourceResult, err error) { + cRes := make([]*C.rd_kafka_ConfigResource_t, len(resources)) + + cErrstrSize := C.size_t(512) + cErrstr := (*C.char)(C.malloc(cErrstrSize)) + defer C.free(unsafe.Pointer(cErrstr)) + + // Convert Go ConfigResources to C ConfigResources + for i, res := range resources { + cRes[i] = C.rd_kafka_ConfigResource_new( + C.rd_kafka_ResourceType_t(res.Type), C.CString(res.Name)) + if cRes[i] == nil { + return nil, newErrorFromString(ErrInvalidArg, + fmt.Sprintf("Invalid arguments for resource %v", res)) + } + + defer C.rd_kafka_ConfigResource_destroy(cRes[i]) + + for _, entry := range res.Config { + var cErr C.rd_kafka_resp_err_t + switch entry.Operation { + case AlterOperationSet: + cErr = C.rd_kafka_ConfigResource_set_config( + cRes[i], C.CString(entry.Name), C.CString(entry.Value)) + default: + panic(fmt.Sprintf("Invalid ConfigEntry.Operation: %v", entry.Operation)) + } + + if cErr != 0 { + return nil, + newCErrorFromString(cErr, + fmt.Sprintf("Failed to add configuration %s: %s", + entry, C.GoString(C.rd_kafka_err2str(cErr)))) + } + } + } + + // Convert Go AdminOptions (if any) to C AdminOptions + genericOptions := make([]AdminOption, len(options)) + for i := range options { + genericOptions[i] = options[i] + } + cOptions, err := adminOptionsSetup(a.handle, C.RD_KAFKA_ADMIN_OP_ALTERCONFIGS, genericOptions) + if err != nil { + return nil, err + } + defer C.rd_kafka_AdminOptions_destroy(cOptions) + + // Create temporary queue for async operation + cQueue := C.rd_kafka_queue_new(a.handle.rk) + defer C.rd_kafka_queue_destroy(cQueue) + + // Asynchronous call + C.rd_kafka_AlterConfigs( + a.handle.rk, + (**C.rd_kafka_ConfigResource_t)(&cRes[0]), + C.size_t(len(cRes)), + cOptions, + cQueue) + + // Wait for result, error or context timeout + rkev, err := a.waitResult(ctx, cQueue, C.RD_KAFKA_EVENT_ALTERCONFIGS_RESULT) + if err != nil { + return nil, err + } + defer C.rd_kafka_event_destroy(rkev) + + cResult := C.rd_kafka_event_AlterConfigs_result(rkev) + + // Convert results from C to Go + var cCnt C.size_t + cResults := C.rd_kafka_AlterConfigs_result_resources(cResult, &cCnt) + + return a.cConfigResourceToResult(cResults, cCnt) +} + +// DescribeConfigs retrieves configuration for cluster resources. +// +// The returned configuration includes default values, use +// ConfigEntryResult.IsDefault or ConfigEntryResult.Source to distinguish +// default values from manually configured settings. +// +// The value of config entries where .IsSensitive is true +// will always be nil to avoid disclosing sensitive +// information, such as security settings. +// +// Configuration entries where .IsReadOnly is true can't be modified +// (with AlterConfigs). +// +// Synonym configuration entries are returned if the broker supports +// it (broker version >= 1.1.0). See .Synonyms. +// +// Requires broker version >=0.11.0.0 +// +// Multiple resources and resource types may be requested, but at most +// one resource of type ResourceBroker is allowed per call +// since these resource requests must be sent to the broker specified +// in the resource. +func (a *AdminClient) DescribeConfigs(ctx context.Context, resources []ConfigResource, options ...DescribeConfigsAdminOption) (result []ConfigResourceResult, err error) { + cRes := make([]*C.rd_kafka_ConfigResource_t, len(resources)) + + cErrstrSize := C.size_t(512) + cErrstr := (*C.char)(C.malloc(cErrstrSize)) + defer C.free(unsafe.Pointer(cErrstr)) + + // Convert Go ConfigResources to C ConfigResources + for i, res := range resources { + cRes[i] = C.rd_kafka_ConfigResource_new( + C.rd_kafka_ResourceType_t(res.Type), C.CString(res.Name)) + if cRes[i] == nil { + return nil, newErrorFromString(ErrInvalidArg, + fmt.Sprintf("Invalid arguments for resource %v", res)) + } + + defer C.rd_kafka_ConfigResource_destroy(cRes[i]) + } + + // Convert Go AdminOptions (if any) to C AdminOptions + genericOptions := make([]AdminOption, len(options)) + for i := range options { + genericOptions[i] = options[i] + } + cOptions, err := adminOptionsSetup(a.handle, C.RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS, genericOptions) + if err != nil { + return nil, err + } + defer C.rd_kafka_AdminOptions_destroy(cOptions) + + // Create temporary queue for async operation + cQueue := C.rd_kafka_queue_new(a.handle.rk) + defer C.rd_kafka_queue_destroy(cQueue) + + // Asynchronous call + C.rd_kafka_DescribeConfigs( + a.handle.rk, + (**C.rd_kafka_ConfigResource_t)(&cRes[0]), + C.size_t(len(cRes)), + cOptions, + cQueue) + + // Wait for result, error or context timeout + rkev, err := a.waitResult(ctx, cQueue, C.RD_KAFKA_EVENT_DESCRIBECONFIGS_RESULT) + if err != nil { + return nil, err + } + defer C.rd_kafka_event_destroy(rkev) + + cResult := C.rd_kafka_event_DescribeConfigs_result(rkev) + + // Convert results from C to Go + var cCnt C.size_t + cResults := C.rd_kafka_DescribeConfigs_result_resources(cResult, &cCnt) + + return a.cConfigResourceToResult(cResults, cCnt) +} + +// GetMetadata queries broker for cluster and topic metadata. +// If topic is non-nil only information about that topic is returned, else if +// allTopics is false only information about locally used topics is returned, +// else information about all topics is returned. +// GetMetadata is equivalent to listTopics, describeTopics and describeCluster in the Java API. +func (a *AdminClient) GetMetadata(topic *string, allTopics bool, timeoutMs int) (*Metadata, error) { + return getMetadata(a, topic, allTopics, timeoutMs) +} + +// String returns a human readable name for an AdminClient instance +func (a *AdminClient) String() string { + return fmt.Sprintf("admin-%s", a.handle.String()) +} + +// get_handle implements the Handle interface +func (a *AdminClient) gethandle() *handle { + return a.handle +} + +// SetOAuthBearerToken sets the the data to be transmitted +// to a broker during SASL/OAUTHBEARER authentication. It will return nil +// on success, otherwise an error if: +// 1) the token data is invalid (meaning an expiration time in the past +// or either a token value or an extension key or value that does not meet +// the regular expression requirements as per +// https://tools.ietf.org/html/rfc7628#section-3.1); +// 2) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +// 3) SASL/OAUTHBEARER is supported but is not configured as the client's +// authentication mechanism. +func (a *AdminClient) SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error { + return a.handle.setOAuthBearerToken(oauthBearerToken) +} + +// SetOAuthBearerTokenFailure sets the error message describing why token +// retrieval/setting failed; it also schedules a new token refresh event for 10 +// seconds later so the attempt may be retried. It will return nil on +// success, otherwise an error if: +// 1) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +// 2) SASL/OAUTHBEARER is supported but is not configured as the client's +// authentication mechanism. +func (a *AdminClient) SetOAuthBearerTokenFailure(errstr string) error { + return a.handle.setOAuthBearerTokenFailure(errstr) +} + +// Close an AdminClient instance. +func (a *AdminClient) Close() { + if a.isDerived { + // Derived AdminClient needs no cleanup. + a.handle = &handle{} + return + } + + a.handle.cleanup() + + C.rd_kafka_destroy(a.handle.rk) +} + +// NewAdminClient creats a new AdminClient instance with a new underlying client instance +func NewAdminClient(conf *ConfigMap) (*AdminClient, error) { + + err := versionCheck() + if err != nil { + return nil, err + } + + a := &AdminClient{} + a.handle = &handle{} + + // Convert ConfigMap to librdkafka conf_t + cConf, err := conf.convert() + if err != nil { + return nil, err + } + + cErrstr := (*C.char)(C.malloc(C.size_t(256))) + defer C.free(unsafe.Pointer(cErrstr)) + + C.rd_kafka_conf_set_events(cConf, C.RD_KAFKA_EVENT_STATS|C.RD_KAFKA_EVENT_ERROR|C.RD_KAFKA_EVENT_OAUTHBEARER_TOKEN_REFRESH) + + // Create librdkafka producer instance. The Producer is somewhat cheaper than + // the consumer, but any instance type can be used for Admin APIs. + a.handle.rk = C.rd_kafka_new(C.RD_KAFKA_PRODUCER, cConf, cErrstr, 256) + if a.handle.rk == nil { + return nil, newErrorFromCString(C.RD_KAFKA_RESP_ERR__INVALID_ARG, cErrstr) + } + + a.isDerived = false + a.handle.setup() + + return a, nil +} + +// NewAdminClientFromProducer derives a new AdminClient from an existing Producer instance. +// The AdminClient will use the same configuration and connections as the parent instance. +func NewAdminClientFromProducer(p *Producer) (a *AdminClient, err error) { + if p.handle.rk == nil { + return nil, newErrorFromString(ErrInvalidArg, "Can't derive AdminClient from closed producer") + } + + a = &AdminClient{} + a.handle = &p.handle + a.isDerived = true + return a, nil +} + +// NewAdminClientFromConsumer derives a new AdminClient from an existing Consumer instance. +// The AdminClient will use the same configuration and connections as the parent instance. +func NewAdminClientFromConsumer(c *Consumer) (a *AdminClient, err error) { + if c.handle.rk == nil { + return nil, newErrorFromString(ErrInvalidArg, "Can't derive AdminClient from closed consumer") + } + + a = &AdminClient{} + a.handle = &c.handle + a.isDerived = true + return a, nil +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/adminoptions.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/adminoptions.go new file mode 100644 index 0000000..842631b --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/adminoptions.go @@ -0,0 +1,264 @@ +/** + * Copyright 2018 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package kafka + +import ( + "fmt" + "time" + "unsafe" +) + +/* +#include "select_rdkafka.h" +#include +*/ +import "C" + +// AdminOptionOperationTimeout sets the broker's operation timeout, such as the +// timeout for CreateTopics to complete the creation of topics on the controller +// before returning a result to the application. +// +// CreateTopics, DeleteTopics, CreatePartitions: +// a value 0 will return immediately after triggering topic +// creation, while > 0 will wait this long for topic creation to propagate +// in cluster. +// +// Default: 0 (return immediately). +// +// Valid for CreateTopics, DeleteTopics, CreatePartitions. +type AdminOptionOperationTimeout struct { + isSet bool + val time.Duration +} + +func (ao AdminOptionOperationTimeout) supportsCreateTopics() { +} +func (ao AdminOptionOperationTimeout) supportsDeleteTopics() { +} +func (ao AdminOptionOperationTimeout) supportsCreatePartitions() { +} + +func (ao AdminOptionOperationTimeout) apply(cOptions *C.rd_kafka_AdminOptions_t) error { + if !ao.isSet { + return nil + } + + cErrstrSize := C.size_t(512) + cErrstr := (*C.char)(C.malloc(cErrstrSize)) + defer C.free(unsafe.Pointer(cErrstr)) + + cErr := C.rd_kafka_AdminOptions_set_operation_timeout( + cOptions, C.int(durationToMilliseconds(ao.val)), + cErrstr, cErrstrSize) + if cErr != 0 { + C.rd_kafka_AdminOptions_destroy(cOptions) + return newCErrorFromString(cErr, + fmt.Sprintf("Failed to set operation timeout: %s", C.GoString(cErrstr))) + + } + + return nil +} + +// SetAdminOperationTimeout sets the broker's operation timeout, such as the +// timeout for CreateTopics to complete the creation of topics on the controller +// before returning a result to the application. +// +// CreateTopics, DeleteTopics, CreatePartitions: +// a value 0 will return immediately after triggering topic +// creation, while > 0 will wait this long for topic creation to propagate +// in cluster. +// +// Default: 0 (return immediately). +// +// Valid for CreateTopics, DeleteTopics, CreatePartitions. +func SetAdminOperationTimeout(t time.Duration) (ao AdminOptionOperationTimeout) { + ao.isSet = true + ao.val = t + return ao +} + +// AdminOptionRequestTimeout sets the overall request timeout, including broker +// lookup, request transmission, operation time on broker, and response. +// +// Default: `socket.timeout.ms`. +// +// Valid for all Admin API methods. +type AdminOptionRequestTimeout struct { + isSet bool + val time.Duration +} + +func (ao AdminOptionRequestTimeout) supportsCreateTopics() { +} +func (ao AdminOptionRequestTimeout) supportsDeleteTopics() { +} +func (ao AdminOptionRequestTimeout) supportsCreatePartitions() { +} +func (ao AdminOptionRequestTimeout) supportsAlterConfigs() { +} +func (ao AdminOptionRequestTimeout) supportsDescribeConfigs() { +} + +func (ao AdminOptionRequestTimeout) apply(cOptions *C.rd_kafka_AdminOptions_t) error { + if !ao.isSet { + return nil + } + + cErrstrSize := C.size_t(512) + cErrstr := (*C.char)(C.malloc(cErrstrSize)) + defer C.free(unsafe.Pointer(cErrstr)) + + cErr := C.rd_kafka_AdminOptions_set_request_timeout( + cOptions, C.int(durationToMilliseconds(ao.val)), + cErrstr, cErrstrSize) + if cErr != 0 { + C.rd_kafka_AdminOptions_destroy(cOptions) + return newCErrorFromString(cErr, + fmt.Sprintf("%s", C.GoString(cErrstr))) + + } + + return nil +} + +// SetAdminRequestTimeout sets the overall request timeout, including broker +// lookup, request transmission, operation time on broker, and response. +// +// Default: `socket.timeout.ms`. +// +// Valid for all Admin API methods. +func SetAdminRequestTimeout(t time.Duration) (ao AdminOptionRequestTimeout) { + ao.isSet = true + ao.val = t + return ao +} + +// AdminOptionValidateOnly tells the broker to only validate the request, +// without performing the requested operation (create topics, etc). +// +// Default: false. +// +// Valid for CreateTopics, CreatePartitions, AlterConfigs +type AdminOptionValidateOnly struct { + isSet bool + val bool +} + +func (ao AdminOptionValidateOnly) supportsCreateTopics() { +} +func (ao AdminOptionValidateOnly) supportsCreatePartitions() { +} +func (ao AdminOptionValidateOnly) supportsAlterConfigs() { +} + +func (ao AdminOptionValidateOnly) apply(cOptions *C.rd_kafka_AdminOptions_t) error { + if !ao.isSet { + return nil + } + + cErrstrSize := C.size_t(512) + cErrstr := (*C.char)(C.malloc(cErrstrSize)) + defer C.free(unsafe.Pointer(cErrstr)) + + cErr := C.rd_kafka_AdminOptions_set_validate_only( + cOptions, bool2cint(ao.val), + cErrstr, cErrstrSize) + if cErr != 0 { + C.rd_kafka_AdminOptions_destroy(cOptions) + return newCErrorFromString(cErr, + fmt.Sprintf("%s", C.GoString(cErrstr))) + + } + + return nil +} + +// SetAdminValidateOnly tells the broker to only validate the request, +// without performing the requested operation (create topics, etc). +// +// Default: false. +// +// Valid for CreateTopics, DeleteTopics, CreatePartitions, AlterConfigs +func SetAdminValidateOnly(validateOnly bool) (ao AdminOptionValidateOnly) { + ao.isSet = true + ao.val = validateOnly + return ao +} + +// CreateTopicsAdminOption - see setters. +// +// See SetAdminRequestTimeout, SetAdminOperationTimeout, SetAdminValidateOnly. +type CreateTopicsAdminOption interface { + supportsCreateTopics() + apply(cOptions *C.rd_kafka_AdminOptions_t) error +} + +// DeleteTopicsAdminOption - see setters. +// +// See SetAdminRequestTimeout, SetAdminOperationTimeout. +type DeleteTopicsAdminOption interface { + supportsDeleteTopics() + apply(cOptions *C.rd_kafka_AdminOptions_t) error +} + +// CreatePartitionsAdminOption - see setters. +// +// See SetAdminRequestTimeout, SetAdminOperationTimeout, SetAdminValidateOnly. +type CreatePartitionsAdminOption interface { + supportsCreatePartitions() + apply(cOptions *C.rd_kafka_AdminOptions_t) error +} + +// AlterConfigsAdminOption - see setters. +// +// See SetAdminRequestTimeout, SetAdminValidateOnly, SetAdminIncremental. +type AlterConfigsAdminOption interface { + supportsAlterConfigs() + apply(cOptions *C.rd_kafka_AdminOptions_t) error +} + +// DescribeConfigsAdminOption - see setters. +// +// See SetAdminRequestTimeout. +type DescribeConfigsAdminOption interface { + supportsDescribeConfigs() + apply(cOptions *C.rd_kafka_AdminOptions_t) error +} + +// AdminOption is a generic type not to be used directly. +// +// See CreateTopicsAdminOption et.al. +type AdminOption interface { + apply(cOptions *C.rd_kafka_AdminOptions_t) error +} + +func adminOptionsSetup(h *handle, opType C.rd_kafka_admin_op_t, options []AdminOption) (*C.rd_kafka_AdminOptions_t, error) { + + cOptions := C.rd_kafka_AdminOptions_new(h.rk, opType) + for _, opt := range options { + if opt == nil { + continue + } + err := opt.apply(cOptions) + if err != nil { + return nil, err + } + } + + return cOptions, nil +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/api.html b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/api.html new file mode 100644 index 0000000..8c495b3 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/api.html @@ -0,0 +1,4737 @@ + + + + + + + + kafka - Go Documentation Server + + + + + + + + +
+ ... +
+ +
+
+

+ Package kafka + + +

+ + + + +
+
+
+ + import "github.com/confluentinc/confluent-kafka-go/kafka" + +
+
+
+
+ + Overview + +
+
+ + Index + +
+
+
+
+
+ +
+ +
+

+ Overview ▾ +

+

+ Package kafka provides high-level Apache Kafka producer and consumers +using bindings on-top of the librdkafka C library. +

+

+ High-level Consumer +

+

+ * Decide if you want to read messages and events by calling `.Poll()` or +the deprecated option of using the `.Events()` channel. (If you want to use +`.Events()` channel then set `"go.events.channel.enable": true`). +

+

+ * Create a Consumer with `kafka.NewConsumer()` providing at +least the `bootstrap.servers` and `group.id` configuration properties. +

+

+ * Call `.Subscribe()` or (`.SubscribeTopics()` to subscribe to multiple topics) +to join the group with the specified subscription set. +Subscriptions are atomic, calling `.Subscribe*()` again will leave +the group and rejoin with the new set of topics. +

+

+ * Start reading events and messages from either the `.Events` channel +or by calling `.Poll()`. +

+

+ * When the group has rebalanced each client member is assigned a +(sub-)set of topic+partitions. +By default the consumer will start fetching messages for its assigned +partitions at this point, but your application may enable rebalance +events to get an insight into what the assigned partitions where +as well as set the initial offsets. To do this you need to pass +`"go.application.rebalance.enable": true` to the `NewConsumer()` call +mentioned above. You will (eventually) see a `kafka.AssignedPartitions` event +with the assigned partition set. You can optionally modify the initial +offsets (they'll default to stored offsets and if there are no previously stored +offsets it will fall back to `"auto.offset.reset"` +which defaults to the `latest` message) and then call `.Assign(partitions)` +to start consuming. If you don't need to modify the initial offsets you will +not need to call `.Assign()`, the client will do so automatically for you if +you dont, unless you are using the channel-based consumer in which case +you MUST call `.Assign()` when receiving the `AssignedPartitions` and +`RevokedPartitions` events. +

+

+ * As messages are fetched they will be made available on either the +`.Events` channel or by calling `.Poll()`, look for event type `*kafka.Message`. +

+

+ * Handle messages, events and errors to your liking. +

+

+ * When you are done consuming call `.Close()` to commit final offsets +and leave the consumer group. +

+

+ Producer +

+

+ * Create a Producer with `kafka.NewProducer()` providing at least +the `bootstrap.servers` configuration properties. +

+

+ * Messages may now be produced either by sending a `*kafka.Message` +on the `.ProduceChannel` or by calling `.Produce()`. +

+

+ * Producing is an asynchronous operation so the client notifies the application +of per-message produce success or failure through something called delivery reports. +Delivery reports are by default emitted on the `.Events()` channel as `*kafka.Message` +and you should check `msg.TopicPartition.Error` for `nil` to find out if the message +was succesfully delivered or not. +It is also possible to direct delivery reports to alternate channels +by providing a non-nil `chan Event` channel to `.Produce()`. +If no delivery reports are wanted they can be completely disabled by +setting configuration property `"go.delivery.reports": false`. +

+

+ * When you are done producing messages you will need to make sure all messages +are indeed delivered to the broker (or failed), remember that this is +an asynchronous client so some of your messages may be lingering in internal +channels or tranmission queues. +To do this you can either keep track of the messages you've produced +and wait for their corresponding delivery reports, or call the convenience +function `.Flush()` that will block until all message deliveries are done +or the provided timeout elapses. +

+

+ * Finally call `.Close()` to decommission the producer. +

+

+ Transactional producer API +

+

+ The transactional producer operates on top of the idempotent producer, +and provides full exactly-once semantics (EOS) for Apache Kafka when used +with the transaction aware consumer (`isolation.level=read_committed`). +

+

+ A producer instance is configured for transactions by setting the +`transactional.id` to an identifier unique for the application. This +id will be used to fence stale transactions from previous instances of +the application, typically following an outage or crash. +

+

+ After creating the transactional producer instance using `NewProducer()` +the transactional state must be initialized by calling +`InitTransactions()`. This is a blocking call that will +acquire a runtime producer id from the transaction coordinator broker +as well as abort any stale transactions and fence any still running producer +instances with the same `transactional.id`. +

+

+ Once transactions are initialized the application may begin a new +transaction by calling `BeginTransaction()`. +A producer instance may only have one single on-going transaction. +

+

+ Any messages produced after the transaction has been started will +belong to the ongoing transaction and will be committed or aborted +atomically. +It is not permitted to produce messages outside a transaction +boundary, e.g., before `BeginTransaction()` or after `CommitTransaction()`, +`AbortTransaction()` or if the current transaction has failed. +

+

+ If consumed messages are used as input to the transaction, the consumer +instance must be configured with `enable.auto.commit` set to `false`. +To commit the consumed offsets along with the transaction pass the +list of consumed partitions and the last offset processed + 1 to +`SendOffsetsToTransaction()` prior to committing the transaction. +This allows an aborted transaction to be restarted using the previously +committed offsets. +

+

+ To commit the produced messages, and any consumed offsets, to the +current transaction, call `CommitTransaction()`. +This call will block until the transaction has been fully committed or +failed (typically due to fencing by a newer producer instance). +

+

+ Alternatively, if processing fails, or an abortable transaction error is +raised, the transaction needs to be aborted by calling +`AbortTransaction()` which marks any produced messages and +offset commits as aborted. +

+

+ After the current transaction has been committed or aborted a new +transaction may be started by calling `BeginTransaction()` again. +

+

+ Retriable errors: +Some error cases allow the attempted operation to be retried, this is +indicated by the error object having the retriable flag set which can +be detected by calling `err.(kafka.Error).IsRetriable()`. +When this flag is set the application may retry the operation immediately +or preferably after a shorter grace period (to avoid busy-looping). +Retriable errors include timeouts, broker transport failures, etc. +

+

+ Abortable errors: +An ongoing transaction may fail permanently due to various errors, +such as transaction coordinator becoming unavailable, write failures to the +Apache Kafka log, under-replicated partitions, etc. +At this point the producer application must abort the current transaction +using `AbortTransaction()` and optionally start a new transaction +by calling `BeginTransaction()`. +Whether an error is abortable or not is detected by calling +`err.(kafka.Error).TxnRequiresAbort()` on the returned error object. +

+

+ Fatal errors: +While the underlying idempotent producer will typically only raise +fatal errors for unrecoverable cluster errors where the idempotency +guarantees can't be maintained, most of these are treated as abortable by +the transactional producer since transactions may be aborted and retried +in their entirety; +The transactional producer on the other hand introduces a set of additional +fatal errors which the application needs to handle by shutting down the +producer and terminate. There is no way for a producer instance to recover +from fatal errors. +Whether an error is fatal or not is detected by calling +`err.(kafka.Error).IsFatal()` on the returned error object or by checking +the global `GetFatalError()`. +

+

+ Handling of other errors: +For errors that have neither retriable, abortable or the fatal flag set +it is not always obvious how to handle them. While some of these errors +may be indicative of bugs in the application code, such as when +an invalid parameter is passed to a method, other errors might originate +from the broker and be passed thru as-is to the application. +The general recommendation is to treat these errors, that have +neither the retriable or abortable flags set, as fatal. +

+

+ Error handling example: +

+
retry:
+
+   err := producer.CommitTransaction(...)
+   if err == nil {
+       return nil
+   } else if err.(kafka.Error).TxnRequiresAbort() {
+       do_abort_transaction_and_reset_inputs()
+   } else if err.(kafka.Error).IsRetriable() {
+       goto retry
+   } else { // treat all other errors as fatal errors
+       panic(err)
+   }
+
+

+ Events +

+

+ Apart from emitting messages and delivery reports the client also communicates +with the application through a number of different event types. +An application may choose to handle or ignore these events. +

+

+ Consumer events +

+

+ * `*kafka.Message` - a fetched message. +

+

+ * `AssignedPartitions` - The assigned partition set for this client following a rebalance. +Requires `go.application.rebalance.enable` +

+

+ * `RevokedPartitions` - The counter part to `AssignedPartitions` following a rebalance. +`AssignedPartitions` and `RevokedPartitions` are symmetrical. +Requires `go.application.rebalance.enable` +

+

+ * `PartitionEOF` - Consumer has reached the end of a partition. +NOTE: The consumer will keep trying to fetch new messages for the partition. +

+

+ * `OffsetsCommitted` - Offset commit results (when `enable.auto.commit` is enabled). +

+

+ Producer events +

+

+ * `*kafka.Message` - delivery report for produced message. +Check `.TopicPartition.Error` for delivery result. +

+

+ Generic events for both Consumer and Producer +

+

+ * `KafkaError` - client (error codes are prefixed with _) or broker error. +These errors are normally just informational since the +client will try its best to automatically recover (eventually). +

+

+ * `OAuthBearerTokenRefresh` - retrieval of a new SASL/OAUTHBEARER token is required. +This event only occurs with sasl.mechanism=OAUTHBEARER. +Be sure to invoke SetOAuthBearerToken() on the Producer/Consumer/AdminClient +instance when a successful token retrieval is completed, otherwise be sure to +invoke SetOAuthBearerTokenFailure() to indicate that retrieval failed (or +if setting the token failed, which could happen if an extension doesn't meet +the required regular expression); invoking SetOAuthBearerTokenFailure() will +schedule a new event for 10 seconds later so another retrieval can be attempted. +

+

+ Hint: If your application registers a signal notification +(signal.Notify) makes sure the signals channel is buffered to avoid +possible complications with blocking Poll() calls. +

+

+ Note: The Confluent Kafka Go client is safe for concurrent use. +

+
+
+
+ +
+

+ Index ▾ +

+ +
+
+
+ + Constants + +
+
+ + func LibraryVersion() (int, string) + +
+
+ + func WriteErrorCodes(f *os.File) + +
+
+ + type AdminClient + +
+
+ + func NewAdminClient(conf *ConfigMap) (*AdminClient, error) + +
+
+ + func NewAdminClientFromConsumer(c *Consumer) (a *AdminClient, err error) + +
+
+ + func NewAdminClientFromProducer(p *Producer) (a *AdminClient, err error) + +
+
+ + func (a *AdminClient) AlterConfigs(ctx context.Context, resources []ConfigResource, options ...AlterConfigsAdminOption) (result []ConfigResourceResult, err error) + +
+
+ + func (a *AdminClient) Close() + +
+
+ + func (a *AdminClient) ClusterID(ctx context.Context) (clusterID string, err error) + +
+
+ + func (a *AdminClient) ControllerID(ctx context.Context) (controllerID int32, err error) + +
+
+ + func (a *AdminClient) CreatePartitions(ctx context.Context, partitions []PartitionsSpecification, options ...CreatePartitionsAdminOption) (result []TopicResult, err error) + +
+
+ + func (a *AdminClient) CreateTopics(ctx context.Context, topics []TopicSpecification, options ...CreateTopicsAdminOption) (result []TopicResult, err error) + +
+
+ + func (a *AdminClient) DeleteTopics(ctx context.Context, topics []string, options ...DeleteTopicsAdminOption) (result []TopicResult, err error) + +
+
+ + func (a *AdminClient) DescribeConfigs(ctx context.Context, resources []ConfigResource, options ...DescribeConfigsAdminOption) (result []ConfigResourceResult, err error) + +
+
+ + func (a *AdminClient) GetMetadata(topic *string, allTopics bool, timeoutMs int) (*Metadata, error) + +
+
+ + func (a *AdminClient) SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error + +
+
+ + func (a *AdminClient) SetOAuthBearerTokenFailure(errstr string) error + +
+
+ + func (a *AdminClient) String() string + +
+
+ + type AdminOption + +
+
+ + type AdminOptionOperationTimeout + +
+
+ + func SetAdminOperationTimeout(t time.Duration) (ao AdminOptionOperationTimeout) + +
+
+ + type AdminOptionRequestTimeout + +
+
+ + func SetAdminRequestTimeout(t time.Duration) (ao AdminOptionRequestTimeout) + +
+
+ + type AdminOptionValidateOnly + +
+
+ + func SetAdminValidateOnly(validateOnly bool) (ao AdminOptionValidateOnly) + +
+
+ + type AlterConfigsAdminOption + +
+
+ + type AlterOperation + +
+
+ + func (o AlterOperation) String() string + +
+
+ + type AssignedPartitions + +
+
+ + func (e AssignedPartitions) String() string + +
+
+ + type BrokerMetadata + +
+
+ + type ConfigEntry + +
+
+ + func StringMapToConfigEntries(stringMap map[string]string, operation AlterOperation) []ConfigEntry + +
+
+ + func (c ConfigEntry) String() string + +
+
+ + type ConfigEntryResult + +
+
+ + func (c ConfigEntryResult) String() string + +
+
+ + type ConfigMap + +
+
+ + func (m ConfigMap) Get(key string, defval ConfigValue) (ConfigValue, error) + +
+
+ + func (m ConfigMap) Set(kv string) error + +
+
+ + func (m ConfigMap) SetKey(key string, value ConfigValue) error + +
+
+ + type ConfigResource + +
+
+ + func (c ConfigResource) String() string + +
+
+ + type ConfigResourceResult + +
+
+ + func (c ConfigResourceResult) String() string + +
+
+ + type ConfigSource + +
+
+ + func (t ConfigSource) String() string + +
+
+ + type ConfigValue + +
+
+ + type Consumer + +
+
+ + func NewConsumer(conf *ConfigMap) (*Consumer, error) + +
+
+ + func (c *Consumer) Assign(partitions []TopicPartition) (err error) + +
+
+ + func (c *Consumer) Assignment() (partitions []TopicPartition, err error) + +
+
+ + func (c *Consumer) AssignmentLost() bool + +
+
+ + func (c *Consumer) Close() (err error) + +
+
+ + func (c *Consumer) Commit() ([]TopicPartition, error) + +
+
+ + func (c *Consumer) CommitMessage(m *Message) ([]TopicPartition, error) + +
+
+ + func (c *Consumer) CommitOffsets(offsets []TopicPartition) ([]TopicPartition, error) + +
+
+ + func (c *Consumer) Committed(partitions []TopicPartition, timeoutMs int) (offsets []TopicPartition, err error) + +
+
+ + func (c *Consumer) Events() chan Event + +
+
+ + func (c *Consumer) GetConsumerGroupMetadata() (*ConsumerGroupMetadata, error) + +
+
+ + func (c *Consumer) GetMetadata(topic *string, allTopics bool, timeoutMs int) (*Metadata, error) + +
+
+ + func (c *Consumer) GetRebalanceProtocol() string + +
+
+ + func (c *Consumer) GetWatermarkOffsets(topic string, partition int32) (low, high int64, err error) + +
+
+ + func (c *Consumer) IncrementalAssign(partitions []TopicPartition) (err error) + +
+
+ + func (c *Consumer) IncrementalUnassign(partitions []TopicPartition) (err error) + +
+
+ + func (c *Consumer) Logs() chan LogEvent + +
+
+ + func (c *Consumer) OffsetsForTimes(times []TopicPartition, timeoutMs int) (offsets []TopicPartition, err error) + +
+
+ + func (c *Consumer) Pause(partitions []TopicPartition) (err error) + +
+
+ + func (c *Consumer) Poll(timeoutMs int) (event Event) + +
+
+ + func (c *Consumer) Position(partitions []TopicPartition) (offsets []TopicPartition, err error) + +
+
+ + func (c *Consumer) QueryWatermarkOffsets(topic string, partition int32, timeoutMs int) (low, high int64, err error) + +
+
+ + func (c *Consumer) ReadMessage(timeout time.Duration) (*Message, error) + +
+
+ + func (c *Consumer) Resume(partitions []TopicPartition) (err error) + +
+
+ + func (c *Consumer) Seek(partition TopicPartition, timeoutMs int) error + +
+
+ + func (c *Consumer) SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error + +
+
+ + func (c *Consumer) SetOAuthBearerTokenFailure(errstr string) error + +
+
+ + func (c *Consumer) StoreOffsets(offsets []TopicPartition) (storedOffsets []TopicPartition, err error) + +
+
+ + func (c *Consumer) String() string + +
+
+ + func (c *Consumer) Subscribe(topic string, rebalanceCb RebalanceCb) error + +
+
+ + func (c *Consumer) SubscribeTopics(topics []string, rebalanceCb RebalanceCb) (err error) + +
+
+ + func (c *Consumer) Subscription() (topics []string, err error) + +
+
+ + func (c *Consumer) Unassign() (err error) + +
+
+ + func (c *Consumer) Unsubscribe() (err error) + +
+
+ + type ConsumerGroupMetadata + +
+
+ + func NewTestConsumerGroupMetadata(groupID string) (*ConsumerGroupMetadata, error) + +
+
+ + type CreatePartitionsAdminOption + +
+
+ + type CreateTopicsAdminOption + +
+
+ + type DeleteTopicsAdminOption + +
+
+ + type DescribeConfigsAdminOption + +
+
+ + type Error + +
+
+ + func NewError(code ErrorCode, str string, fatal bool) (err Error) + +
+
+ + func (e Error) Code() ErrorCode + +
+
+ + func (e Error) Error() string + +
+
+ + func (e Error) IsFatal() bool + +
+
+ + func (e Error) IsRetriable() bool + +
+
+ + func (e Error) String() string + +
+
+ + func (e Error) TxnRequiresAbort() bool + +
+
+ + type ErrorCode + +
+
+ + func (c ErrorCode) String() string + +
+
+ + type Event + +
+
+ + type Handle + +
+
+ + type Header + +
+
+ + func (h Header) String() string + +
+
+ + type LogEvent + +
+
+ + func (logEvent LogEvent) String() string + +
+
+ + type Message + +
+
+ + func (m *Message) String() string + +
+
+ + type Metadata + +
+
+ + type OAuthBearerToken + +
+
+ + type OAuthBearerTokenRefresh + +
+
+ + func (o OAuthBearerTokenRefresh) String() string + +
+
+ + type Offset + +
+
+ + func NewOffset(offset interface{}) (Offset, error) + +
+
+ + func OffsetTail(relativeOffset Offset) Offset + +
+
+ + func (o *Offset) Set(offset interface{}) error + +
+
+ + func (o Offset) String() string + +
+
+ + type OffsetsCommitted + +
+
+ + func (o OffsetsCommitted) String() string + +
+
+ + type PartitionEOF + +
+
+ + func (p PartitionEOF) String() string + +
+
+ + type PartitionMetadata + +
+
+ + type PartitionsSpecification + +
+
+ + type Producer + +
+
+ + func NewProducer(conf *ConfigMap) (*Producer, error) + +
+
+ + func (p *Producer) AbortTransaction(ctx context.Context) error + +
+
+ + func (p *Producer) BeginTransaction() error + +
+
+ + func (p *Producer) Close() + +
+
+ + func (p *Producer) CommitTransaction(ctx context.Context) error + +
+
+ + func (p *Producer) Events() chan Event + +
+
+ + func (p *Producer) Flush(timeoutMs int) int + +
+
+ + func (p *Producer) GetFatalError() error + +
+
+ + func (p *Producer) GetMetadata(topic *string, allTopics bool, timeoutMs int) (*Metadata, error) + +
+
+ + func (p *Producer) InitTransactions(ctx context.Context) error + +
+
+ + func (p *Producer) Len() int + +
+
+ + func (p *Producer) Logs() chan LogEvent + +
+
+ + func (p *Producer) OffsetsForTimes(times []TopicPartition, timeoutMs int) (offsets []TopicPartition, err error) + +
+
+ + func (p *Producer) Produce(msg *Message, deliveryChan chan Event) error + +
+
+ + func (p *Producer) ProduceChannel() chan *Message + +
+
+ + func (p *Producer) Purge(flags int) error + +
+
+ + func (p *Producer) QueryWatermarkOffsets(topic string, partition int32, timeoutMs int) (low, high int64, err error) + +
+
+ + func (p *Producer) SendOffsetsToTransaction(ctx context.Context, offsets []TopicPartition, consumerMetadata *ConsumerGroupMetadata) error + +
+
+ + func (p *Producer) SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error + +
+
+ + func (p *Producer) SetOAuthBearerTokenFailure(errstr string) error + +
+
+ + func (p *Producer) String() string + +
+
+ + func (p *Producer) TestFatalError(code ErrorCode, str string) ErrorCode + +
+
+ + type RebalanceCb + +
+
+ + type ResourceType + +
+
+ + func ResourceTypeFromString(typeString string) (ResourceType, error) + +
+
+ + func (t ResourceType) String() string + +
+
+ + type RevokedPartitions + +
+
+ + func (e RevokedPartitions) String() string + +
+
+ + type Stats + +
+
+ + func (e Stats) String() string + +
+
+ + type TimestampType + +
+
+ + func (t TimestampType) String() string + +
+
+ + type TopicMetadata + +
+
+ + type TopicPartition + +
+
+ + func (p TopicPartition) String() string + +
+
+ + type TopicPartitions + +
+
+ + func (tps TopicPartitions) Len() int + +
+
+ + func (tps TopicPartitions) Less(i, j int) bool + +
+
+ + func (tps TopicPartitions) Swap(i, j int) + +
+
+ + type TopicResult + +
+
+ + func (t TopicResult) String() string + +
+
+ + type TopicSpecification + +
+
+
+ +

+ Package files +

+

+ + + 00version.go + + + adminapi.go + + + adminoptions.go + + + build_glibc_linux.go + + + config.go + + + consumer.go + + + context.go + + + error.go + + + error_gen.go + + + event.go + + + generated_errors.go + + + handle.go + + + header.go + + + kafka.go + + + log.go + + + message.go + + + metadata.go + + + misc.go + + + offset.go + + + producer.go + + + testhelpers.go + + + time.go + + +

+
+ +
+ +

+ Constants +

+
const (
+    // ResourceUnknown - Unknown
+    ResourceUnknown = ResourceType(C.RD_KAFKA_RESOURCE_UNKNOWN)
+    // ResourceAny - match any resource type (DescribeConfigs)
+    ResourceAny = ResourceType(C.RD_KAFKA_RESOURCE_ANY)
+    // ResourceTopic - Topic
+    ResourceTopic = ResourceType(C.RD_KAFKA_RESOURCE_TOPIC)
+    // ResourceGroup - Group
+    ResourceGroup = ResourceType(C.RD_KAFKA_RESOURCE_GROUP)
+    // ResourceBroker - Broker
+    ResourceBroker = ResourceType(C.RD_KAFKA_RESOURCE_BROKER)
+)
+
const (
+    // ConfigSourceUnknown is the default value
+    ConfigSourceUnknown = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG)
+    // ConfigSourceDynamicTopic is dynamic topic config that is configured for a specific topic
+    ConfigSourceDynamicTopic = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG)
+    // ConfigSourceDynamicBroker is dynamic broker config that is configured for a specific broker
+    ConfigSourceDynamicBroker = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG)
+    // ConfigSourceDynamicDefaultBroker is dynamic broker config that is configured as default for all brokers in the cluster
+    ConfigSourceDynamicDefaultBroker = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG)
+    // ConfigSourceStaticBroker is static broker config provided as broker properties at startup (e.g. from server.properties file)
+    ConfigSourceStaticBroker = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG)
+    // ConfigSourceDefault is built-in default configuration for configs that have a default value
+    ConfigSourceDefault = ConfigSource(C.RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG)
+)
+
const (
+    // TimestampNotAvailable indicates no timestamp was set, or not available due to lacking broker support
+    TimestampNotAvailable = TimestampType(C.RD_KAFKA_TIMESTAMP_NOT_AVAILABLE)
+    // TimestampCreateTime indicates timestamp set by producer (source time)
+    TimestampCreateTime = TimestampType(C.RD_KAFKA_TIMESTAMP_CREATE_TIME)
+    // TimestampLogAppendTime indicates timestamp set set by broker (store time)
+    TimestampLogAppendTime = TimestampType(C.RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME)
+)
+
const (
+    // PurgeInFlight purges messages in-flight to or from the broker.
+    // Purging these messages will void any future acknowledgements from the
+    // broker, making it impossible for the application to know if these
+    // messages were successfully delivered or not.
+    // Retrying these messages may lead to duplicates.
+    PurgeInFlight = int(C.RD_KAFKA_PURGE_F_INFLIGHT)
+
+    // PurgeQueue Purge messages in internal queues.
+    PurgeQueue = int(C.RD_KAFKA_PURGE_F_QUEUE)
+
+    // PurgeNonBlocking Don't wait for background thread queue purging to finish.
+    PurgeNonBlocking = int(C.RD_KAFKA_PURGE_F_NON_BLOCKING)
+)
+
const (
+    // AlterOperationSet sets/overwrites the configuration setting.
+    AlterOperationSet = iota
+)
+

+ LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client +

+
const LibrdkafkaLinkInfo = "static glibc_linux from librdkafka-static-bundle-v1.8.2.tgz"
+

+ OffsetBeginning represents the earliest offset (logical) +

+
const OffsetBeginning = Offset(C.RD_KAFKA_OFFSET_BEGINNING)
+

+ OffsetEnd represents the latest offset (logical) +

+
const OffsetEnd = Offset(C.RD_KAFKA_OFFSET_END)
+

+ OffsetInvalid represents an invalid/unspecified offset +

+
const OffsetInvalid = Offset(C.RD_KAFKA_OFFSET_INVALID)
+

+ OffsetStored represents a stored offset +

+
const OffsetStored = Offset(C.RD_KAFKA_OFFSET_STORED)
+

+ PartitionAny represents any partition (for partitioning), +or unspecified value (for all other cases) +

+
const PartitionAny = int32(C.RD_KAFKA_PARTITION_UA)
+

+ func + + LibraryVersion + + +

+
func LibraryVersion() (int, string)
+

+ LibraryVersion returns the underlying librdkafka library version as a +(version_int, version_str) tuple. +

+

+ func + + WriteErrorCodes + + +

+
func WriteErrorCodes(f *os.File)
+

+ WriteErrorCodes writes Go error code constants to file from the +librdkafka error codes. +This function is not intended for public use. +

+

+ type + + AdminClient + + +

+

+ AdminClient is derived from an existing Producer or Consumer +

+
type AdminClient struct {
+    // contains filtered or unexported fields
+}
+
+

+ func + + NewAdminClient + + +

+
func NewAdminClient(conf *ConfigMap) (*AdminClient, error)
+

+ NewAdminClient creats a new AdminClient instance with a new underlying client instance +

+

+ func + + NewAdminClientFromConsumer + + +

+
func NewAdminClientFromConsumer(c *Consumer) (a *AdminClient, err error)
+

+ NewAdminClientFromConsumer derives a new AdminClient from an existing Consumer instance. +The AdminClient will use the same configuration and connections as the parent instance. +

+

+ func + + NewAdminClientFromProducer + + +

+
func NewAdminClientFromProducer(p *Producer) (a *AdminClient, err error)
+

+ NewAdminClientFromProducer derives a new AdminClient from an existing Producer instance. +The AdminClient will use the same configuration and connections as the parent instance. +

+

+ func (*AdminClient) + + AlterConfigs + + +

+
func (a *AdminClient) AlterConfigs(ctx context.Context, resources []ConfigResource, options ...AlterConfigsAdminOption) (result []ConfigResourceResult, err error)
+

+ AlterConfigs alters/updates cluster resource configuration. +

+

+ Updates are not transactional so they may succeed for a subset +of the provided resources while others fail. +The configuration for a particular resource is updated atomically, +replacing values using the provided ConfigEntrys and reverting +unspecified ConfigEntrys to their default values. +

+

+ Requires broker version >=0.11.0.0 +

+

+ AlterConfigs will replace all existing configuration for +the provided resources with the new configuration given, +reverting all other configuration to their default values. +

+

+ Multiple resources and resource types may be set, but at most one +resource of type ResourceBroker is allowed per call since these +resource requests must be sent to the broker specified in the resource. +

+

+ func (*AdminClient) + + Close + + +

+
func (a *AdminClient) Close()
+

+ Close an AdminClient instance. +

+

+ func (*AdminClient) + + ClusterID + + +

+
func (a *AdminClient) ClusterID(ctx context.Context) (clusterID string, err error)
+

+ ClusterID returns the cluster ID as reported in broker metadata. +

+

+ Note on cancellation: Although the underlying C function respects the +timeout, it currently cannot be manually cancelled. That means manually +cancelling the context will block until the C function call returns. +

+

+ Requires broker version >= 0.10.0. +

+

+ func (*AdminClient) + + ControllerID + + +

+
func (a *AdminClient) ControllerID(ctx context.Context) (controllerID int32, err error)
+

+ ControllerID returns the broker ID of the current controller as reported in +broker metadata. +

+

+ Note on cancellation: Although the underlying C function respects the +timeout, it currently cannot be manually cancelled. That means manually +cancelling the context will block until the C function call returns. +

+

+ Requires broker version >= 0.10.0. +

+

+ func (*AdminClient) + + CreatePartitions + + +

+
func (a *AdminClient) CreatePartitions(ctx context.Context, partitions []PartitionsSpecification, options ...CreatePartitionsAdminOption) (result []TopicResult, err error)
+

+ CreatePartitions creates additional partitions for topics. +

+

+ func (*AdminClient) + + CreateTopics + + +

+
func (a *AdminClient) CreateTopics(ctx context.Context, topics []TopicSpecification, options ...CreateTopicsAdminOption) (result []TopicResult, err error)
+

+ CreateTopics creates topics in cluster. +

+

+ The list of TopicSpecification objects define the per-topic partition count, replicas, etc. +

+

+ Topic creation is non-atomic and may succeed for some topics but fail for others, +make sure to check the result for topic-specific errors. +

+

+ Note: TopicSpecification is analogous to NewTopic in the Java Topic Admin API. +

+

+ func (*AdminClient) + + DeleteTopics + + +

+
func (a *AdminClient) DeleteTopics(ctx context.Context, topics []string, options ...DeleteTopicsAdminOption) (result []TopicResult, err error)
+

+ DeleteTopics deletes a batch of topics. +

+

+ This operation is not transactional and may succeed for a subset of topics while +failing others. +It may take several seconds after the DeleteTopics result returns success for +all the brokers to become aware that the topics are gone. During this time, +topic metadata and configuration may continue to return information about deleted topics. +

+

+ Requires broker version >= 0.10.1.0 +

+

+ func (*AdminClient) + + DescribeConfigs + + +

+
func (a *AdminClient) DescribeConfigs(ctx context.Context, resources []ConfigResource, options ...DescribeConfigsAdminOption) (result []ConfigResourceResult, err error)
+

+ DescribeConfigs retrieves configuration for cluster resources. +

+

+ The returned configuration includes default values, use +ConfigEntryResult.IsDefault or ConfigEntryResult.Source to distinguish +default values from manually configured settings. +

+

+ The value of config entries where .IsSensitive is true +will always be nil to avoid disclosing sensitive +information, such as security settings. +

+

+ Configuration entries where .IsReadOnly is true can't be modified +(with AlterConfigs). +

+

+ Synonym configuration entries are returned if the broker supports +it (broker version >= 1.1.0). See .Synonyms. +

+

+ Requires broker version >=0.11.0.0 +

+

+ Multiple resources and resource types may be requested, but at most +one resource of type ResourceBroker is allowed per call +since these resource requests must be sent to the broker specified +in the resource. +

+

+ func (*AdminClient) + + GetMetadata + + +

+
func (a *AdminClient) GetMetadata(topic *string, allTopics bool, timeoutMs int) (*Metadata, error)
+

+ GetMetadata queries broker for cluster and topic metadata. +If topic is non-nil only information about that topic is returned, else if +allTopics is false only information about locally used topics is returned, +else information about all topics is returned. +GetMetadata is equivalent to listTopics, describeTopics and describeCluster in the Java API. +

+

+ func (*AdminClient) + + SetOAuthBearerToken + + +

+
func (a *AdminClient) SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error
+

+ SetOAuthBearerToken sets the the data to be transmitted +to a broker during SASL/OAUTHBEARER authentication. It will return nil +on success, otherwise an error if: +1) the token data is invalid (meaning an expiration time in the past +or either a token value or an extension key or value that does not meet +the regular expression requirements as per + + https://tools.ietf.org/html/rfc7628#section-3.1 + + ); +2) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +3) SASL/OAUTHBEARER is supported but is not configured as the client's +authentication mechanism. +

+

+ func (*AdminClient) + + SetOAuthBearerTokenFailure + + +

+
func (a *AdminClient) SetOAuthBearerTokenFailure(errstr string) error
+

+ SetOAuthBearerTokenFailure sets the error message describing why token +retrieval/setting failed; it also schedules a new token refresh event for 10 +seconds later so the attempt may be retried. It will return nil on +success, otherwise an error if: +1) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +2) SASL/OAUTHBEARER is supported but is not configured as the client's +authentication mechanism. +

+

+ func (*AdminClient) + + String + + +

+
func (a *AdminClient) String() string
+

+ String returns a human readable name for an AdminClient instance +

+

+ type + + AdminOption + + +

+

+ AdminOption is a generic type not to be used directly. +

+

+ See CreateTopicsAdminOption et.al. +

+
type AdminOption interface {
+    // contains filtered or unexported methods
+}
+

+ type + + AdminOptionOperationTimeout + + +

+

+ AdminOptionOperationTimeout sets the broker's operation timeout, such as the +timeout for CreateTopics to complete the creation of topics on the controller +before returning a result to the application. +

+

+ CreateTopics, DeleteTopics, CreatePartitions: +a value 0 will return immediately after triggering topic +creation, while > 0 will wait this long for topic creation to propagate +in cluster. +

+

+ Default: 0 (return immediately). +

+

+ Valid for CreateTopics, DeleteTopics, CreatePartitions. +

+
type AdminOptionOperationTimeout struct {
+    // contains filtered or unexported fields
+}
+
+

+ func + + SetAdminOperationTimeout + + +

+
func SetAdminOperationTimeout(t time.Duration) (ao AdminOptionOperationTimeout)
+

+ SetAdminOperationTimeout sets the broker's operation timeout, such as the +timeout for CreateTopics to complete the creation of topics on the controller +before returning a result to the application. +

+

+ CreateTopics, DeleteTopics, CreatePartitions: +a value 0 will return immediately after triggering topic +creation, while > 0 will wait this long for topic creation to propagate +in cluster. +

+

+ Default: 0 (return immediately). +

+

+ Valid for CreateTopics, DeleteTopics, CreatePartitions. +

+

+ type + + AdminOptionRequestTimeout + + +

+

+ AdminOptionRequestTimeout sets the overall request timeout, including broker +lookup, request transmission, operation time on broker, and response. +

+

+ Default: `socket.timeout.ms`. +

+

+ Valid for all Admin API methods. +

+
type AdminOptionRequestTimeout struct {
+    // contains filtered or unexported fields
+}
+
+

+ func + + SetAdminRequestTimeout + + +

+
func SetAdminRequestTimeout(t time.Duration) (ao AdminOptionRequestTimeout)
+

+ SetAdminRequestTimeout sets the overall request timeout, including broker +lookup, request transmission, operation time on broker, and response. +

+

+ Default: `socket.timeout.ms`. +

+

+ Valid for all Admin API methods. +

+

+ type + + AdminOptionValidateOnly + + +

+

+ AdminOptionValidateOnly tells the broker to only validate the request, +without performing the requested operation (create topics, etc). +

+

+ Default: false. +

+

+ Valid for CreateTopics, CreatePartitions, AlterConfigs +

+
type AdminOptionValidateOnly struct {
+    // contains filtered or unexported fields
+}
+
+

+ func + + SetAdminValidateOnly + + +

+
func SetAdminValidateOnly(validateOnly bool) (ao AdminOptionValidateOnly)
+

+ SetAdminValidateOnly tells the broker to only validate the request, +without performing the requested operation (create topics, etc). +

+

+ Default: false. +

+

+ Valid for CreateTopics, DeleteTopics, CreatePartitions, AlterConfigs +

+

+ type + + AlterConfigsAdminOption + + +

+

+ AlterConfigsAdminOption - see setters. +

+

+ See SetAdminRequestTimeout, SetAdminValidateOnly, SetAdminIncremental. +

+
type AlterConfigsAdminOption interface {
+    // contains filtered or unexported methods
+}
+

+ type + + AlterOperation + + +

+

+ AlterOperation specifies the operation to perform on the ConfigEntry. +Currently only AlterOperationSet. +

+
type AlterOperation int
+

+ func (AlterOperation) + + String + + +

+
func (o AlterOperation) String() string
+

+ String returns the human-readable representation of an AlterOperation +

+

+ type + + AssignedPartitions + + +

+

+ AssignedPartitions consumer group rebalance event: assigned partition set +

+
type AssignedPartitions struct {
+    Partitions []TopicPartition
+}
+
+

+ func (AssignedPartitions) + + String + + +

+
func (e AssignedPartitions) String() string
+

+ type + + BrokerMetadata + + +

+

+ BrokerMetadata contains per-broker metadata +

+
type BrokerMetadata struct {
+    ID   int32
+    Host string
+    Port int
+}
+
+

+ type + + ConfigEntry + + +

+

+ ConfigEntry holds parameters for altering a resource's configuration. +

+
type ConfigEntry struct {
+    // Name of configuration entry, e.g., topic configuration property name.
+    Name string
+    // Value of configuration entry.
+    Value string
+    // Operation to perform on the entry.
+    Operation AlterOperation
+}
+
+

+ func + + StringMapToConfigEntries + + +

+
func StringMapToConfigEntries(stringMap map[string]string, operation AlterOperation) []ConfigEntry
+

+ StringMapToConfigEntries creates a new map of ConfigEntry objects from the +provided string map. The AlterOperation is set on each created entry. +

+

+ func (ConfigEntry) + + String + + +

+
func (c ConfigEntry) String() string
+

+ String returns a human-readable representation of a ConfigEntry. +

+

+ type + + ConfigEntryResult + + +

+

+ ConfigEntryResult contains the result of a single configuration entry from a +DescribeConfigs request. +

+
type ConfigEntryResult struct {
+    // Name of configuration entry, e.g., topic configuration property name.
+    Name string
+    // Value of configuration entry.
+    Value string
+    // Source indicates the configuration source.
+    Source ConfigSource
+    // IsReadOnly indicates whether the configuration entry can be altered.
+    IsReadOnly bool
+    // IsSensitive indicates whether the configuration entry contains sensitive information, in which case the value will be unset.
+    IsSensitive bool
+    // IsSynonym indicates whether the configuration entry is a synonym for another configuration property.
+    IsSynonym bool
+    // Synonyms contains a map of configuration entries that are synonyms to this configuration entry.
+    Synonyms map[string]ConfigEntryResult
+}
+
+

+ func (ConfigEntryResult) + + String + + +

+
func (c ConfigEntryResult) String() string
+

+ String returns a human-readable representation of a ConfigEntryResult. +

+

+ type + + ConfigMap + + +

+

+ ConfigMap is a map containing standard librdkafka configuration properties as documented in: + + https://github.com/edenhill/librdkafka/tree/master/CONFIGURATION.md + +

+

+ The special property "default.topic.config" (optional) is a ConfigMap +containing default topic configuration properties. +

+

+ The use of "default.topic.config" is deprecated, +topic configuration properties shall be specified in the standard ConfigMap. +For backwards compatibility, "default.topic.config" (if supplied) +takes precedence. +

+
type ConfigMap map[string]ConfigValue
+

+ func (ConfigMap) + + Get + + +

+
func (m ConfigMap) Get(key string, defval ConfigValue) (ConfigValue, error)
+

+ Get finds the given key in the ConfigMap and returns its value. +If the key is not found `defval` is returned. +If the key is found but the type does not match that of `defval` (unless nil) +an ErrInvalidArg error is returned. +

+

+ func (ConfigMap) + + Set + + +

+
func (m ConfigMap) Set(kv string) error
+

+ Set implements flag.Set (command line argument parser) as a convenience +for `-X key=value` config. +

+

+ func (ConfigMap) + + SetKey + + +

+
func (m ConfigMap) SetKey(key string, value ConfigValue) error
+

+ SetKey sets configuration property key to value. +

+

+ For user convenience a key prefixed with {topic}. will be +set on the "default.topic.config" sub-map, this use is deprecated. +

+

+ type + + ConfigResource + + +

+

+ ConfigResource holds parameters for altering an Apache Kafka configuration resource +

+
type ConfigResource struct {
+    // Type of resource to set.
+    Type ResourceType
+    // Name of resource to set.
+    Name string
+    // Config entries to set.
+    // Configuration updates are atomic, any configuration property not provided
+    // here will be reverted (by the broker) to its default value.
+    // Use DescribeConfigs to retrieve the list of current configuration entry values.
+    Config []ConfigEntry
+}
+
+

+ func (ConfigResource) + + String + + +

+
func (c ConfigResource) String() string
+

+ String returns a human-readable representation of a ConfigResource +

+

+ type + + ConfigResourceResult + + +

+

+ ConfigResourceResult provides the result for a resource from a AlterConfigs or +DescribeConfigs request. +

+
type ConfigResourceResult struct {
+    // Type of returned result resource.
+    Type ResourceType
+    // Name of returned result resource.
+    Name string
+    // Error, if any, of returned result resource.
+    Error Error
+    // Config entries, if any, of returned result resource.
+    Config map[string]ConfigEntryResult
+}
+
+

+ func (ConfigResourceResult) + + String + + +

+
func (c ConfigResourceResult) String() string
+

+ String returns a human-readable representation of a ConfigResourceResult. +

+

+ type + + ConfigSource + + +

+

+ ConfigSource represents an Apache Kafka config source +

+
type ConfigSource int
+

+ func (ConfigSource) + + String + + +

+
func (t ConfigSource) String() string
+

+ String returns the human-readable representation of a ConfigSource type +

+

+ type + + ConfigValue + + +

+

+ ConfigValue supports the following types: +

+
bool, int, string, any type with the standard String() interface
+
+
type ConfigValue interface{}
+

+ type + + Consumer + + +

+

+ Consumer implements a High-level Apache Kafka Consumer instance +

+
type Consumer struct {
+    // contains filtered or unexported fields
+}
+
+

+ func + + NewConsumer + + +

+
func NewConsumer(conf *ConfigMap) (*Consumer, error)
+

+ NewConsumer creates a new high-level Consumer instance. +

+

+ conf is a *ConfigMap with standard librdkafka configuration properties. +

+

+ Supported special configuration properties: +

+
go.application.rebalance.enable (bool, false) - Forward rebalancing responsibility to application via the Events() channel.
+                                     If set to true the app must handle the AssignedPartitions and
+                                     RevokedPartitions events and call Assign() and Unassign()
+                                     respectively.
+go.events.channel.enable (bool, false) - [deprecated] Enable the Events() channel. Messages and events will be pushed on the Events() channel and the Poll() interface will be disabled.
+go.events.channel.size (int, 1000) - Events() channel size
+go.logs.channel.enable (bool, false) - Forward log to Logs() channel.
+go.logs.channel (chan kafka.LogEvent, nil) - Forward logs to application-provided channel instead of Logs(). Requires go.logs.channel.enable=true.
+
+

+ WARNING: Due to the buffering nature of channels (and queues in general) the +use of the events channel risks receiving outdated events and +messages. Minimizing go.events.channel.size reduces the risk +and number of outdated events and messages but does not eliminate +the factor completely. With a channel size of 1 at most one +event or message may be outdated. +

+

+ func (*Consumer) + + Assign + + +

+
func (c *Consumer) Assign(partitions []TopicPartition) (err error)
+

+ Assign an atomic set of partitions to consume. +

+

+ The .Offset field of each TopicPartition must either be set to an absolute +starting offset (>= 0), or one of the logical offsets (`kafka.OffsetEnd` etc), +but should typically be set to `kafka.OffsetStored` to have the consumer +use the committed offset as a start position, with a fallback to +`auto.offset.reset` if there is no committed offset. +

+

+ This replaces the current assignment. +

+

+ func (*Consumer) + + Assignment + + +

+
func (c *Consumer) Assignment() (partitions []TopicPartition, err error)
+

+ Assignment returns the current partition assignments +

+

+ func (*Consumer) + + AssignmentLost + + +

+
func (c *Consumer) AssignmentLost() bool
+

+ AssignmentLost returns true if current partition assignment has been lost. +This method is only applicable for use with a subscribing consumer when +handling a rebalance event or callback. +Partitions that have been lost may already be owned by other members in the +group and therefore commiting offsets, for example, may fail. +

+

+ func (*Consumer) + + Close + + +

+
func (c *Consumer) Close() (err error)
+

+ Close Consumer instance. +The object is no longer usable after this call. +

+

+ func (*Consumer) + + Commit + + +

+
func (c *Consumer) Commit() ([]TopicPartition, error)
+

+ Commit offsets for currently assigned partitions +This is a blocking call. +Returns the committed offsets on success. +

+

+ func (*Consumer) + + CommitMessage + + +

+
func (c *Consumer) CommitMessage(m *Message) ([]TopicPartition, error)
+

+ CommitMessage commits offset based on the provided message. +This is a blocking call. +Returns the committed offsets on success. +

+

+ func (*Consumer) + + CommitOffsets + + +

+
func (c *Consumer) CommitOffsets(offsets []TopicPartition) ([]TopicPartition, error)
+

+ CommitOffsets commits the provided list of offsets +This is a blocking call. +Returns the committed offsets on success. +

+

+ func (*Consumer) + + Committed + + +

+
func (c *Consumer) Committed(partitions []TopicPartition, timeoutMs int) (offsets []TopicPartition, err error)
+

+ Committed retrieves committed offsets for the given set of partitions +

+

+ func (*Consumer) + + Events + + +

+
func (c *Consumer) Events() chan Event
+

+ Events returns the Events channel (if enabled) +

+

+ func (*Consumer) + + GetConsumerGroupMetadata + + +

+
func (c *Consumer) GetConsumerGroupMetadata() (*ConsumerGroupMetadata, error)
+

+ GetConsumerGroupMetadata returns the consumer's current group metadata. +This object should be passed to the transactional producer's +SendOffsetsToTransaction() API. +

+

+ func (*Consumer) + + GetMetadata + + +

+
func (c *Consumer) GetMetadata(topic *string, allTopics bool, timeoutMs int) (*Metadata, error)
+

+ GetMetadata queries broker for cluster and topic metadata. +If topic is non-nil only information about that topic is returned, else if +allTopics is false only information about locally used topics is returned, +else information about all topics is returned. +GetMetadata is equivalent to listTopics, describeTopics and describeCluster in the Java API. +

+

+ func (*Consumer) + + GetRebalanceProtocol + + +

+
func (c *Consumer) GetRebalanceProtocol() string
+

+ GetRebalanceProtocol returns the current consumer group rebalance protocol, +which is either "EAGER" or "COOPERATIVE". +If the rebalance protocol is not known in the current state an empty string +is returned. +Should typically only be called during rebalancing. +

+

+ func (*Consumer) + + GetWatermarkOffsets + + +

+
func (c *Consumer) GetWatermarkOffsets(topic string, partition int32) (low, high int64, err error)
+

+ GetWatermarkOffsets returns the cached low and high offsets for the given topic +and partition. The high offset is populated on every fetch response or via calling QueryWatermarkOffsets. +The low offset is populated every statistics.interval.ms if that value is set. +OffsetInvalid will be returned if there is no cached offset for either value. +

+

+ func (*Consumer) + + IncrementalAssign + + +

+
func (c *Consumer) IncrementalAssign(partitions []TopicPartition) (err error)
+

+ IncrementalAssign adds the specified partitions to the current set of +partitions to consume. +

+

+ The .Offset field of each TopicPartition must either be set to an absolute +starting offset (>= 0), or one of the logical offsets (`kafka.OffsetEnd` etc), +but should typically be set to `kafka.OffsetStored` to have the consumer +use the committed offset as a start position, with a fallback to +`auto.offset.reset` if there is no committed offset. +

+

+ The new partitions must not be part of the current assignment. +

+

+ func (*Consumer) + + IncrementalUnassign + + +

+
func (c *Consumer) IncrementalUnassign(partitions []TopicPartition) (err error)
+

+ IncrementalUnassign removes the specified partitions from the current set of +partitions to consume. +

+

+ The .Offset field of the TopicPartition is ignored. +

+

+ The removed partitions must be part of the current assignment. +

+

+ func (*Consumer) + + Logs + + +

+
func (c *Consumer) Logs() chan LogEvent
+

+ Logs returns the log channel if enabled, or nil otherwise. +

+

+ func (*Consumer) + + OffsetsForTimes + + +

+
func (c *Consumer) OffsetsForTimes(times []TopicPartition, timeoutMs int) (offsets []TopicPartition, err error)
+

+ OffsetsForTimes looks up offsets by timestamp for the given partitions. +

+

+ The returned offset for each partition is the earliest offset whose +timestamp is greater than or equal to the given timestamp in the +corresponding partition. If the provided timestamp exceeds that of the +last message in the partition, a value of -1 will be returned. +

+

+ The timestamps to query are represented as `.Offset` in the `times` +argument and the looked up offsets are represented as `.Offset` in the returned +`offsets` list. +

+

+ The function will block for at most timeoutMs milliseconds. +

+

+ Duplicate Topic+Partitions are not supported. +Per-partition errors may be returned in the `.Error` field. +

+

+ func (*Consumer) + + Pause + + +

+
func (c *Consumer) Pause(partitions []TopicPartition) (err error)
+

+ Pause consumption for the provided list of partitions +

+

+ Note that messages already enqueued on the consumer's Event channel +(if `go.events.channel.enable` has been set) will NOT be purged by +this call, set `go.events.channel.size` accordingly. +

+

+ func (*Consumer) + + Poll + + +

+
func (c *Consumer) Poll(timeoutMs int) (event Event)
+

+ Poll the consumer for messages or events. +

+

+ Will block for at most timeoutMs milliseconds +

+

+ The following callbacks may be triggered: +

+
Subscribe()'s rebalanceCb
+
+

+ Returns nil on timeout, else an Event +

+

+ func (*Consumer) + + Position + + +

+
func (c *Consumer) Position(partitions []TopicPartition) (offsets []TopicPartition, err error)
+

+ Position returns the current consume position for the given partitions. +Typical use is to call Assignment() to get the partition list +and then pass it to Position() to get the current consume position for +each of the assigned partitions. +The consume position is the next message to read from the partition. +i.e., the offset of the last message seen by the application + 1. +

+

+ func (*Consumer) + + QueryWatermarkOffsets + + +

+
func (c *Consumer) QueryWatermarkOffsets(topic string, partition int32, timeoutMs int) (low, high int64, err error)
+

+ QueryWatermarkOffsets queries the broker for the low and high offsets for the given topic and partition. +

+

+ func (*Consumer) + + ReadMessage + + +

+
func (c *Consumer) ReadMessage(timeout time.Duration) (*Message, error)
+

+ ReadMessage polls the consumer for a message. +

+

+ This is a convenience API that wraps Poll() and only returns +messages or errors. All other event types are discarded. +

+

+ The call will block for at most `timeout` waiting for +a new message or error. `timeout` may be set to -1 for +indefinite wait. +

+

+ Timeout is returned as (nil, err) where err is `err.(kafka.Error).Code() == kafka.ErrTimedOut`. +

+

+ Messages are returned as (msg, nil), +while general errors are returned as (nil, err), +and partition-specific errors are returned as (msg, err) where +msg.TopicPartition provides partition-specific information (such as topic, partition and offset). +

+

+ All other event types, such as PartitionEOF, AssignedPartitions, etc, are silently discarded. +

+

+ func (*Consumer) + + Resume + + +

+
func (c *Consumer) Resume(partitions []TopicPartition) (err error)
+

+ Resume consumption for the provided list of partitions +

+

+ func (*Consumer) + + Seek + + +

+
func (c *Consumer) Seek(partition TopicPartition, timeoutMs int) error
+

+ Seek seeks the given topic partitions using the offset from the TopicPartition. +

+

+ If timeoutMs is not 0 the call will wait this long for the +seek to be performed. If the timeout is reached the internal state +will be unknown and this function returns ErrTimedOut. +If timeoutMs is 0 it will initiate the seek but return +immediately without any error reporting (e.g., async). +

+

+ Seek() may only be used for partitions already being consumed +(through Assign() or implicitly through a self-rebalanced Subscribe()). +To set the starting offset it is preferred to use Assign() and provide +a starting offset for each partition. +

+

+ Returns an error on failure or nil otherwise. +

+

+ func (*Consumer) + + SetOAuthBearerToken + + +

+
func (c *Consumer) SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error
+

+ SetOAuthBearerToken sets the the data to be transmitted +to a broker during SASL/OAUTHBEARER authentication. It will return nil +on success, otherwise an error if: +1) the token data is invalid (meaning an expiration time in the past +or either a token value or an extension key or value that does not meet +the regular expression requirements as per + + https://tools.ietf.org/html/rfc7628#section-3.1 + + ); +2) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +3) SASL/OAUTHBEARER is supported but is not configured as the client's +authentication mechanism. +

+

+ func (*Consumer) + + SetOAuthBearerTokenFailure + + +

+
func (c *Consumer) SetOAuthBearerTokenFailure(errstr string) error
+

+ SetOAuthBearerTokenFailure sets the error message describing why token +retrieval/setting failed; it also schedules a new token refresh event for 10 +seconds later so the attempt may be retried. It will return nil on +success, otherwise an error if: +1) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +2) SASL/OAUTHBEARER is supported but is not configured as the client's +authentication mechanism. +

+

+ func (*Consumer) + + StoreOffsets + + +

+
func (c *Consumer) StoreOffsets(offsets []TopicPartition) (storedOffsets []TopicPartition, err error)
+

+ StoreOffsets stores the provided list of offsets that will be committed +to the offset store according to `auto.commit.interval.ms` or manual +offset-less Commit(). +

+

+ Returns the stored offsets on success. If at least one offset couldn't be stored, +an error and a list of offsets is returned. Each offset can be checked for +specific errors via its `.Error` member. +

+

+ func (*Consumer) + + String + + +

+
func (c *Consumer) String() string
+

+ Strings returns a human readable name for a Consumer instance +

+

+ func (*Consumer) + + Subscribe + + +

+
func (c *Consumer) Subscribe(topic string, rebalanceCb RebalanceCb) error
+

+ Subscribe to a single topic +This replaces the current subscription +

+

+ func (*Consumer) + + SubscribeTopics + + +

+
func (c *Consumer) SubscribeTopics(topics []string, rebalanceCb RebalanceCb) (err error)
+

+ SubscribeTopics subscribes to the provided list of topics. +This replaces the current subscription. +

+

+ func (*Consumer) + + Subscription + + +

+
func (c *Consumer) Subscription() (topics []string, err error)
+

+ Subscription returns the current subscription as set by Subscribe() +

+

+ func (*Consumer) + + Unassign + + +

+
func (c *Consumer) Unassign() (err error)
+

+ Unassign the current set of partitions to consume. +

+

+ func (*Consumer) + + Unsubscribe + + +

+
func (c *Consumer) Unsubscribe() (err error)
+

+ Unsubscribe from the current subscription, if any. +

+

+ type + + ConsumerGroupMetadata + + +

+

+ ConsumerGroupMetadata reflects the current consumer group member metadata. +

+
type ConsumerGroupMetadata struct {
+    // contains filtered or unexported fields
+}
+
+

+ func + + NewTestConsumerGroupMetadata + + +

+
func NewTestConsumerGroupMetadata(groupID string) (*ConsumerGroupMetadata, error)
+

+ NewTestConsumerGroupMetadata creates a new consumer group metadata instance +mainly for testing use. +Use GetConsumerGroupMetadata() to retrieve the real metadata. +

+

+ type + + CreatePartitionsAdminOption + + +

+

+ CreatePartitionsAdminOption - see setters. +

+

+ See SetAdminRequestTimeout, SetAdminOperationTimeout, SetAdminValidateOnly. +

+
type CreatePartitionsAdminOption interface {
+    // contains filtered or unexported methods
+}
+

+ type + + CreateTopicsAdminOption + + +

+

+ CreateTopicsAdminOption - see setters. +

+

+ See SetAdminRequestTimeout, SetAdminOperationTimeout, SetAdminValidateOnly. +

+
type CreateTopicsAdminOption interface {
+    // contains filtered or unexported methods
+}
+

+ type + + DeleteTopicsAdminOption + + +

+

+ DeleteTopicsAdminOption - see setters. +

+

+ See SetAdminRequestTimeout, SetAdminOperationTimeout. +

+
type DeleteTopicsAdminOption interface {
+    // contains filtered or unexported methods
+}
+

+ type + + DescribeConfigsAdminOption + + +

+

+ DescribeConfigsAdminOption - see setters. +

+

+ See SetAdminRequestTimeout. +

+
type DescribeConfigsAdminOption interface {
+    // contains filtered or unexported methods
+}
+

+ type + + Error + + +

+

+ Error provides a Kafka-specific error container +

+
type Error struct {
+    // contains filtered or unexported fields
+}
+
+

+ func + + NewError + + +

+
func NewError(code ErrorCode, str string, fatal bool) (err Error)
+

+ NewError creates a new Error. +

+

+ func (Error) + + Code + + +

+
func (e Error) Code() ErrorCode
+

+ Code returns the ErrorCode of an Error +

+

+ func (Error) + + Error + + +

+
func (e Error) Error() string
+

+ Error returns a human readable representation of an Error +Same as Error.String() +

+

+ func (Error) + + IsFatal + + +

+
func (e Error) IsFatal() bool
+

+ IsFatal returns true if the error is a fatal error. +A fatal error indicates the client instance is no longer operable and +should be terminated. Typical causes include non-recoverable +idempotent producer errors. +

+

+ func (Error) + + IsRetriable + + +

+
func (e Error) IsRetriable() bool
+

+ IsRetriable returns true if the operation that caused this error +may be retried. +This flag is currently only set by the Transactional producer API. +

+

+ func (Error) + + String + + +

+
func (e Error) String() string
+

+ String returns a human readable representation of an Error +

+

+ func (Error) + + TxnRequiresAbort + + +

+
func (e Error) TxnRequiresAbort() bool
+

+ TxnRequiresAbort returns true if the error is an abortable transaction error +that requires the application to abort the current transaction with +AbortTransaction() and start a new transaction with BeginTransaction() +if it wishes to proceed with transactional operations. +This flag is only set by the Transactional producer API. +

+

+ type + + ErrorCode + + +

+

+ ErrorCode is the integer representation of local and broker error codes +

+
type ErrorCode int
+
const (
+    // ErrBadMsg Local: Bad message format
+    ErrBadMsg ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__BAD_MSG)
+    // ErrBadCompression Local: Invalid compressed data
+    ErrBadCompression ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__BAD_COMPRESSION)
+    // ErrDestroy Local: Broker handle destroyed
+    ErrDestroy ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__DESTROY)
+    // ErrFail Local: Communication failure with broker
+    ErrFail ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__FAIL)
+    // ErrTransport Local: Broker transport failure
+    ErrTransport ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__TRANSPORT)
+    // ErrCritSysResource Local: Critical system resource failure
+    ErrCritSysResource ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE)
+    // ErrResolve Local: Host resolution failure
+    ErrResolve ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__RESOLVE)
+    // ErrMsgTimedOut Local: Message timed out
+    ErrMsgTimedOut ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__MSG_TIMED_OUT)
+    // ErrPartitionEOF Broker: No more messages
+    ErrPartitionEOF ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PARTITION_EOF)
+    // ErrUnknownPartition Local: Unknown partition
+    ErrUnknownPartition ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION)
+    // ErrFs Local: File or filesystem error
+    ErrFs ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__FS)
+    // ErrUnknownTopic Local: Unknown topic
+    ErrUnknownTopic ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC)
+    // ErrAllBrokersDown Local: All broker connections are down
+    ErrAllBrokersDown ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN)
+    // ErrInvalidArg Local: Invalid argument or configuration
+    ErrInvalidArg ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__INVALID_ARG)
+    // ErrTimedOut Local: Timed out
+    ErrTimedOut ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__TIMED_OUT)
+    // ErrQueueFull Local: Queue full
+    ErrQueueFull ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__QUEUE_FULL)
+    // ErrIsrInsuff Local: ISR count insufficient
+    ErrIsrInsuff ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__ISR_INSUFF)
+    // ErrNodeUpdate Local: Broker node update
+    ErrNodeUpdate ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NODE_UPDATE)
+    // ErrSsl Local: SSL error
+    ErrSsl ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__SSL)
+    // ErrWaitCoord Local: Waiting for coordinator
+    ErrWaitCoord ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__WAIT_COORD)
+    // ErrUnknownGroup Local: Unknown group
+    ErrUnknownGroup ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_GROUP)
+    // ErrInProgress Local: Operation in progress
+    ErrInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__IN_PROGRESS)
+    // ErrPrevInProgress Local: Previous operation in progress
+    ErrPrevInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS)
+    // ErrExistingSubscription Local: Existing subscription
+    ErrExistingSubscription ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION)
+    // ErrAssignPartitions Local: Assign partitions
+    ErrAssignPartitions ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS)
+    // ErrRevokePartitions Local: Revoke partitions
+    ErrRevokePartitions ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS)
+    // ErrConflict Local: Conflicting use
+    ErrConflict ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__CONFLICT)
+    // ErrState Local: Erroneous state
+    ErrState ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__STATE)
+    // ErrUnknownProtocol Local: Unknown protocol
+    ErrUnknownProtocol ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL)
+    // ErrNotImplemented Local: Not implemented
+    ErrNotImplemented ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED)
+    // ErrAuthentication Local: Authentication failure
+    ErrAuthentication ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__AUTHENTICATION)
+    // ErrNoOffset Local: No offset stored
+    ErrNoOffset ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NO_OFFSET)
+    // ErrOutdated Local: Outdated
+    ErrOutdated ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__OUTDATED)
+    // ErrTimedOutQueue Local: Timed out in queue
+    ErrTimedOutQueue ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE)
+    // ErrUnsupportedFeature Local: Required feature not supported by broker
+    ErrUnsupportedFeature ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE)
+    // ErrWaitCache Local: Awaiting cache update
+    ErrWaitCache ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__WAIT_CACHE)
+    // ErrIntr Local: Operation interrupted
+    ErrIntr ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__INTR)
+    // ErrKeySerialization Local: Key serialization error
+    ErrKeySerialization ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__KEY_SERIALIZATION)
+    // ErrValueSerialization Local: Value serialization error
+    ErrValueSerialization ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION)
+    // ErrKeyDeserialization Local: Key deserialization error
+    ErrKeyDeserialization ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION)
+    // ErrValueDeserialization Local: Value deserialization error
+    ErrValueDeserialization ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION)
+    // ErrPartial Local: Partial response
+    ErrPartial ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PARTIAL)
+    // ErrReadOnly Local: Read-only object
+    ErrReadOnly ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__READ_ONLY)
+    // ErrNoent Local: No such entry
+    ErrNoent ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NOENT)
+    // ErrUnderflow Local: Read underflow
+    ErrUnderflow ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNDERFLOW)
+    // ErrInvalidType Local: Invalid type
+    ErrInvalidType ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__INVALID_TYPE)
+    // ErrRetry Local: Retry operation
+    ErrRetry ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__RETRY)
+    // ErrPurgeQueue Local: Purged in queue
+    ErrPurgeQueue ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PURGE_QUEUE)
+    // ErrPurgeInflight Local: Purged in flight
+    ErrPurgeInflight ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PURGE_INFLIGHT)
+    // ErrFatal Local: Fatal error
+    ErrFatal ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__FATAL)
+    // ErrInconsistent Local: Inconsistent state
+    ErrInconsistent ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__INCONSISTENT)
+    // ErrGaplessGuarantee Local: Gap-less ordering would not be guaranteed if proceeding
+    ErrGaplessGuarantee ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE)
+    // ErrMaxPollExceeded Local: Maximum application poll interval (max.poll.interval.ms) exceeded
+    ErrMaxPollExceeded ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED)
+    // ErrUnknownBroker Local: Unknown broker
+    ErrUnknownBroker ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_BROKER)
+    // ErrNotConfigured Local: Functionality not configured
+    ErrNotConfigured ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NOT_CONFIGURED)
+    // ErrFenced Local: This instance has been fenced by a newer instance
+    ErrFenced ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__FENCED)
+    // ErrApplication Local: Application generated error
+    ErrApplication ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__APPLICATION)
+    // ErrAssignmentLost Local: Group partition assignment lost
+    ErrAssignmentLost ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST)
+    // ErrNoop Local: No operation performed
+    ErrNoop ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NOOP)
+    // ErrAutoOffsetReset Local: No offset to automatically reset to
+    ErrAutoOffsetReset ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET)
+    // ErrUnknown Unknown broker error
+    ErrUnknown ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN)
+    // ErrNoError Success
+    ErrNoError ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NO_ERROR)
+    // ErrOffsetOutOfRange Broker: Offset out of range
+    ErrOffsetOutOfRange ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE)
+    // ErrInvalidMsg Broker: Invalid message
+    ErrInvalidMsg ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_MSG)
+    // ErrUnknownTopicOrPart Broker: Unknown topic or partition
+    ErrUnknownTopicOrPart ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART)
+    // ErrInvalidMsgSize Broker: Invalid message size
+    ErrInvalidMsgSize ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE)
+    // ErrLeaderNotAvailable Broker: Leader not available
+    ErrLeaderNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE)
+    // ErrNotLeaderForPartition Broker: Not leader for partition
+    ErrNotLeaderForPartition ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION)
+    // ErrRequestTimedOut Broker: Request timed out
+    ErrRequestTimedOut ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT)
+    // ErrBrokerNotAvailable Broker: Broker not available
+    ErrBrokerNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE)
+    // ErrReplicaNotAvailable Broker: Replica not available
+    ErrReplicaNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE)
+    // ErrMsgSizeTooLarge Broker: Message size too large
+    ErrMsgSizeTooLarge ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE)
+    // ErrStaleCtrlEpoch Broker: StaleControllerEpochCode
+    ErrStaleCtrlEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH)
+    // ErrOffsetMetadataTooLarge Broker: Offset metadata string too large
+    ErrOffsetMetadataTooLarge ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE)
+    // ErrNetworkException Broker: Broker disconnected before response received
+    ErrNetworkException ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION)
+    // ErrCoordinatorLoadInProgress Broker: Coordinator load in progress
+    ErrCoordinatorLoadInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS)
+    // ErrCoordinatorNotAvailable Broker: Coordinator not available
+    ErrCoordinatorNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE)
+    // ErrNotCoordinator Broker: Not coordinator
+    ErrNotCoordinator ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_COORDINATOR)
+    // ErrTopicException Broker: Invalid topic
+    ErrTopicException ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION)
+    // ErrRecordListTooLarge Broker: Message batch larger than configured server segment size
+    ErrRecordListTooLarge ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE)
+    // ErrNotEnoughReplicas Broker: Not enough in-sync replicas
+    ErrNotEnoughReplicas ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS)
+    // ErrNotEnoughReplicasAfterAppend Broker: Message(s) written to insufficient number of in-sync replicas
+    ErrNotEnoughReplicasAfterAppend ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND)
+    // ErrInvalidRequiredAcks Broker: Invalid required acks value
+    ErrInvalidRequiredAcks ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS)
+    // ErrIllegalGeneration Broker: Specified group generation id is not valid
+    ErrIllegalGeneration ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION)
+    // ErrInconsistentGroupProtocol Broker: Inconsistent group protocol
+    ErrInconsistentGroupProtocol ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL)
+    // ErrInvalidGroupID Broker: Invalid group.id
+    ErrInvalidGroupID ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_GROUP_ID)
+    // ErrUnknownMemberID Broker: Unknown member
+    ErrUnknownMemberID ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID)
+    // ErrInvalidSessionTimeout Broker: Invalid session timeout
+    ErrInvalidSessionTimeout ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT)
+    // ErrRebalanceInProgress Broker: Group rebalance in progress
+    ErrRebalanceInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS)
+    // ErrInvalidCommitOffsetSize Broker: Commit offset data size is not valid
+    ErrInvalidCommitOffsetSize ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE)
+    // ErrTopicAuthorizationFailed Broker: Topic authorization failed
+    ErrTopicAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED)
+    // ErrGroupAuthorizationFailed Broker: Group authorization failed
+    ErrGroupAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED)
+    // ErrClusterAuthorizationFailed Broker: Cluster authorization failed
+    ErrClusterAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED)
+    // ErrInvalidTimestamp Broker: Invalid timestamp
+    ErrInvalidTimestamp ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP)
+    // ErrUnsupportedSaslMechanism Broker: Unsupported SASL mechanism
+    ErrUnsupportedSaslMechanism ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM)
+    // ErrIllegalSaslState Broker: Request not valid in current SASL state
+    ErrIllegalSaslState ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE)
+    // ErrUnsupportedVersion Broker: API version not supported
+    ErrUnsupportedVersion ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION)
+    // ErrTopicAlreadyExists Broker: Topic already exists
+    ErrTopicAlreadyExists ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS)
+    // ErrInvalidPartitions Broker: Invalid number of partitions
+    ErrInvalidPartitions ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_PARTITIONS)
+    // ErrInvalidReplicationFactor Broker: Invalid replication factor
+    ErrInvalidReplicationFactor ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR)
+    // ErrInvalidReplicaAssignment Broker: Invalid replica assignment
+    ErrInvalidReplicaAssignment ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT)
+    // ErrInvalidConfig Broker: Configuration is invalid
+    ErrInvalidConfig ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_CONFIG)
+    // ErrNotController Broker: Not controller for cluster
+    ErrNotController ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_CONTROLLER)
+    // ErrInvalidRequest Broker: Invalid request
+    ErrInvalidRequest ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_REQUEST)
+    // ErrUnsupportedForMessageFormat Broker: Message format on broker does not support request
+    ErrUnsupportedForMessageFormat ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT)
+    // ErrPolicyViolation Broker: Policy violation
+    ErrPolicyViolation ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_POLICY_VIOLATION)
+    // ErrOutOfOrderSequenceNumber Broker: Broker received an out of order sequence number
+    ErrOutOfOrderSequenceNumber ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER)
+    // ErrDuplicateSequenceNumber Broker: Broker received a duplicate sequence number
+    ErrDuplicateSequenceNumber ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER)
+    // ErrInvalidProducerEpoch Broker: Producer attempted an operation with an old epoch
+    ErrInvalidProducerEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH)
+    // ErrInvalidTxnState Broker: Producer attempted a transactional operation in an invalid state
+    ErrInvalidTxnState ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_TXN_STATE)
+    // ErrInvalidProducerIDMapping Broker: Producer attempted to use a producer id which is not currently assigned to its transactional id
+    ErrInvalidProducerIDMapping ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING)
+    // ErrInvalidTransactionTimeout Broker: Transaction timeout is larger than the maximum value allowed by the broker's max.transaction.timeout.ms
+    ErrInvalidTransactionTimeout ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT)
+    // ErrConcurrentTransactions Broker: Producer attempted to update a transaction while another concurrent operation on the same transaction was ongoing
+    ErrConcurrentTransactions ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS)
+    // ErrTransactionCoordinatorFenced Broker: Indicates that the transaction coordinator sending a WriteTxnMarker is no longer the current coordinator for a given producer
+    ErrTransactionCoordinatorFenced ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED)
+    // ErrTransactionalIDAuthorizationFailed Broker: Transactional Id authorization failed
+    ErrTransactionalIDAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED)
+    // ErrSecurityDisabled Broker: Security features are disabled
+    ErrSecurityDisabled ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_SECURITY_DISABLED)
+    // ErrOperationNotAttempted Broker: Operation not attempted
+    ErrOperationNotAttempted ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED)
+    // ErrKafkaStorageError Broker: Disk error when trying to access log file on disk
+    ErrKafkaStorageError ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR)
+    // ErrLogDirNotFound Broker: The user-specified log directory is not found in the broker config
+    ErrLogDirNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND)
+    // ErrSaslAuthenticationFailed Broker: SASL Authentication failed
+    ErrSaslAuthenticationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED)
+    // ErrUnknownProducerID Broker: Unknown Producer Id
+    ErrUnknownProducerID ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID)
+    // ErrReassignmentInProgress Broker: Partition reassignment is in progress
+    ErrReassignmentInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS)
+    // ErrDelegationTokenAuthDisabled Broker: Delegation Token feature is not enabled
+    ErrDelegationTokenAuthDisabled ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED)
+    // ErrDelegationTokenNotFound Broker: Delegation Token is not found on server
+    ErrDelegationTokenNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND)
+    // ErrDelegationTokenOwnerMismatch Broker: Specified Principal is not valid Owner/Renewer
+    ErrDelegationTokenOwnerMismatch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH)
+    // ErrDelegationTokenRequestNotAllowed Broker: Delegation Token requests are not allowed on this connection
+    ErrDelegationTokenRequestNotAllowed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED)
+    // ErrDelegationTokenAuthorizationFailed Broker: Delegation Token authorization failed
+    ErrDelegationTokenAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED)
+    // ErrDelegationTokenExpired Broker: Delegation Token is expired
+    ErrDelegationTokenExpired ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED)
+    // ErrInvalidPrincipalType Broker: Supplied principalType is not supported
+    ErrInvalidPrincipalType ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE)
+    // ErrNonEmptyGroup Broker: The group is not empty
+    ErrNonEmptyGroup ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP)
+    // ErrGroupIDNotFound Broker: The group id does not exist
+    ErrGroupIDNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND)
+    // ErrFetchSessionIDNotFound Broker: The fetch session ID was not found
+    ErrFetchSessionIDNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND)
+    // ErrInvalidFetchSessionEpoch Broker: The fetch session epoch is invalid
+    ErrInvalidFetchSessionEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH)
+    // ErrListenerNotFound Broker: No matching listener
+    ErrListenerNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND)
+    // ErrTopicDeletionDisabled Broker: Topic deletion is disabled
+    ErrTopicDeletionDisabled ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED)
+    // ErrFencedLeaderEpoch Broker: Leader epoch is older than broker epoch
+    ErrFencedLeaderEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH)
+    // ErrUnknownLeaderEpoch Broker: Leader epoch is newer than broker epoch
+    ErrUnknownLeaderEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH)
+    // ErrUnsupportedCompressionType Broker: Unsupported compression type
+    ErrUnsupportedCompressionType ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE)
+    // ErrStaleBrokerEpoch Broker: Broker epoch has changed
+    ErrStaleBrokerEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH)
+    // ErrOffsetNotAvailable Broker: Leader high watermark is not caught up
+    ErrOffsetNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE)
+    // ErrMemberIDRequired Broker: Group member needs a valid member ID
+    ErrMemberIDRequired ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED)
+    // ErrPreferredLeaderNotAvailable Broker: Preferred leader was not available
+    ErrPreferredLeaderNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE)
+    // ErrGroupMaxSizeReached Broker: Consumer group has reached maximum size
+    ErrGroupMaxSizeReached ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED)
+    // ErrFencedInstanceID Broker: Static consumer fenced by other consumer with same group.instance.id
+    ErrFencedInstanceID ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID)
+    // ErrEligibleLeadersNotAvailable Broker: Eligible partition leaders are not available
+    ErrEligibleLeadersNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE)
+    // ErrElectionNotNeeded Broker: Leader election not needed for topic partition
+    ErrElectionNotNeeded ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED)
+    // ErrNoReassignmentInProgress Broker: No partition reassignment is in progress
+    ErrNoReassignmentInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS)
+    // ErrGroupSubscribedToTopic Broker: Deleting offsets of a topic while the consumer group is subscribed to it
+    ErrGroupSubscribedToTopic ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC)
+    // ErrInvalidRecord Broker: Broker failed to validate record
+    ErrInvalidRecord ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_RECORD)
+    // ErrUnstableOffsetCommit Broker: There are unstable offsets that need to be cleared
+    ErrUnstableOffsetCommit ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT)
+    // ErrThrottlingQuotaExceeded Broker: Throttling quota has been exceeded
+    ErrThrottlingQuotaExceeded ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED)
+    // ErrProducerFenced Broker: There is a newer producer with the same transactionalId which fences the current one
+    ErrProducerFenced ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_PRODUCER_FENCED)
+    // ErrResourceNotFound Broker: Request illegally referred to resource that does not exist
+    ErrResourceNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND)
+    // ErrDuplicateResource Broker: Request illegally referred to the same resource twice
+    ErrDuplicateResource ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE)
+    // ErrUnacceptableCredential Broker: Requested credential would not meet criteria for acceptability
+    ErrUnacceptableCredential ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL)
+    // ErrInconsistentVoterSet Broker: Indicates that the either the sender or recipient of a voter-only request is not one of the expected voters
+    ErrInconsistentVoterSet ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET)
+    // ErrInvalidUpdateVersion Broker: Invalid update version
+    ErrInvalidUpdateVersion ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION)
+    // ErrFeatureUpdateFailed Broker: Unable to update finalized features due to server error
+    ErrFeatureUpdateFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED)
+    // ErrPrincipalDeserializationFailure Broker: Request principal deserialization failed during forwarding
+    ErrPrincipalDeserializationFailure ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE)
+)
+

+ func (ErrorCode) + + String + + +

+
func (c ErrorCode) String() string
+

+ String returns a human readable representation of an error code +

+

+ type + + Event + + +

+

+ Event generic interface +

+
type Event interface {
+    // String returns a human-readable representation of the event
+    String() string
+}
+

+ type + + Handle + + +

+

+ Handle represents a generic client handle containing common parts for +both Producer and Consumer. +

+
type Handle interface {
+    // SetOAuthBearerToken sets the the data to be transmitted
+    // to a broker during SASL/OAUTHBEARER authentication. It will return nil
+    // on success, otherwise an error if:
+    // 1) the token data is invalid (meaning an expiration time in the past
+    // or either a token value or an extension key or value that does not meet
+    // the regular expression requirements as per
+    // https://tools.ietf.org/html/rfc7628#section-3.1);
+    // 2) SASL/OAUTHBEARER is not supported by the underlying librdkafka build;
+    // 3) SASL/OAUTHBEARER is supported but is not configured as the client's
+    // authentication mechanism.
+    SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error
+
+    // SetOAuthBearerTokenFailure sets the error message describing why token
+    // retrieval/setting failed; it also schedules a new token refresh event for 10
+    // seconds later so the attempt may be retried. It will return nil on
+    // success, otherwise an error if:
+    // 1) SASL/OAUTHBEARER is not supported by the underlying librdkafka build;
+    // 2) SASL/OAUTHBEARER is supported but is not configured as the client's
+    // authentication mechanism.
+    SetOAuthBearerTokenFailure(errstr string) error
+    // contains filtered or unexported methods
+}
+ +

+ Header represents a single Kafka message header. +

+

+ Message headers are made up of a list of Header elements, retaining their original insert +order and allowing for duplicate Keys. +

+

+ Key is a human readable string identifying the header. +Value is the key's binary value, Kafka does not put any restrictions on the format of +of the Value but it should be made relatively compact. +The value may be a byte array, empty, or nil. +

+

+ NOTE: Message headers are not available on producer delivery report messages. +

+
type Header struct {
+    Key   string // Header name (utf-8 string)
+    Value []byte // Header value (nil, empty, or binary)
+}
+
+

+ func (Header) + + String + + +

+
func (h Header) String() string
+

+ String returns the Header Key and data in a human representable possibly truncated form +suitable for displaying to the user. +

+

+ type + + LogEvent + + +

+

+ LogEvent represent the log from librdkafka internal log queue +

+
type LogEvent struct {
+    Name      string    // Name of client instance
+    Tag       string    // Log tag that provides context to the log Message (e.g., "METADATA" or "GRPCOORD")
+    Message   string    // Log message
+    Level     int       // Log syslog level, lower is more critical.
+    Timestamp time.Time // Log timestamp
+}
+
+

+ func (LogEvent) + + String + + +

+
func (logEvent LogEvent) String() string
+

+ type + + Message + + +

+

+ Message represents a Kafka message +

+
type Message struct {
+    TopicPartition TopicPartition
+    Value          []byte
+    Key            []byte
+    Timestamp      time.Time
+    TimestampType  TimestampType
+    Opaque         interface{}
+    Headers        []Header
+}
+
+

+ func (*Message) + + String + + +

+
func (m *Message) String() string
+

+ String returns a human readable representation of a Message. +Key and payload are not represented. +

+

+ type + + Metadata + + +

+

+ Metadata contains broker and topic metadata for all (matching) topics +

+
type Metadata struct {
+    Brokers []BrokerMetadata
+    Topics  map[string]TopicMetadata
+
+    OriginatingBroker BrokerMetadata
+}
+
+

+ type + + OAuthBearerToken + + +

+

+ OAuthBearerToken represents the data to be transmitted +to a broker during SASL/OAUTHBEARER authentication. +

+
type OAuthBearerToken struct {
+    // Token value, often (but not necessarily) a JWS compact serialization
+    // as per https://tools.ietf.org/html/rfc7515#section-3.1; it must meet
+    // the regular expression for a SASL/OAUTHBEARER value defined at
+    // https://tools.ietf.org/html/rfc7628#section-3.1
+    TokenValue string
+    // Metadata about the token indicating when it expires (local time);
+    // it must represent a time in the future
+    Expiration time.Time
+    // Metadata about the token indicating the Kafka principal name
+    // to which it applies (for example, "admin")
+    Principal string
+    // SASL extensions, if any, to be communicated to the broker during
+    // authentication (all keys and values of which must meet the regular
+    // expressions defined at https://tools.ietf.org/html/rfc7628#section-3.1,
+    // and it must not contain the reserved "auth" key)
+    Extensions map[string]string
+}
+
+

+ type + + OAuthBearerTokenRefresh + + +

+

+ OAuthBearerTokenRefresh indicates token refresh is required +

+
type OAuthBearerTokenRefresh struct {
+    // Config is the value of the sasl.oauthbearer.config property
+    Config string
+}
+
+

+ func (OAuthBearerTokenRefresh) + + String + + +

+
func (o OAuthBearerTokenRefresh) String() string
+

+ type + + Offset + + +

+

+ Offset type (int64) with support for canonical names +

+
type Offset int64
+

+ func + + NewOffset + + +

+
func NewOffset(offset interface{}) (Offset, error)
+

+ NewOffset creates a new Offset using the provided logical string, or an +absolute int64 offset value. +Logical offsets: "beginning", "earliest", "end", "latest", "unset", "invalid", "stored" +

+

+ func + + OffsetTail + + +

+
func OffsetTail(relativeOffset Offset) Offset
+

+ OffsetTail returns the logical offset relativeOffset from current end of partition +

+

+ func (*Offset) + + Set + + +

+
func (o *Offset) Set(offset interface{}) error
+

+ Set offset value, see NewOffset() +

+

+ func (Offset) + + String + + +

+
func (o Offset) String() string
+

+ type + + OffsetsCommitted + + +

+

+ OffsetsCommitted reports committed offsets +

+
type OffsetsCommitted struct {
+    Error   error
+    Offsets []TopicPartition
+}
+
+

+ func (OffsetsCommitted) + + String + + +

+
func (o OffsetsCommitted) String() string
+

+ type + + PartitionEOF + + +

+

+ PartitionEOF consumer reached end of partition +Needs to be explicitly enabled by setting the `enable.partition.eof` +configuration property to true. +

+
type PartitionEOF TopicPartition
+

+ func (PartitionEOF) + + String + + +

+
func (p PartitionEOF) String() string
+

+ type + + PartitionMetadata + + +

+

+ PartitionMetadata contains per-partition metadata +

+
type PartitionMetadata struct {
+    ID       int32
+    Error    Error
+    Leader   int32
+    Replicas []int32
+    Isrs     []int32
+}
+
+

+ type + + PartitionsSpecification + + +

+

+ PartitionsSpecification holds parameters for creating additional partitions for a topic. +PartitionsSpecification is analogous to NewPartitions in the Java Topic Admin API. +

+
type PartitionsSpecification struct {
+    // Topic to create more partitions for.
+    Topic string
+    // New partition count for topic, must be higher than current partition count.
+    IncreaseTo int
+    // (Optional) Explicit replica assignment. The outer array is
+    // indexed by the new partition index (i.e., 0 for the first added
+    // partition), while the inner per-partition array
+    // contains the replica broker ids. The first broker in each
+    // broker id list will be the preferred replica.
+    ReplicaAssignment [][]int32
+}
+
+

+ type + + Producer + + +

+

+ Producer implements a High-level Apache Kafka Producer instance +

+
type Producer struct {
+    // contains filtered or unexported fields
+}
+
+

+ func + + NewProducer + + +

+
func NewProducer(conf *ConfigMap) (*Producer, error)
+

+ NewProducer creates a new high-level Producer instance. +

+

+ conf is a *ConfigMap with standard librdkafka configuration properties. +

+

+ Supported special configuration properties (type, default): +

+
go.batch.producer (bool, false) - EXPERIMENTAL: Enable batch producer (for increased performance).
+                                  These batches do not relate to Kafka message batches in any way.
+                                  Note: timestamps and headers are not supported with this interface.
+go.delivery.reports (bool, true) - Forward per-message delivery reports to the
+                                   Events() channel.
+go.delivery.report.fields (string, "key,value") - Comma separated list of fields to enable for delivery reports.
+                                    Allowed values: all, none (or empty string), key, value, headers
+                                    Warning: There is a performance penalty to include headers in the delivery report.
+go.events.channel.size (int, 1000000) - Events().
+go.produce.channel.size (int, 1000000) - ProduceChannel() buffer size (in number of messages)
+go.logs.channel.enable (bool, false) - Forward log to Logs() channel.
+go.logs.channel (chan kafka.LogEvent, nil) - Forward logs to application-provided channel instead of Logs(). Requires go.logs.channel.enable=true.
+
+

+ func (*Producer) + + AbortTransaction + + +

+
func (p *Producer) AbortTransaction(ctx context.Context) error
+

+ AbortTransaction aborts the ongoing transaction. +

+

+ This function should also be used to recover from non-fatal abortable +transaction errors. +

+

+ Any outstanding messages will be purged and fail with +`ErrPurgeInflight` or `ErrPurgeQueue`. +

+

+ Parameters: +

+
* `ctx` - The maximum amount of time to block, or nil for indefinite.
+
+

+ Note: This function will block until all outstanding messages are purged +and the transaction abort request has been successfully +handled by the transaction coordinator, or until the `ctx` expires, +which ever comes first. On timeout the application may +call the function again. +

+

+ Note: Will automatically call `Purge()` and `Flush()` to ensure all queued +and in-flight messages are purged before attempting to abort the transaction. +The application MUST serve the `producer.Events()` channel for delivery +reports in a separate go-routine during this time. +

+

+ Returns nil on success or an error object on failure. +Check whether the returned error object permits retrying +by calling `err.(kafka.Error).IsRetriable()`, or whether a fatal error +has been raised by calling `err.(kafka.Error).IsFatal()`. +

+

+ func (*Producer) + + BeginTransaction + + +

+
func (p *Producer) BeginTransaction() error
+

+ BeginTransaction starts a new transaction. +

+

+ `InitTransactions()` must have been called successfully (once) +before this function is called. +

+

+ Any messages produced, offsets sent (`SendOffsetsToTransaction()`), +etc, after the successful return of this function will be part of +the transaction and committed or aborted atomatically. +

+

+ Finish the transaction by calling `CommitTransaction()` or +abort the transaction by calling `AbortTransaction()`. +

+

+ Returns nil on success or an error object on failure. +Check whether a fatal error has been raised by +calling `err.(kafka.Error).IsFatal()`. +

+

+ Note: With the transactional producer, `Produce()`, et.al, are only +allowed during an on-going transaction, as started with this function. +Any produce call outside an on-going transaction, or for a failed +transaction, will fail. +

+

+ func (*Producer) + + Close + + +

+
func (p *Producer) Close()
+

+ Close a Producer instance. +The Producer object or its channels are no longer usable after this call. +

+

+ func (*Producer) + + CommitTransaction + + +

+
func (p *Producer) CommitTransaction(ctx context.Context) error
+

+ CommitTransaction commits the current transaction. +

+

+ Any outstanding messages will be flushed (delivered) before actually +committing the transaction. +

+

+ If any of the outstanding messages fail permanently the current +transaction will enter the abortable error state and this +function will return an abortable error, in this case the application +must call `AbortTransaction()` before attempting a new +transaction with `BeginTransaction()`. +

+

+ Parameters: +

+
* `ctx` - The maximum amount of time to block, or nil for indefinite.
+
+

+ Note: This function will block until all outstanding messages are +delivered and the transaction commit request has been successfully +handled by the transaction coordinator, or until the `ctx` expires, +which ever comes first. On timeout the application may +call the function again. +

+

+ Note: Will automatically call `Flush()` to ensure all queued +messages are delivered before attempting to commit the transaction. +The application MUST serve the `producer.Events()` channel for delivery +reports in a separate go-routine during this time. +

+

+ Returns nil on success or an error object on failure. +Check whether the returned error object permits retrying +by calling `err.(kafka.Error).IsRetriable()`, or whether an abortable +or fatal error has been raised by calling +`err.(kafka.Error).TxnRequiresAbort()` or `err.(kafka.Error).IsFatal()` +respectively. +

+

+ func (*Producer) + + Events + + +

+
func (p *Producer) Events() chan Event
+

+ Events returns the Events channel (read) +

+

+ func (*Producer) + + Flush + + +

+
func (p *Producer) Flush(timeoutMs int) int
+

+ Flush and wait for outstanding messages and requests to complete delivery. +Includes messages on ProduceChannel. +Runs until value reaches zero or on timeoutMs. +Returns the number of outstanding events still un-flushed. +

+

+ func (*Producer) + + GetFatalError + + +

+
func (p *Producer) GetFatalError() error
+

+ GetFatalError returns an Error object if the client instance has raised a fatal error, else nil. +

+

+ func (*Producer) + + GetMetadata + + +

+
func (p *Producer) GetMetadata(topic *string, allTopics bool, timeoutMs int) (*Metadata, error)
+

+ GetMetadata queries broker for cluster and topic metadata. +If topic is non-nil only information about that topic is returned, else if +allTopics is false only information about locally used topics is returned, +else information about all topics is returned. +GetMetadata is equivalent to listTopics, describeTopics and describeCluster in the Java API. +

+

+ func (*Producer) + + InitTransactions + + +

+
func (p *Producer) InitTransactions(ctx context.Context) error
+

+ InitTransactions Initializes transactions for the producer instance. +

+

+ This function ensures any transactions initiated by previous instances +of the producer with the same `transactional.id` are completed. +If the previous instance failed with a transaction in progress the +previous transaction will be aborted. +This function needs to be called before any other transactional or +produce functions are called when the `transactional.id` is configured. +

+

+ If the last transaction had begun completion (following transaction commit) +but not yet finished, this function will await the previous transaction's +completion. +

+

+ When any previous transactions have been fenced this function +will acquire the internal producer id and epoch, used in all future +transactional messages issued by this producer instance. +

+

+ Upon successful return from this function the application has to perform at +least one of the following operations within `transaction.timeout.ms` to +avoid timing out the transaction on the broker: +

+
* `Produce()` (et.al)
+* `SendOffsetsToTransaction()`
+* `CommitTransaction()`
+* `AbortTransaction()`
+
+

+ Parameters: +

+
* `ctx` - The maximum time to block, or nil for indefinite.
+          On timeout the operation may continue in the background,
+          depending on state, and it is okay to call `InitTransactions()`
+          again.
+
+

+ Returns nil on success or an error on failure. +Check whether the returned error object permits retrying +by calling `err.(kafka.Error).IsRetriable()`, or whether a fatal +error has been raised by calling `err.(kafka.Error).IsFatal()`. +

+

+ func (*Producer) + + Len + + +

+
func (p *Producer) Len() int
+

+ Len returns the number of messages and requests waiting to be transmitted to the broker +as well as delivery reports queued for the application. +Includes messages on ProduceChannel. +

+

+ func (*Producer) + + Logs + + +

+
func (p *Producer) Logs() chan LogEvent
+

+ Logs returns the Log channel (if enabled), else nil +

+

+ func (*Producer) + + OffsetsForTimes + + +

+
func (p *Producer) OffsetsForTimes(times []TopicPartition, timeoutMs int) (offsets []TopicPartition, err error)
+

+ OffsetsForTimes looks up offsets by timestamp for the given partitions. +

+

+ The returned offset for each partition is the earliest offset whose +timestamp is greater than or equal to the given timestamp in the +corresponding partition. If the provided timestamp exceeds that of the +last message in the partition, a value of -1 will be returned. +

+

+ The timestamps to query are represented as `.Offset` in the `times` +argument and the looked up offsets are represented as `.Offset` in the returned +`offsets` list. +

+

+ The function will block for at most timeoutMs milliseconds. +

+

+ Duplicate Topic+Partitions are not supported. +Per-partition errors may be returned in the `.Error` field. +

+

+ func (*Producer) + + Produce + + +

+
func (p *Producer) Produce(msg *Message, deliveryChan chan Event) error
+

+ Produce single message. +This is an asynchronous call that enqueues the message on the internal +transmit queue, thus returning immediately. +The delivery report will be sent on the provided deliveryChan if specified, +or on the Producer object's Events() channel if not. +msg.Timestamp requires librdkafka >= 0.9.4 (else returns ErrNotImplemented), +api.version.request=true, and broker >= 0.10.0.0. +msg.Headers requires librdkafka >= 0.11.4 (else returns ErrNotImplemented), +api.version.request=true, and broker >= 0.11.0.0. +Returns an error if message could not be enqueued. +

+

+ func (*Producer) + + ProduceChannel + + +

+
func (p *Producer) ProduceChannel() chan *Message
+

+ ProduceChannel returns the produce *Message channel (write) +

+

+ func (*Producer) + + Purge + + +

+
func (p *Producer) Purge(flags int) error
+

+ Purge messages currently handled by this producer instance. +

+

+ flags is a combination of PurgeQueue, PurgeInFlight and PurgeNonBlocking. +

+

+ The application will need to call Poll(), Flush() or read the Events() channel +after this call to serve delivery reports for the purged messages. +

+

+ Messages purged from internal queues fail with the delivery report +error code set to ErrPurgeQueue, while purged messages that +are in-flight to or from the broker will fail with the error code set to +ErrPurgeInflight. +

+

+ Warning: Purging messages that are in-flight to or from the broker +will ignore any sub-sequent acknowledgement for these messages +received from the broker, effectively making it impossible +for the application to know if the messages were successfully +produced or not. This may result in duplicate messages if the +application retries these messages at a later time. +

+

+ Note: This call may block for a short time while background thread +queues are purged. +

+

+ Returns nil on success, ErrInvalidArg if the purge flags are invalid or unknown. +

+

+ func (*Producer) + + QueryWatermarkOffsets + + +

+
func (p *Producer) QueryWatermarkOffsets(topic string, partition int32, timeoutMs int) (low, high int64, err error)
+

+ QueryWatermarkOffsets returns the broker's low and high offsets for the given topic +and partition. +

+

+ func (*Producer) + + SendOffsetsToTransaction + + +

+
func (p *Producer) SendOffsetsToTransaction(ctx context.Context, offsets []TopicPartition, consumerMetadata *ConsumerGroupMetadata) error
+

+ SendOffsetsToTransaction sends a list of topic partition offsets to the +consumer group coordinator for `consumerMetadata`, and marks the offsets +as part part of the current transaction. +These offsets will be considered committed only if the transaction is +committed successfully. +

+

+ The offsets should be the next message your application will consume, +i.e., the last processed message's offset + 1 for each partition. +Either track the offsets manually during processing or use +`consumer.Position()` (on the consumer) to get the current offsets for +the partitions assigned to the consumer. +

+

+ Use this method at the end of a consume-transform-produce loop prior +to committing the transaction with `CommitTransaction()`. +

+

+ Parameters: +

+
* `ctx` - The maximum amount of time to block, or nil for indefinite.
+* `offsets` - List of offsets to commit to the consumer group upon
+              successful commit of the transaction. Offsets should be
+              the next message to consume, e.g., last processed message + 1.
+* `consumerMetadata` - The current consumer group metadata as returned by
+              `consumer.GetConsumerGroupMetadata()` on the consumer
+              instance the provided offsets were consumed from.
+
+

+ Note: The consumer must disable auto commits (set `enable.auto.commit` to false on the consumer). +

+

+ Note: Logical and invalid offsets (e.g., OffsetInvalid) in +`offsets` will be ignored. If there are no valid offsets in +`offsets` the function will return nil and no action will be taken. +

+

+ Returns nil on success or an error object on failure. +Check whether the returned error object permits retrying +by calling `err.(kafka.Error).IsRetriable()`, or whether an abortable +or fatal error has been raised by calling +`err.(kafka.Error).TxnRequiresAbort()` or `err.(kafka.Error).IsFatal()` +respectively. +

+

+ func (*Producer) + + SetOAuthBearerToken + + +

+
func (p *Producer) SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error
+

+ SetOAuthBearerToken sets the the data to be transmitted +to a broker during SASL/OAUTHBEARER authentication. It will return nil +on success, otherwise an error if: +1) the token data is invalid (meaning an expiration time in the past +or either a token value or an extension key or value that does not meet +the regular expression requirements as per + + https://tools.ietf.org/html/rfc7628#section-3.1 + + ); +2) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +3) SASL/OAUTHBEARER is supported but is not configured as the client's +authentication mechanism. +

+

+ func (*Producer) + + SetOAuthBearerTokenFailure + + +

+
func (p *Producer) SetOAuthBearerTokenFailure(errstr string) error
+

+ SetOAuthBearerTokenFailure sets the error message describing why token +retrieval/setting failed; it also schedules a new token refresh event for 10 +seconds later so the attempt may be retried. It will return nil on +success, otherwise an error if: +1) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +2) SASL/OAUTHBEARER is supported but is not configured as the client's +authentication mechanism. +

+

+ func (*Producer) + + String + + +

+
func (p *Producer) String() string
+

+ String returns a human readable name for a Producer instance +

+

+ func (*Producer) + + TestFatalError + + +

+
func (p *Producer) TestFatalError(code ErrorCode, str string) ErrorCode
+

+ TestFatalError triggers a fatal error in the underlying client. +This is to be used strictly for testing purposes. +

+

+ type + + RebalanceCb + + +

+

+ RebalanceCb provides a per-Subscribe*() rebalance event callback. +The passed Event will be either AssignedPartitions or RevokedPartitions +

+
type RebalanceCb func(*Consumer, Event) error
+

+ type + + ResourceType + + +

+

+ ResourceType represents an Apache Kafka resource type +

+
type ResourceType int
+

+ func + + ResourceTypeFromString + + +

+
func ResourceTypeFromString(typeString string) (ResourceType, error)
+

+ ResourceTypeFromString translates a resource type name/string to +a ResourceType value. +

+

+ func (ResourceType) + + String + + +

+
func (t ResourceType) String() string
+

+ String returns the human-readable representation of a ResourceType +

+

+ type + + RevokedPartitions + + +

+

+ RevokedPartitions consumer group rebalance event: revoked partition set +

+
type RevokedPartitions struct {
+    Partitions []TopicPartition
+}
+
+

+ func (RevokedPartitions) + + String + + +

+
func (e RevokedPartitions) String() string
+

+ type + + Stats + + +

+

+ Stats statistics event +

+
type Stats struct {
+    // contains filtered or unexported fields
+}
+
+

+ func (Stats) + + String + + +

+
func (e Stats) String() string
+

+ type + + TimestampType + + +

+

+ TimestampType is a the Message timestamp type or source +

+
type TimestampType int
+

+ func (TimestampType) + + String + + +

+
func (t TimestampType) String() string
+

+ type + + TopicMetadata + + +

+

+ TopicMetadata contains per-topic metadata +

+
type TopicMetadata struct {
+    Topic      string
+    Partitions []PartitionMetadata
+    Error      Error
+}
+
+

+ type + + TopicPartition + + +

+

+ TopicPartition is a generic placeholder for a Topic+Partition and optionally Offset. +

+
type TopicPartition struct {
+    Topic     *string
+    Partition int32
+    Offset    Offset
+    Metadata  *string
+    Error     error
+}
+
+

+ func (TopicPartition) + + String + + +

+
func (p TopicPartition) String() string
+

+ type + + TopicPartitions + + +

+

+ TopicPartitions is a slice of TopicPartitions that also implements +the sort interface +

+
type TopicPartitions []TopicPartition
+

+ func (TopicPartitions) + + Len + + +

+
func (tps TopicPartitions) Len() int
+

+ func (TopicPartitions) + + Less + + +

+
func (tps TopicPartitions) Less(i, j int) bool
+

+ func (TopicPartitions) + + Swap + + +

+
func (tps TopicPartitions) Swap(i, j int)
+

+ type + + TopicResult + + +

+

+ TopicResult provides per-topic operation result (error) information. +

+
type TopicResult struct {
+    // Topic name
+    Topic string
+    // Error, if any, of result. Check with `Error.Code() != ErrNoError`.
+    Error Error
+}
+
+

+ func (TopicResult) + + String + + +

+
func (t TopicResult) String() string
+

+ String returns a human-readable representation of a TopicResult. +

+

+ type + + TopicSpecification + + +

+

+ TopicSpecification holds parameters for creating a new topic. +TopicSpecification is analogous to NewTopic in the Java Topic Admin API. +

+
type TopicSpecification struct {
+    // Topic name to create.
+    Topic string
+    // Number of partitions in topic.
+    NumPartitions int
+    // Default replication factor for the topic's partitions, or zero
+    // if an explicit ReplicaAssignment is set.
+    ReplicationFactor int
+    // (Optional) Explicit replica assignment. The outer array is
+    // indexed by the partition number, while the inner per-partition array
+    // contains the replica broker ids. The first broker in each
+    // broker id list will be the preferred replica.
+    ReplicaAssignment [][]int32
+    // Topic configuration.
+    Config map[string]string
+}
+
+ +
+ +
+ + + + diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_darwin.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_darwin.go new file mode 100644 index 0000000..5b6812f --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_darwin.go @@ -0,0 +1,13 @@ +// +build !dynamic + + +// This file was auto-generated by librdkafka_vendor/bundle-import.sh, DO NOT EDIT. + +package kafka + +// #cgo CFLAGS: -DUSE_VENDORED_LIBRDKAFKA -DLIBRDKAFKA_STATICLIB +// #cgo LDFLAGS: ${SRCDIR}/librdkafka_vendor/librdkafka_darwin.a -lm -lsasl2 -ldl -lpthread +import "C" + +// LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client +const LibrdkafkaLinkInfo = "static darwin from librdkafka-static-bundle-v1.8.2.tgz" diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_dynamic.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_dynamic.go new file mode 100644 index 0000000..bb7da9b --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_dynamic.go @@ -0,0 +1,9 @@ +// +build dynamic + +package kafka + +// #cgo pkg-config: rdkafka +import "C" + +// LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client +const LibrdkafkaLinkInfo = "dynamically linked to librdkafka" diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_glibc_linux.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_glibc_linux.go new file mode 100644 index 0000000..a69638d --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_glibc_linux.go @@ -0,0 +1,13 @@ +// +build !dynamic +// +build !musl + +// This file was auto-generated by librdkafka_vendor/bundle-import.sh, DO NOT EDIT. + +package kafka + +// #cgo CFLAGS: -DUSE_VENDORED_LIBRDKAFKA -DLIBRDKAFKA_STATICLIB +// #cgo LDFLAGS: ${SRCDIR}/librdkafka_vendor/librdkafka_glibc_linux.a -lm -ldl -lpthread -lrt +import "C" + +// LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client +const LibrdkafkaLinkInfo = "static glibc_linux from librdkafka-static-bundle-v1.8.2.tgz" diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_musl_linux.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_musl_linux.go new file mode 100644 index 0000000..ed2bee5 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_musl_linux.go @@ -0,0 +1,13 @@ +// +build !dynamic +// +build musl + +// This file was auto-generated by librdkafka_vendor/bundle-import.sh, DO NOT EDIT. + +package kafka + +// #cgo CFLAGS: -DUSE_VENDORED_LIBRDKAFKA -DLIBRDKAFKA_STATICLIB +// #cgo LDFLAGS: ${SRCDIR}/librdkafka_vendor/librdkafka_musl_linux.a -lm -ldl -lpthread -lrt -lpthread -lrt +import "C" + +// LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client +const LibrdkafkaLinkInfo = "static musl_linux from librdkafka-static-bundle-v1.8.2.tgz" diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_windows.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_windows.go new file mode 100644 index 0000000..1c15c55 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_windows.go @@ -0,0 +1,13 @@ +// +build !dynamic + + +// This file was auto-generated by librdkafka_vendor/bundle-import.sh, DO NOT EDIT. + +package kafka + +// #cgo CFLAGS: -DUSE_VENDORED_LIBRDKAFKA -DLIBRDKAFKA_STATICLIB +// #cgo LDFLAGS: ${SRCDIR}/librdkafka_vendor/librdkafka_windows.a -lws2_32 -lsecur32 -lcrypt32 +import "C" + +// LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client +const LibrdkafkaLinkInfo = "static windows from librdkafka-static-bundle-v1.8.2.tgz" diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/config.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/config.go new file mode 100644 index 0000000..f0c8ecf --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/config.go @@ -0,0 +1,280 @@ +package kafka + +/** + * Copyright 2016 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ( + "fmt" + "reflect" + "strings" + "unsafe" +) + +/* +#include +#include "select_rdkafka.h" +*/ +import "C" + +// ConfigValue supports the following types: +// bool, int, string, any type with the standard String() interface +type ConfigValue interface{} + +// ConfigMap is a map containing standard librdkafka configuration properties as documented in: +// https://github.com/edenhill/librdkafka/tree/master/CONFIGURATION.md +// +// The special property "default.topic.config" (optional) is a ConfigMap +// containing default topic configuration properties. +// +// The use of "default.topic.config" is deprecated, +// topic configuration properties shall be specified in the standard ConfigMap. +// For backwards compatibility, "default.topic.config" (if supplied) +// takes precedence. +type ConfigMap map[string]ConfigValue + +// SetKey sets configuration property key to value. +// +// For user convenience a key prefixed with {topic}. will be +// set on the "default.topic.config" sub-map, this use is deprecated. +func (m ConfigMap) SetKey(key string, value ConfigValue) error { + if strings.HasPrefix(key, "{topic}.") { + _, found := m["default.topic.config"] + if !found { + m["default.topic.config"] = ConfigMap{} + } + m["default.topic.config"].(ConfigMap)[strings.TrimPrefix(key, "{topic}.")] = value + } else { + m[key] = value + } + + return nil +} + +// Set implements flag.Set (command line argument parser) as a convenience +// for `-X key=value` config. +func (m ConfigMap) Set(kv string) error { + i := strings.Index(kv, "=") + if i == -1 { + return newErrorFromString(ErrInvalidArg, "Expected key=value") + } + + k := kv[:i] + v := kv[i+1:] + + return m.SetKey(k, v) +} + +func value2string(v ConfigValue) (ret string, errstr string) { + + switch x := v.(type) { + case bool: + if x { + ret = "true" + } else { + ret = "false" + } + case int: + ret = fmt.Sprintf("%d", x) + case string: + ret = x + case fmt.Stringer: + ret = x.String() + default: + return "", fmt.Sprintf("Invalid value type %T", v) + } + + return ret, "" +} + +// rdkAnyconf abstracts rd_kafka_conf_t and rd_kafka_topic_conf_t +// into a common interface. +type rdkAnyconf interface { + set(cKey *C.char, cVal *C.char, cErrstr *C.char, errstrSize int) C.rd_kafka_conf_res_t +} + +func anyconfSet(anyconf rdkAnyconf, key string, val ConfigValue) (err error) { + value, errstr := value2string(val) + if errstr != "" { + return newErrorFromString(ErrInvalidArg, fmt.Sprintf("%s for key %s (expected string,bool,int,ConfigMap)", errstr, key)) + } + cKey := C.CString(key) + defer C.free(unsafe.Pointer(cKey)) + cVal := C.CString(value) + defer C.free(unsafe.Pointer(cVal)) + cErrstr := (*C.char)(C.malloc(C.size_t(128))) + defer C.free(unsafe.Pointer(cErrstr)) + + if anyconf.set(cKey, cVal, cErrstr, 128) != C.RD_KAFKA_CONF_OK { + return newErrorFromCString(C.RD_KAFKA_RESP_ERR__INVALID_ARG, cErrstr) + } + + return nil +} + +// we need these typedefs to workaround a crash in golint +// when parsing the set() methods below +type rdkConf C.rd_kafka_conf_t +type rdkTopicConf C.rd_kafka_topic_conf_t + +func (cConf *rdkConf) set(cKey *C.char, cVal *C.char, cErrstr *C.char, errstrSize int) C.rd_kafka_conf_res_t { + return C.rd_kafka_conf_set((*C.rd_kafka_conf_t)(cConf), cKey, cVal, cErrstr, C.size_t(errstrSize)) +} + +func (ctopicConf *rdkTopicConf) set(cKey *C.char, cVal *C.char, cErrstr *C.char, errstrSize int) C.rd_kafka_conf_res_t { + return C.rd_kafka_topic_conf_set((*C.rd_kafka_topic_conf_t)(ctopicConf), cKey, cVal, cErrstr, C.size_t(errstrSize)) +} + +func configConvertAnyconf(m ConfigMap, anyconf rdkAnyconf) (err error) { + // set plugins first, any plugin-specific configuration depends on + // the plugin to have already been set + pluginPaths, ok := m["plugin.library.paths"] + if ok { + err = anyconfSet(anyconf, "plugin.library.paths", pluginPaths) + if err != nil { + return err + } + } + for k, v := range m { + if k == "plugin.library.paths" { + continue + } + switch v.(type) { + case ConfigMap: + /* Special sub-ConfigMap, only used for default.topic.config */ + + if k != "default.topic.config" { + return newErrorFromString(ErrInvalidArg, fmt.Sprintf("Invalid type for key %s", k)) + } + + var cTopicConf = C.rd_kafka_topic_conf_new() + + err = configConvertAnyconf(v.(ConfigMap), + (*rdkTopicConf)(cTopicConf)) + if err != nil { + C.rd_kafka_topic_conf_destroy(cTopicConf) + return err + } + + C.rd_kafka_conf_set_default_topic_conf( + (*C.rd_kafka_conf_t)(anyconf.(*rdkConf)), + (*C.rd_kafka_topic_conf_t)((*rdkTopicConf)(cTopicConf))) + + default: + err = anyconfSet(anyconf, k, v) + if err != nil { + return err + } + } + } + + return nil +} + +// convert ConfigMap to C rd_kafka_conf_t * +func (m ConfigMap) convert() (cConf *C.rd_kafka_conf_t, err error) { + cConf = C.rd_kafka_conf_new() + + // Set the client.software.name and .version (use librdkafka version). + _, librdkafkaVersion := LibraryVersion() + anyconfSet((*rdkConf)(cConf), "client.software.name", "confluent-kafka-go") + anyconfSet((*rdkConf)(cConf), "client.software.version", librdkafkaVersion) + + err = configConvertAnyconf(m, (*rdkConf)(cConf)) + if err != nil { + C.rd_kafka_conf_destroy(cConf) + return nil, err + } + return cConf, nil +} + +// get finds key in the configmap and returns its value. +// If the key is not found defval is returned. +// If the key is found but the type is mismatched an error is returned. +func (m ConfigMap) get(key string, defval ConfigValue) (ConfigValue, error) { + if strings.HasPrefix(key, "{topic}.") { + defconfCv, found := m["default.topic.config"] + if !found { + return defval, nil + } + return defconfCv.(ConfigMap).get(strings.TrimPrefix(key, "{topic}."), defval) + } + + v, ok := m[key] + if !ok { + return defval, nil + } + + if defval != nil && reflect.TypeOf(defval) != reflect.TypeOf(v) { + return nil, newErrorFromString(ErrInvalidArg, fmt.Sprintf("%s expects type %T, not %T", key, defval, v)) + } + + return v, nil +} + +// extract performs a get() and if found deletes the key. +func (m ConfigMap) extract(key string, defval ConfigValue) (ConfigValue, error) { + + v, err := m.get(key, defval) + if err != nil { + return nil, err + } + + delete(m, key) + + return v, nil +} + +// extractLogConfig extracts generic go.logs.* configuration properties. +func (m ConfigMap) extractLogConfig() (logsChanEnable bool, logsChan chan LogEvent, err error) { + v, err := m.extract("go.logs.channel.enable", false) + if err != nil { + return + } + + logsChanEnable = v.(bool) + + v, err = m.extract("go.logs.channel", nil) + if err != nil { + return + } + + if v != nil { + logsChan = v.(chan LogEvent) + } + + if logsChanEnable { + // Tell librdkafka to forward logs to the log queue + m.Set("log.queue=true") + } + + return +} + +func (m ConfigMap) clone() ConfigMap { + m2 := make(ConfigMap) + for k, v := range m { + m2[k] = v + } + return m2 +} + +// Get finds the given key in the ConfigMap and returns its value. +// If the key is not found `defval` is returned. +// If the key is found but the type does not match that of `defval` (unless nil) +// an ErrInvalidArg error is returned. +func (m ConfigMap) Get(key string, defval ConfigValue) (ConfigValue, error) { + return m.get(key, defval) +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/consumer.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/consumer.go new file mode 100644 index 0000000..ef48330 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/consumer.go @@ -0,0 +1,923 @@ +package kafka + +/** + * Copyright 2016-2020 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ( + "fmt" + "math" + "time" + "unsafe" +) + +/* +#include +#include "select_rdkafka.h" + + +static rd_kafka_topic_partition_t *_c_rdkafka_topic_partition_list_entry(rd_kafka_topic_partition_list_t *rktparlist, int idx) { + return idx < rktparlist->cnt ? &rktparlist->elems[idx] : NULL; +} +*/ +import "C" + +// RebalanceCb provides a per-Subscribe*() rebalance event callback. +// The passed Event will be either AssignedPartitions or RevokedPartitions +type RebalanceCb func(*Consumer, Event) error + +// Consumer implements a High-level Apache Kafka Consumer instance +type Consumer struct { + events chan Event + handle handle + eventsChanEnable bool + readerTermChan chan bool + rebalanceCb RebalanceCb + appReassigned bool + appRebalanceEnable bool // Config setting +} + +// Strings returns a human readable name for a Consumer instance +func (c *Consumer) String() string { + return c.handle.String() +} + +// getHandle implements the Handle interface +func (c *Consumer) gethandle() *handle { + return &c.handle +} + +// Subscribe to a single topic +// This replaces the current subscription +func (c *Consumer) Subscribe(topic string, rebalanceCb RebalanceCb) error { + return c.SubscribeTopics([]string{topic}, rebalanceCb) +} + +// SubscribeTopics subscribes to the provided list of topics. +// This replaces the current subscription. +func (c *Consumer) SubscribeTopics(topics []string, rebalanceCb RebalanceCb) (err error) { + ctopics := C.rd_kafka_topic_partition_list_new(C.int(len(topics))) + defer C.rd_kafka_topic_partition_list_destroy(ctopics) + + for _, topic := range topics { + ctopic := C.CString(topic) + defer C.free(unsafe.Pointer(ctopic)) + C.rd_kafka_topic_partition_list_add(ctopics, ctopic, C.RD_KAFKA_PARTITION_UA) + } + + e := C.rd_kafka_subscribe(c.handle.rk, ctopics) + if e != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return newError(e) + } + + c.rebalanceCb = rebalanceCb + + return nil +} + +// Unsubscribe from the current subscription, if any. +func (c *Consumer) Unsubscribe() (err error) { + C.rd_kafka_unsubscribe(c.handle.rk) + return nil +} + +// Assign an atomic set of partitions to consume. +// +// The .Offset field of each TopicPartition must either be set to an absolute +// starting offset (>= 0), or one of the logical offsets (`kafka.OffsetEnd` etc), +// but should typically be set to `kafka.OffsetStored` to have the consumer +// use the committed offset as a start position, with a fallback to +// `auto.offset.reset` if there is no committed offset. +// +// This replaces the current assignment. +func (c *Consumer) Assign(partitions []TopicPartition) (err error) { + c.appReassigned = true + + cparts := newCPartsFromTopicPartitions(partitions) + defer C.rd_kafka_topic_partition_list_destroy(cparts) + + e := C.rd_kafka_assign(c.handle.rk, cparts) + if e != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return newError(e) + } + + return nil +} + +// Unassign the current set of partitions to consume. +func (c *Consumer) Unassign() (err error) { + c.appReassigned = true + + e := C.rd_kafka_assign(c.handle.rk, nil) + if e != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return newError(e) + } + + return nil +} + +// IncrementalAssign adds the specified partitions to the current set of +// partitions to consume. +// +// The .Offset field of each TopicPartition must either be set to an absolute +// starting offset (>= 0), or one of the logical offsets (`kafka.OffsetEnd` etc), +// but should typically be set to `kafka.OffsetStored` to have the consumer +// use the committed offset as a start position, with a fallback to +// `auto.offset.reset` if there is no committed offset. +// +// The new partitions must not be part of the current assignment. +func (c *Consumer) IncrementalAssign(partitions []TopicPartition) (err error) { + c.appReassigned = true + + cparts := newCPartsFromTopicPartitions(partitions) + defer C.rd_kafka_topic_partition_list_destroy(cparts) + + cError := C.rd_kafka_incremental_assign(c.handle.rk, cparts) + if cError != nil { + return newErrorFromCErrorDestroy(cError) + } + + return nil +} + +// IncrementalUnassign removes the specified partitions from the current set of +// partitions to consume. +// +// The .Offset field of the TopicPartition is ignored. +// +// The removed partitions must be part of the current assignment. +func (c *Consumer) IncrementalUnassign(partitions []TopicPartition) (err error) { + c.appReassigned = true + + cparts := newCPartsFromTopicPartitions(partitions) + defer C.rd_kafka_topic_partition_list_destroy(cparts) + + cError := C.rd_kafka_incremental_unassign(c.handle.rk, cparts) + if cError != nil { + return newErrorFromCErrorDestroy(cError) + } + + return nil +} + +// GetRebalanceProtocol returns the current consumer group rebalance protocol, +// which is either "EAGER" or "COOPERATIVE". +// If the rebalance protocol is not known in the current state an empty string +// is returned. +// Should typically only be called during rebalancing. +func (c *Consumer) GetRebalanceProtocol() string { + cStr := C.rd_kafka_rebalance_protocol(c.handle.rk) + if cStr == nil { + return "" + } + + return C.GoString(cStr) +} + +// AssignmentLost returns true if current partition assignment has been lost. +// This method is only applicable for use with a subscribing consumer when +// handling a rebalance event or callback. +// Partitions that have been lost may already be owned by other members in the +// group and therefore commiting offsets, for example, may fail. +func (c *Consumer) AssignmentLost() bool { + return cint2bool(C.rd_kafka_assignment_lost(c.handle.rk)) +} + +// commit offsets for specified offsets. +// If offsets is nil the currently assigned partitions' offsets are committed. +// This is a blocking call, caller will need to wrap in go-routine to +// get async or throw-away behaviour. +func (c *Consumer) commit(offsets []TopicPartition) (committedOffsets []TopicPartition, err error) { + var rkqu *C.rd_kafka_queue_t + + rkqu = C.rd_kafka_queue_new(c.handle.rk) + defer C.rd_kafka_queue_destroy(rkqu) + + var coffsets *C.rd_kafka_topic_partition_list_t + if offsets != nil { + coffsets = newCPartsFromTopicPartitions(offsets) + defer C.rd_kafka_topic_partition_list_destroy(coffsets) + } + + cErr := C.rd_kafka_commit_queue(c.handle.rk, coffsets, rkqu, nil, nil) + if cErr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return nil, newError(cErr) + } + + rkev := C.rd_kafka_queue_poll(rkqu, C.int(-1)) + if rkev == nil { + // shouldn't happen + return nil, newError(C.RD_KAFKA_RESP_ERR__DESTROY) + } + defer C.rd_kafka_event_destroy(rkev) + + if C.rd_kafka_event_type(rkev) != C.RD_KAFKA_EVENT_OFFSET_COMMIT { + panic(fmt.Sprintf("Expected OFFSET_COMMIT, got %s", + C.GoString(C.rd_kafka_event_name(rkev)))) + } + + cErr = C.rd_kafka_event_error(rkev) + if cErr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return nil, newErrorFromCString(cErr, C.rd_kafka_event_error_string(rkev)) + } + + cRetoffsets := C.rd_kafka_event_topic_partition_list(rkev) + if cRetoffsets == nil { + // no offsets, no error + return nil, nil + } + committedOffsets = newTopicPartitionsFromCparts(cRetoffsets) + + return committedOffsets, nil +} + +// Commit offsets for currently assigned partitions +// This is a blocking call. +// Returns the committed offsets on success. +func (c *Consumer) Commit() ([]TopicPartition, error) { + return c.commit(nil) +} + +// CommitMessage commits offset based on the provided message. +// This is a blocking call. +// Returns the committed offsets on success. +func (c *Consumer) CommitMessage(m *Message) ([]TopicPartition, error) { + if m.TopicPartition.Error != nil { + return nil, newErrorFromString(ErrInvalidArg, "Can't commit errored message") + } + offsets := []TopicPartition{m.TopicPartition} + offsets[0].Offset++ + return c.commit(offsets) +} + +// CommitOffsets commits the provided list of offsets +// This is a blocking call. +// Returns the committed offsets on success. +func (c *Consumer) CommitOffsets(offsets []TopicPartition) ([]TopicPartition, error) { + return c.commit(offsets) +} + +// StoreOffsets stores the provided list of offsets that will be committed +// to the offset store according to `auto.commit.interval.ms` or manual +// offset-less Commit(). +// +// Returns the stored offsets on success. If at least one offset couldn't be stored, +// an error and a list of offsets is returned. Each offset can be checked for +// specific errors via its `.Error` member. +func (c *Consumer) StoreOffsets(offsets []TopicPartition) (storedOffsets []TopicPartition, err error) { + coffsets := newCPartsFromTopicPartitions(offsets) + defer C.rd_kafka_topic_partition_list_destroy(coffsets) + + cErr := C.rd_kafka_offsets_store(c.handle.rk, coffsets) + + // coffsets might be annotated with an error + storedOffsets = newTopicPartitionsFromCparts(coffsets) + + if cErr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return storedOffsets, newError(cErr) + } + + return storedOffsets, nil +} + +// StoreMessage stores offset based on the provided message. +// This is a convenience method that uses StoreOffsets to do the actual work. +func (c *Consumer) StoreMessage(m *Message) (storedOffsets []TopicPartition, err error) { + if m.TopicPartition.Error != nil { + return nil, newErrorFromString(ErrInvalidArg, "Can't store errored message") + } + if m.TopicPartition.Offset < 0 { + return nil, newErrorFromString(ErrInvalidArg, "Can't store message with offset less than 0") + } + offsets := []TopicPartition{m.TopicPartition} + offsets[0].Offset++ + return c.StoreOffsets(offsets) +} + +// Seek seeks the given topic partitions using the offset from the TopicPartition. +// +// If timeoutMs is not 0 the call will wait this long for the +// seek to be performed. If the timeout is reached the internal state +// will be unknown and this function returns ErrTimedOut. +// If timeoutMs is 0 it will initiate the seek but return +// immediately without any error reporting (e.g., async). +// +// Seek() may only be used for partitions already being consumed +// (through Assign() or implicitly through a self-rebalanced Subscribe()). +// To set the starting offset it is preferred to use Assign() and provide +// a starting offset for each partition. +// +// Returns an error on failure or nil otherwise. +func (c *Consumer) Seek(partition TopicPartition, timeoutMs int) error { + rkt := c.handle.getRkt(*partition.Topic) + cErr := C.rd_kafka_seek(rkt, + C.int32_t(partition.Partition), + C.int64_t(partition.Offset), + C.int(timeoutMs)) + if cErr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return newError(cErr) + } + return nil +} + +// Poll the consumer for messages or events. +// +// Will block for at most timeoutMs milliseconds +// +// The following callbacks may be triggered: +// Subscribe()'s rebalanceCb +// +// Returns nil on timeout, else an Event +func (c *Consumer) Poll(timeoutMs int) (event Event) { + ev, _ := c.handle.eventPoll(nil, timeoutMs, 1, nil) + return ev +} + +// Events returns the Events channel (if enabled) +func (c *Consumer) Events() chan Event { + return c.events +} + +// Logs returns the log channel if enabled, or nil otherwise. +func (c *Consumer) Logs() chan LogEvent { + return c.handle.logs +} + +// ReadMessage polls the consumer for a message. +// +// This is a convenience API that wraps Poll() and only returns +// messages or errors. All other event types are discarded. +// +// The call will block for at most `timeout` waiting for +// a new message or error. `timeout` may be set to -1 for +// indefinite wait. +// +// Timeout is returned as (nil, err) where err is `err.(kafka.Error).Code() == kafka.ErrTimedOut`. +// +// Messages are returned as (msg, nil), +// while general errors are returned as (nil, err), +// and partition-specific errors are returned as (msg, err) where +// msg.TopicPartition provides partition-specific information (such as topic, partition and offset). +// +// All other event types, such as PartitionEOF, AssignedPartitions, etc, are silently discarded. +// +func (c *Consumer) ReadMessage(timeout time.Duration) (*Message, error) { + + var absTimeout time.Time + var timeoutMs int + + if timeout > 0 { + absTimeout = time.Now().Add(timeout) + timeoutMs = (int)(timeout.Seconds() * 1000.0) + } else { + timeoutMs = (int)(timeout) + } + + for { + ev := c.Poll(timeoutMs) + + switch e := ev.(type) { + case *Message: + if e.TopicPartition.Error != nil { + return e, e.TopicPartition.Error + } + return e, nil + case Error: + return nil, e + default: + // Ignore other event types + } + + if timeout > 0 { + // Calculate remaining time + timeoutMs = int(math.Max(0.0, absTimeout.Sub(time.Now()).Seconds()*1000.0)) + } + + if timeoutMs == 0 && ev == nil { + return nil, newError(C.RD_KAFKA_RESP_ERR__TIMED_OUT) + } + + } + +} + +// Close Consumer instance. +// The object is no longer usable after this call. +func (c *Consumer) Close() (err error) { + + // Wait for consumerReader() or pollLogEvents to terminate (by closing readerTermChan) + close(c.readerTermChan) + c.handle.waitGroup.Wait() + if c.eventsChanEnable { + close(c.events) + } + + // librdkafka's rd_kafka_consumer_close() will block + // and trigger the rebalance_cb() if one is set, if not, which is the + // case with the Go client since it registers EVENTs rather than callbacks, + // librdkafka will shortcut the rebalance_cb and do a forced unassign. + // But we can't have that since the application might need the final RevokePartitions + // before shutting down. So we trigger an Unsubscribe() first, wait for that to + // propagate (in the Poll loop below), and then close the consumer. + c.Unsubscribe() + + // Poll for rebalance events + for { + c.Poll(10 * 1000) + if int(C.rd_kafka_queue_length(c.handle.rkq)) == 0 { + break + } + } + + // Destroy our queue + C.rd_kafka_queue_destroy(c.handle.rkq) + c.handle.rkq = nil + + // Close the consumer + C.rd_kafka_consumer_close(c.handle.rk) + + c.handle.cleanup() + + C.rd_kafka_destroy(c.handle.rk) + + return nil +} + +// NewConsumer creates a new high-level Consumer instance. +// +// conf is a *ConfigMap with standard librdkafka configuration properties. +// +// Supported special configuration properties: +// go.application.rebalance.enable (bool, false) - Forward rebalancing responsibility to application via the Events() channel. +// If set to true the app must handle the AssignedPartitions and +// RevokedPartitions events and call Assign() and Unassign() +// respectively. +// go.events.channel.enable (bool, false) - [deprecated] Enable the Events() channel. Messages and events will be pushed on the Events() channel and the Poll() interface will be disabled. +// go.events.channel.size (int, 1000) - Events() channel size +// go.logs.channel.enable (bool, false) - Forward log to Logs() channel. +// go.logs.channel (chan kafka.LogEvent, nil) - Forward logs to application-provided channel instead of Logs(). Requires go.logs.channel.enable=true. +// +// WARNING: Due to the buffering nature of channels (and queues in general) the +// use of the events channel risks receiving outdated events and +// messages. Minimizing go.events.channel.size reduces the risk +// and number of outdated events and messages but does not eliminate +// the factor completely. With a channel size of 1 at most one +// event or message may be outdated. +func NewConsumer(conf *ConfigMap) (*Consumer, error) { + + err := versionCheck() + if err != nil { + return nil, err + } + + // before we do anything with the configuration, create a copy such that + // the original is not mutated. + confCopy := conf.clone() + + groupid, _ := confCopy.get("group.id", nil) + if groupid == nil { + // without a group.id the underlying cgrp subsystem in librdkafka wont get started + // and without it there is no way to consume assigned partitions. + // So for now require the group.id, this might change in the future. + return nil, newErrorFromString(ErrInvalidArg, "Required property group.id not set") + } + + c := &Consumer{} + + v, err := confCopy.extract("go.application.rebalance.enable", false) + if err != nil { + return nil, err + } + c.appRebalanceEnable = v.(bool) + + v, err = confCopy.extract("go.events.channel.enable", false) + if err != nil { + return nil, err + } + c.eventsChanEnable = v.(bool) + + v, err = confCopy.extract("go.events.channel.size", 1000) + if err != nil { + return nil, err + } + eventsChanSize := v.(int) + + logsChanEnable, logsChan, err := confCopy.extractLogConfig() + if err != nil { + return nil, err + } + + cConf, err := confCopy.convert() + if err != nil { + return nil, err + } + cErrstr := (*C.char)(C.malloc(C.size_t(256))) + defer C.free(unsafe.Pointer(cErrstr)) + + C.rd_kafka_conf_set_events(cConf, C.RD_KAFKA_EVENT_REBALANCE|C.RD_KAFKA_EVENT_OFFSET_COMMIT|C.RD_KAFKA_EVENT_STATS|C.RD_KAFKA_EVENT_ERROR|C.RD_KAFKA_EVENT_OAUTHBEARER_TOKEN_REFRESH) + + c.handle.rk = C.rd_kafka_new(C.RD_KAFKA_CONSUMER, cConf, cErrstr, 256) + if c.handle.rk == nil { + return nil, newErrorFromCString(C.RD_KAFKA_RESP_ERR__INVALID_ARG, cErrstr) + } + + C.rd_kafka_poll_set_consumer(c.handle.rk) + + c.handle.c = c + c.handle.setup() + c.readerTermChan = make(chan bool) + c.handle.rkq = C.rd_kafka_queue_get_consumer(c.handle.rk) + if c.handle.rkq == nil { + // no cgrp (no group.id configured), revert to main queue. + c.handle.rkq = C.rd_kafka_queue_get_main(c.handle.rk) + } + + if logsChanEnable { + c.handle.setupLogQueue(logsChan, c.readerTermChan) + } + + if c.eventsChanEnable { + c.events = make(chan Event, eventsChanSize) + /* Start rdkafka consumer queue reader -> events writer goroutine */ + c.handle.waitGroup.Add(1) + go func() { + consumerReader(c, c.readerTermChan) + c.handle.waitGroup.Done() + }() + } + + return c, nil +} + +// consumerReader reads messages and events from the librdkafka consumer queue +// and posts them on the consumer channel. +// Runs until termChan closes +func consumerReader(c *Consumer, termChan chan bool) { + for { + select { + case _ = <-termChan: + return + default: + _, term := c.handle.eventPoll(c.events, 100, 1000, termChan) + if term { + return + } + + } + } +} + +// GetMetadata queries broker for cluster and topic metadata. +// If topic is non-nil only information about that topic is returned, else if +// allTopics is false only information about locally used topics is returned, +// else information about all topics is returned. +// GetMetadata is equivalent to listTopics, describeTopics and describeCluster in the Java API. +func (c *Consumer) GetMetadata(topic *string, allTopics bool, timeoutMs int) (*Metadata, error) { + return getMetadata(c, topic, allTopics, timeoutMs) +} + +// QueryWatermarkOffsets queries the broker for the low and high offsets for the given topic and partition. +func (c *Consumer) QueryWatermarkOffsets(topic string, partition int32, timeoutMs int) (low, high int64, err error) { + return queryWatermarkOffsets(c, topic, partition, timeoutMs) +} + +// GetWatermarkOffsets returns the cached low and high offsets for the given topic +// and partition. The high offset is populated on every fetch response or via calling QueryWatermarkOffsets. +// The low offset is populated every statistics.interval.ms if that value is set. +// OffsetInvalid will be returned if there is no cached offset for either value. +func (c *Consumer) GetWatermarkOffsets(topic string, partition int32) (low, high int64, err error) { + return getWatermarkOffsets(c, topic, partition) +} + +// OffsetsForTimes looks up offsets by timestamp for the given partitions. +// +// The returned offset for each partition is the earliest offset whose +// timestamp is greater than or equal to the given timestamp in the +// corresponding partition. If the provided timestamp exceeds that of the +// last message in the partition, a value of -1 will be returned. +// +// The timestamps to query are represented as `.Offset` in the `times` +// argument and the looked up offsets are represented as `.Offset` in the returned +// `offsets` list. +// +// The function will block for at most timeoutMs milliseconds. +// +// Duplicate Topic+Partitions are not supported. +// Per-partition errors may be returned in the `.Error` field. +func (c *Consumer) OffsetsForTimes(times []TopicPartition, timeoutMs int) (offsets []TopicPartition, err error) { + return offsetsForTimes(c, times, timeoutMs) +} + +// Subscription returns the current subscription as set by Subscribe() +func (c *Consumer) Subscription() (topics []string, err error) { + var cTopics *C.rd_kafka_topic_partition_list_t + + cErr := C.rd_kafka_subscription(c.handle.rk, &cTopics) + if cErr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return nil, newError(cErr) + } + defer C.rd_kafka_topic_partition_list_destroy(cTopics) + + topicCnt := int(cTopics.cnt) + topics = make([]string, topicCnt) + for i := 0; i < topicCnt; i++ { + crktpar := C._c_rdkafka_topic_partition_list_entry(cTopics, + C.int(i)) + topics[i] = C.GoString(crktpar.topic) + } + + return topics, nil +} + +// Assignment returns the current partition assignments +func (c *Consumer) Assignment() (partitions []TopicPartition, err error) { + var cParts *C.rd_kafka_topic_partition_list_t + + cErr := C.rd_kafka_assignment(c.handle.rk, &cParts) + if cErr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return nil, newError(cErr) + } + defer C.rd_kafka_topic_partition_list_destroy(cParts) + + partitions = newTopicPartitionsFromCparts(cParts) + + return partitions, nil +} + +// Committed retrieves committed offsets for the given set of partitions +func (c *Consumer) Committed(partitions []TopicPartition, timeoutMs int) (offsets []TopicPartition, err error) { + cparts := newCPartsFromTopicPartitions(partitions) + defer C.rd_kafka_topic_partition_list_destroy(cparts) + cerr := C.rd_kafka_committed(c.handle.rk, cparts, C.int(timeoutMs)) + if cerr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return nil, newError(cerr) + } + + return newTopicPartitionsFromCparts(cparts), nil +} + +// Position returns the current consume position for the given partitions. +// Typical use is to call Assignment() to get the partition list +// and then pass it to Position() to get the current consume position for +// each of the assigned partitions. +// The consume position is the next message to read from the partition. +// i.e., the offset of the last message seen by the application + 1. +func (c *Consumer) Position(partitions []TopicPartition) (offsets []TopicPartition, err error) { + cparts := newCPartsFromTopicPartitions(partitions) + defer C.rd_kafka_topic_partition_list_destroy(cparts) + cerr := C.rd_kafka_position(c.handle.rk, cparts) + if cerr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return nil, newError(cerr) + } + + return newTopicPartitionsFromCparts(cparts), nil +} + +// Pause consumption for the provided list of partitions +// +// Note that messages already enqueued on the consumer's Event channel +// (if `go.events.channel.enable` has been set) will NOT be purged by +// this call, set `go.events.channel.size` accordingly. +func (c *Consumer) Pause(partitions []TopicPartition) (err error) { + cparts := newCPartsFromTopicPartitions(partitions) + defer C.rd_kafka_topic_partition_list_destroy(cparts) + cerr := C.rd_kafka_pause_partitions(c.handle.rk, cparts) + if cerr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return newError(cerr) + } + return nil +} + +// Resume consumption for the provided list of partitions +func (c *Consumer) Resume(partitions []TopicPartition) (err error) { + cparts := newCPartsFromTopicPartitions(partitions) + defer C.rd_kafka_topic_partition_list_destroy(cparts) + cerr := C.rd_kafka_resume_partitions(c.handle.rk, cparts) + if cerr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + return newError(cerr) + } + return nil +} + +// SetOAuthBearerToken sets the the data to be transmitted +// to a broker during SASL/OAUTHBEARER authentication. It will return nil +// on success, otherwise an error if: +// 1) the token data is invalid (meaning an expiration time in the past +// or either a token value or an extension key or value that does not meet +// the regular expression requirements as per +// https://tools.ietf.org/html/rfc7628#section-3.1); +// 2) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +// 3) SASL/OAUTHBEARER is supported but is not configured as the client's +// authentication mechanism. +func (c *Consumer) SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error { + return c.handle.setOAuthBearerToken(oauthBearerToken) +} + +// SetOAuthBearerTokenFailure sets the error message describing why token +// retrieval/setting failed; it also schedules a new token refresh event for 10 +// seconds later so the attempt may be retried. It will return nil on +// success, otherwise an error if: +// 1) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; +// 2) SASL/OAUTHBEARER is supported but is not configured as the client's +// authentication mechanism. +func (c *Consumer) SetOAuthBearerTokenFailure(errstr string) error { + return c.handle.setOAuthBearerTokenFailure(errstr) +} + +// ConsumerGroupMetadata reflects the current consumer group member metadata. +type ConsumerGroupMetadata struct { + serialized []byte +} + +// serializeConsumerGroupMetadata converts a C metadata object to its +// binary representation so we don't have to hold on to the C object, +// which would require an explicit .Close(). +func serializeConsumerGroupMetadata(cgmd *C.rd_kafka_consumer_group_metadata_t) ([]byte, error) { + var cBuffer *C.void + var cSize C.size_t + cError := C.rd_kafka_consumer_group_metadata_write(cgmd, + (*unsafe.Pointer)(unsafe.Pointer(&cBuffer)), &cSize) + if cError != nil { + return nil, newErrorFromCErrorDestroy(cError) + } + defer C.rd_kafka_mem_free(nil, unsafe.Pointer(cBuffer)) + + return C.GoBytes(unsafe.Pointer(cBuffer), C.int(cSize)), nil +} + +// deserializeConsumerGroupMetadata converts a serialized metadata object +// back to a C object. +func deserializeConsumerGroupMetadata(serialized []byte) (*C.rd_kafka_consumer_group_metadata_t, error) { + var cgmd *C.rd_kafka_consumer_group_metadata_t + + cSerialized := C.CBytes(serialized) + defer C.free(cSerialized) + + cError := C.rd_kafka_consumer_group_metadata_read( + &cgmd, cSerialized, C.size_t(len(serialized))) + if cError != nil { + return nil, newErrorFromCErrorDestroy(cError) + } + + return cgmd, nil +} + +// GetConsumerGroupMetadata returns the consumer's current group metadata. +// This object should be passed to the transactional producer's +// SendOffsetsToTransaction() API. +func (c *Consumer) GetConsumerGroupMetadata() (*ConsumerGroupMetadata, error) { + cgmd := C.rd_kafka_consumer_group_metadata(c.handle.rk) + if cgmd == nil { + return nil, NewError(ErrState, "Consumer group metadata not available", false) + } + defer C.rd_kafka_consumer_group_metadata_destroy(cgmd) + + serialized, err := serializeConsumerGroupMetadata(cgmd) + if err != nil { + return nil, err + } + + return &ConsumerGroupMetadata{serialized}, nil +} + +// NewTestConsumerGroupMetadata creates a new consumer group metadata instance +// mainly for testing use. +// Use GetConsumerGroupMetadata() to retrieve the real metadata. +func NewTestConsumerGroupMetadata(groupID string) (*ConsumerGroupMetadata, error) { + cGroupID := C.CString(groupID) + defer C.free(unsafe.Pointer(cGroupID)) + + cgmd := C.rd_kafka_consumer_group_metadata_new(cGroupID) + if cgmd == nil { + return nil, NewError(ErrInvalidArg, "Failed to create metadata object", false) + } + + defer C.rd_kafka_consumer_group_metadata_destroy(cgmd) + serialized, err := serializeConsumerGroupMetadata(cgmd) + if err != nil { + return nil, err + } + + return &ConsumerGroupMetadata{serialized}, nil +} + +// cEventToRebalanceEvent returns an Event (AssignedPartitions or RevokedPartitions) +// based on the specified rkev. +func cEventToRebalanceEvent(rkev *C.rd_kafka_event_t) Event { + if C.rd_kafka_event_error(rkev) == C.RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS { + var ev AssignedPartitions + ev.Partitions = newTopicPartitionsFromCparts(C.rd_kafka_event_topic_partition_list(rkev)) + return ev + } else if C.rd_kafka_event_error(rkev) == C.RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS { + var ev RevokedPartitions + ev.Partitions = newTopicPartitionsFromCparts(C.rd_kafka_event_topic_partition_list(rkev)) + return ev + } else { + panic(fmt.Sprintf("Unable to create rebalance event from C type %s", + C.GoString(C.rd_kafka_err2name(C.rd_kafka_event_error(rkev))))) + } + +} + +// handleRebalanceEvent handles a assign/rebalance rebalance event. +// +// If the app provided a RebalanceCb to Subscribe*() or +// has go.application.rebalance.enable=true we create an event +// and forward it to the application thru the RebalanceCb or the +// Events channel respectively. +// Since librdkafka requires the rebalance event to be "acked" by +// the application (by calling *assign()) to synchronize state we keep track +// of if the application performed *Assign() or *Unassign(), but this only +// works for the non-channel case. For the channel case we assume the +// application calls *Assign() or *Unassign(). +// Failure to do so will "hang" the consumer, e.g., it wont start consuming +// and it wont close cleanly, so this error case should be visible +// immediately to the application developer. +// +// In the polling case (not channel based consumer) the rebalance event +// is returned in retval, else nil is returned. + +func (c *Consumer) handleRebalanceEvent(channel chan Event, rkev *C.rd_kafka_event_t) (retval Event) { + + var ev Event + + if c.rebalanceCb != nil || c.appRebalanceEnable { + // Application has a rebalance callback or has enabled + // rebalances on the events channel, create the appropriate Event. + ev = cEventToRebalanceEvent(rkev) + + } + + if channel != nil && c.appRebalanceEnable && c.rebalanceCb == nil { + // Channel-based consumer with rebalancing enabled, + // return the rebalance event and rely on the application + // to call *Assign() / *Unassign(). + return ev + } + + // Call the application's rebalance callback, if any. + if c.rebalanceCb != nil { + // Mark .appReassigned as false to keep track of whether the + // application called *Assign() / *Unassign(). + c.appReassigned = false + + c.rebalanceCb(c, ev) + + if c.appReassigned { + // Rebalance event handled by application. + return nil + } + } + + // Either there was no rebalance callback, or the application + // did not call *Assign / *Unassign, so we need to do it. + + isCooperative := c.GetRebalanceProtocol() == "COOPERATIVE" + var cError *C.rd_kafka_error_t + var cErr C.rd_kafka_resp_err_t + + if C.rd_kafka_event_error(rkev) == C.RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS { + // Assign partitions + if isCooperative { + cError = C.rd_kafka_incremental_assign( + c.handle.rk, + C.rd_kafka_event_topic_partition_list(rkev)) + } else { + cErr = C.rd_kafka_assign( + c.handle.rk, + C.rd_kafka_event_topic_partition_list(rkev)) + } + } else { + // Revoke partitions + + if isCooperative { + cError = C.rd_kafka_incremental_unassign( + c.handle.rk, + C.rd_kafka_event_topic_partition_list(rkev)) + } else { + cErr = C.rd_kafka_assign(c.handle.rk, nil) + } + } + + // If the *assign() call returned error, forward it to the + // the consumer's Events() channel for visibility. + if cError != nil { + c.events <- newErrorFromCErrorDestroy(cError) + } else if cErr != 0 { + c.events <- newError(cErr) + } + + return nil +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/context.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/context.go new file mode 100644 index 0000000..85709be --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/context.go @@ -0,0 +1,31 @@ +/** + * Copyright 2019 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package kafka + +import ( + "context" + "time" +) + +// Timeout returns the remaining time after which work done on behalf of this context should be +// canceled, or ok==false if no deadline/timeout is set. +func timeout(ctx context.Context) (timeout time.Duration, ok bool) { + if deadline, ok := ctx.Deadline(); ok { + return deadline.Sub(time.Now()), true + } + return 0, false +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/error.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/error.go new file mode 100644 index 0000000..1827f43 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/error.go @@ -0,0 +1,154 @@ +package kafka + +/** + * Copyright 2016 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Automatically generate error codes from librdkafka +// See README for instructions +//go:generate $GOPATH/bin/go_rdkafka_generr generated_errors.go + +/* +#include +#include "select_rdkafka.h" +*/ +import "C" + +import ( + "fmt" + "unsafe" +) + +// Error provides a Kafka-specific error container +type Error struct { + code ErrorCode + str string + fatal bool + retriable bool + txnRequiresAbort bool +} + +func newError(code C.rd_kafka_resp_err_t) (err Error) { + return Error{code: ErrorCode(code)} +} + +// NewError creates a new Error. +func NewError(code ErrorCode, str string, fatal bool) (err Error) { + return Error{code: code, str: str, fatal: fatal} +} + +func newErrorFromString(code ErrorCode, str string) (err Error) { + return Error{code: code, str: str} +} + +func newErrorFromCString(code C.rd_kafka_resp_err_t, cstr *C.char) (err Error) { + var str string + if cstr != nil { + str = C.GoString(cstr) + } else { + str = "" + } + return Error{code: ErrorCode(code), str: str} +} + +func newCErrorFromString(code C.rd_kafka_resp_err_t, str string) (err Error) { + return newErrorFromString(ErrorCode(code), str) +} + +// newErrorFromCError creates a new Error instance and destroys +// the passed cError. +func newErrorFromCErrorDestroy(cError *C.rd_kafka_error_t) Error { + defer C.rd_kafka_error_destroy(cError) + return Error{ + code: ErrorCode(C.rd_kafka_error_code(cError)), + str: C.GoString(C.rd_kafka_error_string(cError)), + fatal: cint2bool(C.rd_kafka_error_is_fatal(cError)), + retriable: cint2bool(C.rd_kafka_error_is_retriable(cError)), + txnRequiresAbort: cint2bool(C.rd_kafka_error_txn_requires_abort(cError)), + } +} + +// Error returns a human readable representation of an Error +// Same as Error.String() +func (e Error) Error() string { + return e.String() +} + +// String returns a human readable representation of an Error +func (e Error) String() string { + var errstr string + if len(e.str) > 0 { + errstr = e.str + } else { + errstr = e.code.String() + } + + if e.IsFatal() { + return fmt.Sprintf("Fatal error: %s", errstr) + } + + return errstr +} + +// Code returns the ErrorCode of an Error +func (e Error) Code() ErrorCode { + return e.code +} + +// IsFatal returns true if the error is a fatal error. +// A fatal error indicates the client instance is no longer operable and +// should be terminated. Typical causes include non-recoverable +// idempotent producer errors. +func (e Error) IsFatal() bool { + return e.fatal +} + +// IsRetriable returns true if the operation that caused this error +// may be retried. +// This flag is currently only set by the Transactional producer API. +func (e Error) IsRetriable() bool { + return e.retriable +} + +// TxnRequiresAbort returns true if the error is an abortable transaction error +// that requires the application to abort the current transaction with +// AbortTransaction() and start a new transaction with BeginTransaction() +// if it wishes to proceed with transactional operations. +// This flag is only set by the Transactional producer API. +func (e Error) TxnRequiresAbort() bool { + return e.txnRequiresAbort +} + +// getFatalError returns an Error object if the client instance has raised a fatal error, else nil. +func getFatalError(H Handle) error { + cErrstr := (*C.char)(C.malloc(C.size_t(512))) + defer C.free(unsafe.Pointer(cErrstr)) + + cErr := C.rd_kafka_fatal_error(H.gethandle().rk, cErrstr, 512) + if int(cErr) == 0 { + return nil + } + + err := newErrorFromCString(cErr, cErrstr) + err.fatal = true + + return err +} + +// testFatalError triggers a fatal error in the underlying client. +// This is to be used strictly for testing purposes. +func testFatalError(H Handle, code ErrorCode, str string) ErrorCode { + return ErrorCode(C.rd_kafka_test_fatal_error(H.gethandle().rk, C.rd_kafka_resp_err_t(code), C.CString(str))) +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/error_gen.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/error_gen.go new file mode 100644 index 0000000..4ceecb3 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/error_gen.go @@ -0,0 +1,112 @@ +package kafka + +/** + * Copyright 2020 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Automatically generate error codes from librdkafka +// See README for instructions +//go:generate $GOPATH/bin/go_rdkafka_generr generated_errors.go + +/* +#include +#include "select_rdkafka.h" + +static const char *errdesc_to_string (const struct rd_kafka_err_desc *ed, int idx) { + return ed[idx].name; +} + +static const char *errdesc_to_desc (const struct rd_kafka_err_desc *ed, int idx) { + return ed[idx].desc; +} +*/ +import "C" + +import ( + "fmt" + "os" + "strings" + "time" +) + +// camelCase transforms a snake_case string to camelCase. +func camelCase(s string) string { + ret := "" + for _, v := range strings.Split(s, "_") { + if len(v) == 0 { + continue + } + ret += strings.ToUpper((string)(v[0])) + strings.ToLower(v[1:]) + } + return ret +} + +// WriteErrorCodes writes Go error code constants to file from the +// librdkafka error codes. +// This function is not intended for public use. +func WriteErrorCodes(f *os.File) { + f.WriteString("package kafka\n") + now := time.Now() + f.WriteString(fmt.Sprintf("// Copyright 2016-%d Confluent Inc.\n", now.Year())) + f.WriteString(fmt.Sprintf("// AUTOMATICALLY GENERATED ON %v USING librdkafka %s\n", + now, C.GoString(C.rd_kafka_version_str()))) + + var errdescs *C.struct_rd_kafka_err_desc + var csize C.size_t + C.rd_kafka_get_err_descs(&errdescs, &csize) + + f.WriteString(` +/* +#include "select_rdkafka.h" +*/ +import "C" + +// ErrorCode is the integer representation of local and broker error codes +type ErrorCode int + +// String returns a human readable representation of an error code +func (c ErrorCode) String() string { + return C.GoString(C.rd_kafka_err2str(C.rd_kafka_resp_err_t(c))) +} + +const ( +`) + + for i := 0; i < int(csize); i++ { + orig := C.GoString(C.errdesc_to_string(errdescs, C.int(i))) + if len(orig) == 0 { + continue + } + desc := C.GoString(C.errdesc_to_desc(errdescs, C.int(i))) + if len(desc) == 0 { + continue + } + + errname := "Err" + camelCase(orig) + + // Special handling to please golint + // Eof -> EOF + // Id -> ID + errname = strings.Replace(errname, "Eof", "EOF", -1) + errname = strings.Replace(errname, "Id", "ID", -1) + + f.WriteString(fmt.Sprintf(" // %s %s\n", errname, desc)) + f.WriteString(fmt.Sprintf(" %s ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_%s)\n", + errname, orig)) + } + + f.WriteString(")\n") + +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/event.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/event.go new file mode 100644 index 0000000..6357ad8 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/event.go @@ -0,0 +1,316 @@ +package kafka + +/** + * Copyright 2016 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ( + "fmt" + "os" + "unsafe" +) + +/* +#include +#include "select_rdkafka.h" +#include "glue_rdkafka.h" + + +void chdrs_to_tmphdrs (glue_msg_t *gMsg) { + size_t i = 0; + const char *name; + const void *val; + size_t size; + rd_kafka_headers_t *chdrs; + + if (rd_kafka_message_headers(gMsg->msg, &chdrs)) { + gMsg->tmphdrs = NULL; + gMsg->tmphdrsCnt = 0; + return; + } + + gMsg->tmphdrsCnt = rd_kafka_header_cnt(chdrs); + gMsg->tmphdrs = malloc(sizeof(*gMsg->tmphdrs) * gMsg->tmphdrsCnt); + + while (!rd_kafka_header_get_all(chdrs, i, + &gMsg->tmphdrs[i].key, + &gMsg->tmphdrs[i].val, + (size_t *)&gMsg->tmphdrs[i].size)) + i++; +} + +rd_kafka_event_t *_rk_queue_poll (rd_kafka_queue_t *rkq, int timeoutMs, + rd_kafka_event_type_t *evtype, + glue_msg_t *gMsg, + rd_kafka_event_t *prev_rkev) { + rd_kafka_event_t *rkev; + + if (prev_rkev) + rd_kafka_event_destroy(prev_rkev); + + rkev = rd_kafka_queue_poll(rkq, timeoutMs); + *evtype = rd_kafka_event_type(rkev); + + if (*evtype == RD_KAFKA_EVENT_FETCH) { + gMsg->msg = (rd_kafka_message_t *)rd_kafka_event_message_next(rkev); + gMsg->ts = rd_kafka_message_timestamp(gMsg->msg, &gMsg->tstype); + + if (gMsg->want_hdrs) + chdrs_to_tmphdrs(gMsg); + } + + return rkev; +} +*/ +import "C" + +func chdrsToTmphdrs(gMsg *C.glue_msg_t) { + C.chdrs_to_tmphdrs(gMsg) +} + +// Event generic interface +type Event interface { + // String returns a human-readable representation of the event + String() string +} + +// Specific event types + +// Stats statistics event +type Stats struct { + statsJSON string +} + +func (e Stats) String() string { + return e.statsJSON +} + +// AssignedPartitions consumer group rebalance event: assigned partition set +type AssignedPartitions struct { + Partitions []TopicPartition +} + +func (e AssignedPartitions) String() string { + return fmt.Sprintf("AssignedPartitions: %v", e.Partitions) +} + +// RevokedPartitions consumer group rebalance event: revoked partition set +type RevokedPartitions struct { + Partitions []TopicPartition +} + +func (e RevokedPartitions) String() string { + return fmt.Sprintf("RevokedPartitions: %v", e.Partitions) +} + +// PartitionEOF consumer reached end of partition +// Needs to be explicitly enabled by setting the `enable.partition.eof` +// configuration property to true. +type PartitionEOF TopicPartition + +func (p PartitionEOF) String() string { + return fmt.Sprintf("EOF at %s", TopicPartition(p)) +} + +// OffsetsCommitted reports committed offsets +type OffsetsCommitted struct { + Error error + Offsets []TopicPartition +} + +func (o OffsetsCommitted) String() string { + return fmt.Sprintf("OffsetsCommitted (%v, %v)", o.Error, o.Offsets) +} + +// OAuthBearerTokenRefresh indicates token refresh is required +type OAuthBearerTokenRefresh struct { + // Config is the value of the sasl.oauthbearer.config property + Config string +} + +func (o OAuthBearerTokenRefresh) String() string { + return "OAuthBearerTokenRefresh" +} + +// eventPoll polls an event from the handler's C rd_kafka_queue_t, +// translates it into an Event type and then sends on `channel` if non-nil, else returns the Event. +// term_chan is an optional channel to monitor along with producing to channel +// to indicate that `channel` is being terminated. +// returns (event Event, terminate Bool) tuple, where Terminate indicates +// if termChan received a termination event. +func (h *handle) eventPoll(channel chan Event, timeoutMs int, maxEvents int, termChan chan bool) (Event, bool) { + + var prevRkev *C.rd_kafka_event_t + term := false + + var retval Event + + if channel == nil { + maxEvents = 1 + } +out: + for evcnt := 0; evcnt < maxEvents; evcnt++ { + var evtype C.rd_kafka_event_type_t + var gMsg C.glue_msg_t + gMsg.want_hdrs = C.int8_t(bool2cint(h.msgFields.Headers)) + rkev := C._rk_queue_poll(h.rkq, C.int(timeoutMs), &evtype, &gMsg, prevRkev) + prevRkev = rkev + timeoutMs = 0 + + retval = nil + + switch evtype { + case C.RD_KAFKA_EVENT_FETCH: + // Consumer fetch event, new message. + // Extracted into temporary gMsg for optimization + retval = h.newMessageFromGlueMsg(&gMsg) + + case C.RD_KAFKA_EVENT_REBALANCE: + // Consumer rebalance event + retval = h.c.handleRebalanceEvent(channel, rkev) + + case C.RD_KAFKA_EVENT_ERROR: + // Error event + cErr := C.rd_kafka_event_error(rkev) + if cErr == C.RD_KAFKA_RESP_ERR__PARTITION_EOF { + crktpar := C.rd_kafka_event_topic_partition(rkev) + if crktpar == nil { + break + } + + defer C.rd_kafka_topic_partition_destroy(crktpar) + var peof PartitionEOF + setupTopicPartitionFromCrktpar((*TopicPartition)(&peof), crktpar) + + retval = peof + + } else if int(C.rd_kafka_event_error_is_fatal(rkev)) != 0 { + // A fatal error has been raised. + // Extract the actual error from the client + // instance and return a new Error with + // fatal set to true. + cFatalErrstrSize := C.size_t(512) + cFatalErrstr := (*C.char)(C.malloc(cFatalErrstrSize)) + defer C.free(unsafe.Pointer(cFatalErrstr)) + cFatalErr := C.rd_kafka_fatal_error(h.rk, cFatalErrstr, cFatalErrstrSize) + fatalErr := newErrorFromCString(cFatalErr, cFatalErrstr) + fatalErr.fatal = true + retval = fatalErr + + } else { + retval = newErrorFromCString(cErr, C.rd_kafka_event_error_string(rkev)) + } + + case C.RD_KAFKA_EVENT_STATS: + retval = &Stats{C.GoString(C.rd_kafka_event_stats(rkev))} + + case C.RD_KAFKA_EVENT_DR: + // Producer Delivery Report event + // Each such event contains delivery reports for all + // messages in the produced batch. + // Forward delivery reports to per-message's response channel + // or to the global Producer.Events channel, or none. + rkmessages := make([]*C.rd_kafka_message_t, int(C.rd_kafka_event_message_count(rkev))) + + cnt := int(C.rd_kafka_event_message_array(rkev, (**C.rd_kafka_message_t)(unsafe.Pointer(&rkmessages[0])), C.size_t(len(rkmessages)))) + + for _, rkmessage := range rkmessages[:cnt] { + msg := h.newMessageFromC(rkmessage) + var ch *chan Event + + if rkmessage._private != nil { + // Find cgoif by id + cg, found := h.cgoGet((int)((uintptr)(rkmessage._private))) + if found { + cdr := cg.(cgoDr) + + if cdr.deliveryChan != nil { + ch = &cdr.deliveryChan + } + msg.Opaque = cdr.opaque + } + } + + if ch == nil && h.fwdDr { + ch = &channel + } + + if ch != nil { + select { + case *ch <- msg: + case <-termChan: + retval = nil + term = true + break out + } + + } else { + retval = msg + break out + } + } + + case C.RD_KAFKA_EVENT_OFFSET_COMMIT: + // Offsets committed + cErr := C.rd_kafka_event_error(rkev) + coffsets := C.rd_kafka_event_topic_partition_list(rkev) + var offsets []TopicPartition + if coffsets != nil { + offsets = newTopicPartitionsFromCparts(coffsets) + } + + if cErr != C.RD_KAFKA_RESP_ERR_NO_ERROR { + retval = OffsetsCommitted{newErrorFromCString(cErr, C.rd_kafka_event_error_string(rkev)), offsets} + } else { + retval = OffsetsCommitted{nil, offsets} + } + + case C.RD_KAFKA_EVENT_OAUTHBEARER_TOKEN_REFRESH: + ev := OAuthBearerTokenRefresh{C.GoString(C.rd_kafka_event_config_string(rkev))} + retval = ev + + case C.RD_KAFKA_EVENT_NONE: + // poll timed out: no events available + break out + + default: + if rkev != nil { + fmt.Fprintf(os.Stderr, "Ignored event %s\n", + C.GoString(C.rd_kafka_event_name(rkev))) + } + + } + + if retval != nil { + if channel != nil { + select { + case channel <- retval: + case <-termChan: + retval = nil + term = true + break out + } + } else { + break out + } + } + } + + if prevRkev != nil { + C.rd_kafka_event_destroy(prevRkev) + } + + return retval, term +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/generated_errors.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/generated_errors.go new file mode 100644 index 0000000..fb828f9 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/generated_errors.go @@ -0,0 +1,337 @@ +package kafka +// Copyright 2016-2021 Confluent Inc. +// AUTOMATICALLY GENERATED ON 2021-12-08 12:44:39.243338672 +0100 CET m=+0.000248284 USING librdkafka 1.8.2 + +/* +#include "select_rdkafka.h" +*/ +import "C" + +// ErrorCode is the integer representation of local and broker error codes +type ErrorCode int + +// String returns a human readable representation of an error code +func (c ErrorCode) String() string { + return C.GoString(C.rd_kafka_err2str(C.rd_kafka_resp_err_t(c))) +} + +const ( + // ErrBadMsg Local: Bad message format + ErrBadMsg ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__BAD_MSG) + // ErrBadCompression Local: Invalid compressed data + ErrBadCompression ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__BAD_COMPRESSION) + // ErrDestroy Local: Broker handle destroyed + ErrDestroy ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__DESTROY) + // ErrFail Local: Communication failure with broker + ErrFail ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__FAIL) + // ErrTransport Local: Broker transport failure + ErrTransport ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__TRANSPORT) + // ErrCritSysResource Local: Critical system resource failure + ErrCritSysResource ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE) + // ErrResolve Local: Host resolution failure + ErrResolve ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__RESOLVE) + // ErrMsgTimedOut Local: Message timed out + ErrMsgTimedOut ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__MSG_TIMED_OUT) + // ErrPartitionEOF Broker: No more messages + ErrPartitionEOF ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PARTITION_EOF) + // ErrUnknownPartition Local: Unknown partition + ErrUnknownPartition ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION) + // ErrFs Local: File or filesystem error + ErrFs ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__FS) + // ErrUnknownTopic Local: Unknown topic + ErrUnknownTopic ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC) + // ErrAllBrokersDown Local: All broker connections are down + ErrAllBrokersDown ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN) + // ErrInvalidArg Local: Invalid argument or configuration + ErrInvalidArg ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__INVALID_ARG) + // ErrTimedOut Local: Timed out + ErrTimedOut ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__TIMED_OUT) + // ErrQueueFull Local: Queue full + ErrQueueFull ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__QUEUE_FULL) + // ErrIsrInsuff Local: ISR count insufficient + ErrIsrInsuff ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__ISR_INSUFF) + // ErrNodeUpdate Local: Broker node update + ErrNodeUpdate ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NODE_UPDATE) + // ErrSsl Local: SSL error + ErrSsl ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__SSL) + // ErrWaitCoord Local: Waiting for coordinator + ErrWaitCoord ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__WAIT_COORD) + // ErrUnknownGroup Local: Unknown group + ErrUnknownGroup ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_GROUP) + // ErrInProgress Local: Operation in progress + ErrInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__IN_PROGRESS) + // ErrPrevInProgress Local: Previous operation in progress + ErrPrevInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS) + // ErrExistingSubscription Local: Existing subscription + ErrExistingSubscription ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION) + // ErrAssignPartitions Local: Assign partitions + ErrAssignPartitions ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS) + // ErrRevokePartitions Local: Revoke partitions + ErrRevokePartitions ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS) + // ErrConflict Local: Conflicting use + ErrConflict ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__CONFLICT) + // ErrState Local: Erroneous state + ErrState ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__STATE) + // ErrUnknownProtocol Local: Unknown protocol + ErrUnknownProtocol ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL) + // ErrNotImplemented Local: Not implemented + ErrNotImplemented ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED) + // ErrAuthentication Local: Authentication failure + ErrAuthentication ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__AUTHENTICATION) + // ErrNoOffset Local: No offset stored + ErrNoOffset ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NO_OFFSET) + // ErrOutdated Local: Outdated + ErrOutdated ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__OUTDATED) + // ErrTimedOutQueue Local: Timed out in queue + ErrTimedOutQueue ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE) + // ErrUnsupportedFeature Local: Required feature not supported by broker + ErrUnsupportedFeature ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE) + // ErrWaitCache Local: Awaiting cache update + ErrWaitCache ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__WAIT_CACHE) + // ErrIntr Local: Operation interrupted + ErrIntr ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__INTR) + // ErrKeySerialization Local: Key serialization error + ErrKeySerialization ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__KEY_SERIALIZATION) + // ErrValueSerialization Local: Value serialization error + ErrValueSerialization ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION) + // ErrKeyDeserialization Local: Key deserialization error + ErrKeyDeserialization ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION) + // ErrValueDeserialization Local: Value deserialization error + ErrValueDeserialization ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION) + // ErrPartial Local: Partial response + ErrPartial ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PARTIAL) + // ErrReadOnly Local: Read-only object + ErrReadOnly ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__READ_ONLY) + // ErrNoent Local: No such entry + ErrNoent ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NOENT) + // ErrUnderflow Local: Read underflow + ErrUnderflow ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNDERFLOW) + // ErrInvalidType Local: Invalid type + ErrInvalidType ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__INVALID_TYPE) + // ErrRetry Local: Retry operation + ErrRetry ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__RETRY) + // ErrPurgeQueue Local: Purged in queue + ErrPurgeQueue ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PURGE_QUEUE) + // ErrPurgeInflight Local: Purged in flight + ErrPurgeInflight ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__PURGE_INFLIGHT) + // ErrFatal Local: Fatal error + ErrFatal ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__FATAL) + // ErrInconsistent Local: Inconsistent state + ErrInconsistent ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__INCONSISTENT) + // ErrGaplessGuarantee Local: Gap-less ordering would not be guaranteed if proceeding + ErrGaplessGuarantee ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE) + // ErrMaxPollExceeded Local: Maximum application poll interval (max.poll.interval.ms) exceeded + ErrMaxPollExceeded ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED) + // ErrUnknownBroker Local: Unknown broker + ErrUnknownBroker ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__UNKNOWN_BROKER) + // ErrNotConfigured Local: Functionality not configured + ErrNotConfigured ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NOT_CONFIGURED) + // ErrFenced Local: This instance has been fenced by a newer instance + ErrFenced ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__FENCED) + // ErrApplication Local: Application generated error + ErrApplication ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__APPLICATION) + // ErrAssignmentLost Local: Group partition assignment lost + ErrAssignmentLost ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST) + // ErrNoop Local: No operation performed + ErrNoop ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__NOOP) + // ErrAutoOffsetReset Local: No offset to automatically reset to + ErrAutoOffsetReset ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET) + // ErrUnknown Unknown broker error + ErrUnknown ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN) + // ErrNoError Success + ErrNoError ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NO_ERROR) + // ErrOffsetOutOfRange Broker: Offset out of range + ErrOffsetOutOfRange ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE) + // ErrInvalidMsg Broker: Invalid message + ErrInvalidMsg ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_MSG) + // ErrUnknownTopicOrPart Broker: Unknown topic or partition + ErrUnknownTopicOrPart ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART) + // ErrInvalidMsgSize Broker: Invalid message size + ErrInvalidMsgSize ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE) + // ErrLeaderNotAvailable Broker: Leader not available + ErrLeaderNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE) + // ErrNotLeaderForPartition Broker: Not leader for partition + ErrNotLeaderForPartition ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION) + // ErrRequestTimedOut Broker: Request timed out + ErrRequestTimedOut ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT) + // ErrBrokerNotAvailable Broker: Broker not available + ErrBrokerNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE) + // ErrReplicaNotAvailable Broker: Replica not available + ErrReplicaNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE) + // ErrMsgSizeTooLarge Broker: Message size too large + ErrMsgSizeTooLarge ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE) + // ErrStaleCtrlEpoch Broker: StaleControllerEpochCode + ErrStaleCtrlEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH) + // ErrOffsetMetadataTooLarge Broker: Offset metadata string too large + ErrOffsetMetadataTooLarge ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE) + // ErrNetworkException Broker: Broker disconnected before response received + ErrNetworkException ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION) + // ErrCoordinatorLoadInProgress Broker: Coordinator load in progress + ErrCoordinatorLoadInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS) + // ErrCoordinatorNotAvailable Broker: Coordinator not available + ErrCoordinatorNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE) + // ErrNotCoordinator Broker: Not coordinator + ErrNotCoordinator ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_COORDINATOR) + // ErrTopicException Broker: Invalid topic + ErrTopicException ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION) + // ErrRecordListTooLarge Broker: Message batch larger than configured server segment size + ErrRecordListTooLarge ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE) + // ErrNotEnoughReplicas Broker: Not enough in-sync replicas + ErrNotEnoughReplicas ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS) + // ErrNotEnoughReplicasAfterAppend Broker: Message(s) written to insufficient number of in-sync replicas + ErrNotEnoughReplicasAfterAppend ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND) + // ErrInvalidRequiredAcks Broker: Invalid required acks value + ErrInvalidRequiredAcks ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS) + // ErrIllegalGeneration Broker: Specified group generation id is not valid + ErrIllegalGeneration ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION) + // ErrInconsistentGroupProtocol Broker: Inconsistent group protocol + ErrInconsistentGroupProtocol ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL) + // ErrInvalidGroupID Broker: Invalid group.id + ErrInvalidGroupID ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_GROUP_ID) + // ErrUnknownMemberID Broker: Unknown member + ErrUnknownMemberID ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID) + // ErrInvalidSessionTimeout Broker: Invalid session timeout + ErrInvalidSessionTimeout ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT) + // ErrRebalanceInProgress Broker: Group rebalance in progress + ErrRebalanceInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS) + // ErrInvalidCommitOffsetSize Broker: Commit offset data size is not valid + ErrInvalidCommitOffsetSize ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE) + // ErrTopicAuthorizationFailed Broker: Topic authorization failed + ErrTopicAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED) + // ErrGroupAuthorizationFailed Broker: Group authorization failed + ErrGroupAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED) + // ErrClusterAuthorizationFailed Broker: Cluster authorization failed + ErrClusterAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED) + // ErrInvalidTimestamp Broker: Invalid timestamp + ErrInvalidTimestamp ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP) + // ErrUnsupportedSaslMechanism Broker: Unsupported SASL mechanism + ErrUnsupportedSaslMechanism ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM) + // ErrIllegalSaslState Broker: Request not valid in current SASL state + ErrIllegalSaslState ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE) + // ErrUnsupportedVersion Broker: API version not supported + ErrUnsupportedVersion ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION) + // ErrTopicAlreadyExists Broker: Topic already exists + ErrTopicAlreadyExists ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS) + // ErrInvalidPartitions Broker: Invalid number of partitions + ErrInvalidPartitions ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_PARTITIONS) + // ErrInvalidReplicationFactor Broker: Invalid replication factor + ErrInvalidReplicationFactor ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR) + // ErrInvalidReplicaAssignment Broker: Invalid replica assignment + ErrInvalidReplicaAssignment ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT) + // ErrInvalidConfig Broker: Configuration is invalid + ErrInvalidConfig ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_CONFIG) + // ErrNotController Broker: Not controller for cluster + ErrNotController ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NOT_CONTROLLER) + // ErrInvalidRequest Broker: Invalid request + ErrInvalidRequest ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_REQUEST) + // ErrUnsupportedForMessageFormat Broker: Message format on broker does not support request + ErrUnsupportedForMessageFormat ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT) + // ErrPolicyViolation Broker: Policy violation + ErrPolicyViolation ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_POLICY_VIOLATION) + // ErrOutOfOrderSequenceNumber Broker: Broker received an out of order sequence number + ErrOutOfOrderSequenceNumber ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER) + // ErrDuplicateSequenceNumber Broker: Broker received a duplicate sequence number + ErrDuplicateSequenceNumber ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER) + // ErrInvalidProducerEpoch Broker: Producer attempted an operation with an old epoch + ErrInvalidProducerEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH) + // ErrInvalidTxnState Broker: Producer attempted a transactional operation in an invalid state + ErrInvalidTxnState ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_TXN_STATE) + // ErrInvalidProducerIDMapping Broker: Producer attempted to use a producer id which is not currently assigned to its transactional id + ErrInvalidProducerIDMapping ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING) + // ErrInvalidTransactionTimeout Broker: Transaction timeout is larger than the maximum value allowed by the broker's max.transaction.timeout.ms + ErrInvalidTransactionTimeout ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT) + // ErrConcurrentTransactions Broker: Producer attempted to update a transaction while another concurrent operation on the same transaction was ongoing + ErrConcurrentTransactions ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS) + // ErrTransactionCoordinatorFenced Broker: Indicates that the transaction coordinator sending a WriteTxnMarker is no longer the current coordinator for a given producer + ErrTransactionCoordinatorFenced ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED) + // ErrTransactionalIDAuthorizationFailed Broker: Transactional Id authorization failed + ErrTransactionalIDAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED) + // ErrSecurityDisabled Broker: Security features are disabled + ErrSecurityDisabled ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_SECURITY_DISABLED) + // ErrOperationNotAttempted Broker: Operation not attempted + ErrOperationNotAttempted ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED) + // ErrKafkaStorageError Broker: Disk error when trying to access log file on disk + ErrKafkaStorageError ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR) + // ErrLogDirNotFound Broker: The user-specified log directory is not found in the broker config + ErrLogDirNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND) + // ErrSaslAuthenticationFailed Broker: SASL Authentication failed + ErrSaslAuthenticationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED) + // ErrUnknownProducerID Broker: Unknown Producer Id + ErrUnknownProducerID ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID) + // ErrReassignmentInProgress Broker: Partition reassignment is in progress + ErrReassignmentInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS) + // ErrDelegationTokenAuthDisabled Broker: Delegation Token feature is not enabled + ErrDelegationTokenAuthDisabled ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED) + // ErrDelegationTokenNotFound Broker: Delegation Token is not found on server + ErrDelegationTokenNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND) + // ErrDelegationTokenOwnerMismatch Broker: Specified Principal is not valid Owner/Renewer + ErrDelegationTokenOwnerMismatch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH) + // ErrDelegationTokenRequestNotAllowed Broker: Delegation Token requests are not allowed on this connection + ErrDelegationTokenRequestNotAllowed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED) + // ErrDelegationTokenAuthorizationFailed Broker: Delegation Token authorization failed + ErrDelegationTokenAuthorizationFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED) + // ErrDelegationTokenExpired Broker: Delegation Token is expired + ErrDelegationTokenExpired ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED) + // ErrInvalidPrincipalType Broker: Supplied principalType is not supported + ErrInvalidPrincipalType ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE) + // ErrNonEmptyGroup Broker: The group is not empty + ErrNonEmptyGroup ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP) + // ErrGroupIDNotFound Broker: The group id does not exist + ErrGroupIDNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND) + // ErrFetchSessionIDNotFound Broker: The fetch session ID was not found + ErrFetchSessionIDNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND) + // ErrInvalidFetchSessionEpoch Broker: The fetch session epoch is invalid + ErrInvalidFetchSessionEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH) + // ErrListenerNotFound Broker: No matching listener + ErrListenerNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND) + // ErrTopicDeletionDisabled Broker: Topic deletion is disabled + ErrTopicDeletionDisabled ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED) + // ErrFencedLeaderEpoch Broker: Leader epoch is older than broker epoch + ErrFencedLeaderEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH) + // ErrUnknownLeaderEpoch Broker: Leader epoch is newer than broker epoch + ErrUnknownLeaderEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH) + // ErrUnsupportedCompressionType Broker: Unsupported compression type + ErrUnsupportedCompressionType ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE) + // ErrStaleBrokerEpoch Broker: Broker epoch has changed + ErrStaleBrokerEpoch ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH) + // ErrOffsetNotAvailable Broker: Leader high watermark is not caught up + ErrOffsetNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE) + // ErrMemberIDRequired Broker: Group member needs a valid member ID + ErrMemberIDRequired ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED) + // ErrPreferredLeaderNotAvailable Broker: Preferred leader was not available + ErrPreferredLeaderNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE) + // ErrGroupMaxSizeReached Broker: Consumer group has reached maximum size + ErrGroupMaxSizeReached ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED) + // ErrFencedInstanceID Broker: Static consumer fenced by other consumer with same group.instance.id + ErrFencedInstanceID ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID) + // ErrEligibleLeadersNotAvailable Broker: Eligible partition leaders are not available + ErrEligibleLeadersNotAvailable ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE) + // ErrElectionNotNeeded Broker: Leader election not needed for topic partition + ErrElectionNotNeeded ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED) + // ErrNoReassignmentInProgress Broker: No partition reassignment is in progress + ErrNoReassignmentInProgress ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS) + // ErrGroupSubscribedToTopic Broker: Deleting offsets of a topic while the consumer group is subscribed to it + ErrGroupSubscribedToTopic ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC) + // ErrInvalidRecord Broker: Broker failed to validate record + ErrInvalidRecord ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_RECORD) + // ErrUnstableOffsetCommit Broker: There are unstable offsets that need to be cleared + ErrUnstableOffsetCommit ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT) + // ErrThrottlingQuotaExceeded Broker: Throttling quota has been exceeded + ErrThrottlingQuotaExceeded ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED) + // ErrProducerFenced Broker: There is a newer producer with the same transactionalId which fences the current one + ErrProducerFenced ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_PRODUCER_FENCED) + // ErrResourceNotFound Broker: Request illegally referred to resource that does not exist + ErrResourceNotFound ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND) + // ErrDuplicateResource Broker: Request illegally referred to the same resource twice + ErrDuplicateResource ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE) + // ErrUnacceptableCredential Broker: Requested credential would not meet criteria for acceptability + ErrUnacceptableCredential ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL) + // ErrInconsistentVoterSet Broker: Indicates that the either the sender or recipient of a voter-only request is not one of the expected voters + ErrInconsistentVoterSet ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET) + // ErrInvalidUpdateVersion Broker: Invalid update version + ErrInvalidUpdateVersion ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION) + // ErrFeatureUpdateFailed Broker: Unable to update finalized features due to server error + ErrFeatureUpdateFailed ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED) + // ErrPrincipalDeserializationFailure Broker: Request principal deserialization failed during forwarding + ErrPrincipalDeserializationFailure ErrorCode = ErrorCode(C.RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE) +) diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/glue_rdkafka.h b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/glue_rdkafka.h new file mode 100644 index 0000000..bbff507 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/glue_rdkafka.h @@ -0,0 +1,48 @@ +/** + * Copyright 2016 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + + +/** + * Glue between Go, Cgo and librdkafka + */ + + +/** + * Temporary C to Go header representation + */ +typedef struct tmphdr_s { + const char *key; + const void *val; // producer: malloc()ed by Go code if size > 0 + // consumer: owned by librdkafka + ssize_t size; +} tmphdr_t; + + + +/** + * @struct This is a glue struct used by the C code in this client to + * effectively map fields from a librdkafka rd_kafka_message_t + * to something usable in Go with as few CGo calls as possible. + */ +typedef struct glue_msg_s { + rd_kafka_message_t *msg; + rd_kafka_timestamp_type_t tstype; + int64_t ts; + tmphdr_t *tmphdrs; + size_t tmphdrsCnt; + int8_t want_hdrs; /**< If true, copy headers */ +} glue_msg_t; diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/handle.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/handle.go new file mode 100644 index 0000000..161a395 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/handle.go @@ -0,0 +1,379 @@ +package kafka + +/** + * Copyright 2016 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ( + "fmt" + "strings" + "sync" + "time" + "unsafe" +) + +/* +#include "select_rdkafka.h" +#include +*/ +import "C" + +// OAuthBearerToken represents the data to be transmitted +// to a broker during SASL/OAUTHBEARER authentication. +type OAuthBearerToken struct { + // Token value, often (but not necessarily) a JWS compact serialization + // as per https://tools.ietf.org/html/rfc7515#section-3.1; it must meet + // the regular expression for a SASL/OAUTHBEARER value defined at + // https://tools.ietf.org/html/rfc7628#section-3.1 + TokenValue string + // Metadata about the token indicating when it expires (local time); + // it must represent a time in the future + Expiration time.Time + // Metadata about the token indicating the Kafka principal name + // to which it applies (for example, "admin") + Principal string + // SASL extensions, if any, to be communicated to the broker during + // authentication (all keys and values of which must meet the regular + // expressions defined at https://tools.ietf.org/html/rfc7628#section-3.1, + // and it must not contain the reserved "auth" key) + Extensions map[string]string +} + +// Handle represents a generic client handle containing common parts for +// both Producer and Consumer. +type Handle interface { + // SetOAuthBearerToken sets the the data to be transmitted + // to a broker during SASL/OAUTHBEARER authentication. It will return nil + // on success, otherwise an error if: + // 1) the token data is invalid (meaning an expiration time in the past + // or either a token value or an extension key or value that does not meet + // the regular expression requirements as per + // https://tools.ietf.org/html/rfc7628#section-3.1); + // 2) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; + // 3) SASL/OAUTHBEARER is supported but is not configured as the client's + // authentication mechanism. + SetOAuthBearerToken(oauthBearerToken OAuthBearerToken) error + + // SetOAuthBearerTokenFailure sets the error message describing why token + // retrieval/setting failed; it also schedules a new token refresh event for 10 + // seconds later so the attempt may be retried. It will return nil on + // success, otherwise an error if: + // 1) SASL/OAUTHBEARER is not supported by the underlying librdkafka build; + // 2) SASL/OAUTHBEARER is supported but is not configured as the client's + // authentication mechanism. + SetOAuthBearerTokenFailure(errstr string) error + + // gethandle() returns the internal handle struct pointer + gethandle() *handle +} + +// Common instance handle for both Producer and Consumer +type handle struct { + rk *C.rd_kafka_t + rkq *C.rd_kafka_queue_t + + // Forward logs from librdkafka log queue to logs channel. + logs chan LogEvent + logq *C.rd_kafka_queue_t + closeLogsChan bool + + // Topic <-> rkt caches + rktCacheLock sync.Mutex + // topic name -> rkt cache + rktCache map[string]*C.rd_kafka_topic_t + // rkt -> topic name cache + rktNameCache map[*C.rd_kafka_topic_t]string + + // Cached instance name to avoid CGo call in String() + name string + + // + // cgo map + // Maps C callbacks based on cgoid back to its Go object + cgoLock sync.Mutex + cgoidNext uintptr + cgomap map[int]cgoif + + // + // producer + // + p *Producer + + // Forward delivery reports on Producer.Events channel + fwdDr bool + + // Enabled message fields for delivery reports and consumed messages. + msgFields *messageFields + + // + // consumer + // + c *Consumer + + // WaitGroup to wait for spawned go-routines to finish. + waitGroup sync.WaitGroup +} + +func (h *handle) String() string { + return h.name +} + +func (h *handle) setup() { + h.rktCache = make(map[string]*C.rd_kafka_topic_t) + h.rktNameCache = make(map[*C.rd_kafka_topic_t]string) + h.cgomap = make(map[int]cgoif) + h.name = C.GoString(C.rd_kafka_name(h.rk)) + if h.msgFields == nil { + h.msgFields = newMessageFields() + } +} + +func (h *handle) cleanup() { + if h.logs != nil { + C.rd_kafka_queue_destroy(h.logq) + if h.closeLogsChan { + close(h.logs) + } + } + + for _, crkt := range h.rktCache { + C.rd_kafka_topic_destroy(crkt) + } + + if h.rkq != nil { + C.rd_kafka_queue_destroy(h.rkq) + } +} + +func (h *handle) setupLogQueue(logsChan chan LogEvent, termChan chan bool) { + if logsChan == nil { + logsChan = make(chan LogEvent, 10000) + h.closeLogsChan = true + } + + h.logs = logsChan + + // Let librdkafka forward logs to our log queue instead of the main queue + h.logq = C.rd_kafka_queue_new(h.rk) + C.rd_kafka_set_log_queue(h.rk, h.logq) + + // Start a polling goroutine to consume the log queue + h.waitGroup.Add(1) + go func() { + h.pollLogEvents(h.logs, 100, termChan) + h.waitGroup.Done() + }() + +} + +// getRkt0 finds or creates and returns a C topic_t object from the local cache. +func (h *handle) getRkt0(topic string, ctopic *C.char, doLock bool) (crkt *C.rd_kafka_topic_t) { + if doLock { + h.rktCacheLock.Lock() + defer h.rktCacheLock.Unlock() + } + crkt, ok := h.rktCache[topic] + if ok { + return crkt + } + + if ctopic == nil { + ctopic = C.CString(topic) + defer C.free(unsafe.Pointer(ctopic)) + } + + crkt = C.rd_kafka_topic_new(h.rk, ctopic, nil) + if crkt == nil { + panic(fmt.Sprintf("Unable to create new C topic \"%s\": %s", + topic, C.GoString(C.rd_kafka_err2str(C.rd_kafka_last_error())))) + } + + h.rktCache[topic] = crkt + h.rktNameCache[crkt] = topic + + return crkt +} + +// getRkt finds or creates and returns a C topic_t object from the local cache. +func (h *handle) getRkt(topic string) (crkt *C.rd_kafka_topic_t) { + return h.getRkt0(topic, nil, true) +} + +// getTopicNameFromRkt returns the topic name for a C topic_t object, preferably +// using the local cache to avoid a cgo call. +func (h *handle) getTopicNameFromRkt(crkt *C.rd_kafka_topic_t) (topic string) { + h.rktCacheLock.Lock() + defer h.rktCacheLock.Unlock() + + topic, ok := h.rktNameCache[crkt] + if ok { + return topic + } + + // we need our own copy/refcount of the crkt + ctopic := C.rd_kafka_topic_name(crkt) + topic = C.GoString(ctopic) + + crkt = h.getRkt0(topic, ctopic, false /* dont lock */) + + return topic +} + +// cgoif is a generic interface for holding Go state passed as opaque +// value to the C code. +// Since pointers to complex Go types cannot be passed to C we instead create +// a cgoif object, generate a unique id that is added to the cgomap, +// and then pass that id to the C code. When the C code callback is called we +// use the id to look up the cgoif object in the cgomap. +type cgoif interface{} + +// delivery report cgoif container +type cgoDr struct { + deliveryChan chan Event + opaque interface{} +} + +// cgoPut adds object cg to the handle's cgo map and returns a +// unique id for the added entry. +// Thread-safe. +// FIXME: the uniquity of the id is questionable over time. +func (h *handle) cgoPut(cg cgoif) (cgoid int) { + h.cgoLock.Lock() + defer h.cgoLock.Unlock() + + h.cgoidNext++ + if h.cgoidNext == 0 { + h.cgoidNext++ + } + cgoid = (int)(h.cgoidNext) + h.cgomap[cgoid] = cg + return cgoid +} + +// cgoGet looks up cgoid in the cgo map, deletes the reference from the map +// and returns the object, if found. Else returns nil, false. +// Thread-safe. +func (h *handle) cgoGet(cgoid int) (cg cgoif, found bool) { + if cgoid == 0 { + return nil, false + } + + h.cgoLock.Lock() + defer h.cgoLock.Unlock() + cg, found = h.cgomap[cgoid] + if found { + delete(h.cgomap, cgoid) + } + + return cg, found +} + +// setOauthBearerToken - see rd_kafka_oauthbearer_set_token() +func (h *handle) setOAuthBearerToken(oauthBearerToken OAuthBearerToken) error { + cTokenValue := C.CString(oauthBearerToken.TokenValue) + defer C.free(unsafe.Pointer(cTokenValue)) + + cPrincipal := C.CString(oauthBearerToken.Principal) + defer C.free(unsafe.Pointer(cPrincipal)) + + cErrstrSize := C.size_t(512) + cErrstr := (*C.char)(C.malloc(cErrstrSize)) + defer C.free(unsafe.Pointer(cErrstr)) + + cExtensions := make([]*C.char, 2*len(oauthBearerToken.Extensions)) + extensionSize := 0 + for key, value := range oauthBearerToken.Extensions { + cExtensions[extensionSize] = C.CString(key) + defer C.free(unsafe.Pointer(cExtensions[extensionSize])) + extensionSize++ + cExtensions[extensionSize] = C.CString(value) + defer C.free(unsafe.Pointer(cExtensions[extensionSize])) + extensionSize++ + } + + var cExtensionsToUse **C.char + if extensionSize > 0 { + cExtensionsToUse = (**C.char)(unsafe.Pointer(&cExtensions[0])) + } + + cErr := C.rd_kafka_oauthbearer_set_token(h.rk, cTokenValue, + C.int64_t(oauthBearerToken.Expiration.UnixNano()/(1000*1000)), cPrincipal, + cExtensionsToUse, C.size_t(extensionSize), cErrstr, cErrstrSize) + if cErr == C.RD_KAFKA_RESP_ERR_NO_ERROR { + return nil + } + return newErrorFromCString(cErr, cErrstr) +} + +// setOauthBearerTokenFailure - see rd_kafka_oauthbearer_set_token_failure() +func (h *handle) setOAuthBearerTokenFailure(errstr string) error { + cerrstr := C.CString(errstr) + defer C.free(unsafe.Pointer(cerrstr)) + cErr := C.rd_kafka_oauthbearer_set_token_failure(h.rk, cerrstr) + if cErr == C.RD_KAFKA_RESP_ERR_NO_ERROR { + return nil + } + return newError(cErr) +} + +// messageFields controls which fields are made available for producer delivery reports & consumed messages. +// true values indicate that the field should be included +type messageFields struct { + Key bool + Value bool + Headers bool +} + +// disableAll disable all fields +func (mf *messageFields) disableAll() { + mf.Key = false + mf.Value = false + mf.Headers = false +} + +// newMessageFields returns a new messageFields with all fields enabled +func newMessageFields() *messageFields { + return &messageFields{ + Key: true, + Value: true, + Headers: true, + } +} + +// newMessageFieldsFrom constructs a new messageFields from the given configuration value +func newMessageFieldsFrom(v ConfigValue) (*messageFields, error) { + msgFields := newMessageFields() + switch v { + case "all": + // nothing to do + case "", "none": + msgFields.disableAll() + default: + msgFields.disableAll() + for _, value := range strings.Split(v.(string), ",") { + switch value { + case "key": + msgFields.Key = true + case "value": + msgFields.Value = true + case "headers": + msgFields.Headers = true + default: + return nil, fmt.Errorf("unknown message field: %s", value) + } + } + } + return msgFields, nil +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/header.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/header.go new file mode 100644 index 0000000..f7a73a4 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/header.go @@ -0,0 +1,67 @@ +package kafka + +/** + * Copyright 2018 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ( + "fmt" + "strconv" +) + +/* +#include +#include "select_rdkafka.h" +#include "glue_rdkafka.h" +*/ +import "C" + +// Header represents a single Kafka message header. +// +// Message headers are made up of a list of Header elements, retaining their original insert +// order and allowing for duplicate Keys. +// +// Key is a human readable string identifying the header. +// Value is the key's binary value, Kafka does not put any restrictions on the format of +// of the Value but it should be made relatively compact. +// The value may be a byte array, empty, or nil. +// +// NOTE: Message headers are not available on producer delivery report messages. +type Header struct { + Key string // Header name (utf-8 string) + Value []byte // Header value (nil, empty, or binary) +} + +// String returns the Header Key and data in a human representable possibly truncated form +// suitable for displaying to the user. +func (h Header) String() string { + if h.Value == nil { + return fmt.Sprintf("%s=nil", h.Key) + } + + valueLen := len(h.Value) + if valueLen == 0 { + return fmt.Sprintf("%s=", h.Key) + } + + truncSize := valueLen + trunc := "" + if valueLen > 50+15 { + truncSize = 50 + trunc = fmt.Sprintf("(%d more bytes)", valueLen-truncSize) + } + + return fmt.Sprintf("%s=%s%s", h.Key, strconv.Quote(string(h.Value[:truncSize])), trunc) +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/kafka.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/kafka.go new file mode 100644 index 0000000..20dc30a --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/kafka.go @@ -0,0 +1,375 @@ +/** + * Copyright 2016 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package kafka provides high-level Apache Kafka producer and consumers +// using bindings on-top of the librdkafka C library. +// +// +// High-level Consumer +// +// * Decide if you want to read messages and events by calling `.Poll()` or +// the deprecated option of using the `.Events()` channel. (If you want to use +// `.Events()` channel then set `"go.events.channel.enable": true`). +// +// * Create a Consumer with `kafka.NewConsumer()` providing at +// least the `bootstrap.servers` and `group.id` configuration properties. +// +// * Call `.Subscribe()` or (`.SubscribeTopics()` to subscribe to multiple topics) +// to join the group with the specified subscription set. +// Subscriptions are atomic, calling `.Subscribe*()` again will leave +// the group and rejoin with the new set of topics. +// +// * Start reading events and messages from either the `.Events` channel +// or by calling `.Poll()`. +// +// * When the group has rebalanced each client member is assigned a +// (sub-)set of topic+partitions. +// By default the consumer will start fetching messages for its assigned +// partitions at this point, but your application may enable rebalance +// events to get an insight into what the assigned partitions where +// as well as set the initial offsets. To do this you need to pass +// `"go.application.rebalance.enable": true` to the `NewConsumer()` call +// mentioned above. You will (eventually) see a `kafka.AssignedPartitions` event +// with the assigned partition set. You can optionally modify the initial +// offsets (they'll default to stored offsets and if there are no previously stored +// offsets it will fall back to `"auto.offset.reset"` +// which defaults to the `latest` message) and then call `.Assign(partitions)` +// to start consuming. If you don't need to modify the initial offsets you will +// not need to call `.Assign()`, the client will do so automatically for you if +// you dont, unless you are using the channel-based consumer in which case +// you MUST call `.Assign()` when receiving the `AssignedPartitions` and +// `RevokedPartitions` events. +// +// * As messages are fetched they will be made available on either the +// `.Events` channel or by calling `.Poll()`, look for event type `*kafka.Message`. +// +// * Handle messages, events and errors to your liking. +// +// * When you are done consuming call `.Close()` to commit final offsets +// and leave the consumer group. +// +// +// +// Producer +// +// * Create a Producer with `kafka.NewProducer()` providing at least +// the `bootstrap.servers` configuration properties. +// +// * Messages may now be produced either by sending a `*kafka.Message` +// on the `.ProduceChannel` or by calling `.Produce()`. +// +// * Producing is an asynchronous operation so the client notifies the application +// of per-message produce success or failure through something called delivery reports. +// Delivery reports are by default emitted on the `.Events()` channel as `*kafka.Message` +// and you should check `msg.TopicPartition.Error` for `nil` to find out if the message +// was succesfully delivered or not. +// It is also possible to direct delivery reports to alternate channels +// by providing a non-nil `chan Event` channel to `.Produce()`. +// If no delivery reports are wanted they can be completely disabled by +// setting configuration property `"go.delivery.reports": false`. +// +// * When you are done producing messages you will need to make sure all messages +// are indeed delivered to the broker (or failed), remember that this is +// an asynchronous client so some of your messages may be lingering in internal +// channels or tranmission queues. +// To do this you can either keep track of the messages you've produced +// and wait for their corresponding delivery reports, or call the convenience +// function `.Flush()` that will block until all message deliveries are done +// or the provided timeout elapses. +// +// * Finally call `.Close()` to decommission the producer. +// +// +// Transactional producer API +// +// The transactional producer operates on top of the idempotent producer, +// and provides full exactly-once semantics (EOS) for Apache Kafka when used +// with the transaction aware consumer (`isolation.level=read_committed`). +// +// A producer instance is configured for transactions by setting the +// `transactional.id` to an identifier unique for the application. This +// id will be used to fence stale transactions from previous instances of +// the application, typically following an outage or crash. +// +// After creating the transactional producer instance using `NewProducer()` +// the transactional state must be initialized by calling +// `InitTransactions()`. This is a blocking call that will +// acquire a runtime producer id from the transaction coordinator broker +// as well as abort any stale transactions and fence any still running producer +// instances with the same `transactional.id`. +// +// Once transactions are initialized the application may begin a new +// transaction by calling `BeginTransaction()`. +// A producer instance may only have one single on-going transaction. +// +// Any messages produced after the transaction has been started will +// belong to the ongoing transaction and will be committed or aborted +// atomically. +// It is not permitted to produce messages outside a transaction +// boundary, e.g., before `BeginTransaction()` or after `CommitTransaction()`, +// `AbortTransaction()` or if the current transaction has failed. +// +// If consumed messages are used as input to the transaction, the consumer +// instance must be configured with `enable.auto.commit` set to `false`. +// To commit the consumed offsets along with the transaction pass the +// list of consumed partitions and the last offset processed + 1 to +// `SendOffsetsToTransaction()` prior to committing the transaction. +// This allows an aborted transaction to be restarted using the previously +// committed offsets. +// +// To commit the produced messages, and any consumed offsets, to the +// current transaction, call `CommitTransaction()`. +// This call will block until the transaction has been fully committed or +// failed (typically due to fencing by a newer producer instance). +// +// Alternatively, if processing fails, or an abortable transaction error is +// raised, the transaction needs to be aborted by calling +// `AbortTransaction()` which marks any produced messages and +// offset commits as aborted. +// +// After the current transaction has been committed or aborted a new +// transaction may be started by calling `BeginTransaction()` again. +// +// Retriable errors: +// Some error cases allow the attempted operation to be retried, this is +// indicated by the error object having the retriable flag set which can +// be detected by calling `err.(kafka.Error).IsRetriable()`. +// When this flag is set the application may retry the operation immediately +// or preferably after a shorter grace period (to avoid busy-looping). +// Retriable errors include timeouts, broker transport failures, etc. +// +// Abortable errors: +// An ongoing transaction may fail permanently due to various errors, +// such as transaction coordinator becoming unavailable, write failures to the +// Apache Kafka log, under-replicated partitions, etc. +// At this point the producer application must abort the current transaction +// using `AbortTransaction()` and optionally start a new transaction +// by calling `BeginTransaction()`. +// Whether an error is abortable or not is detected by calling +// `err.(kafka.Error).TxnRequiresAbort()` on the returned error object. +// +// Fatal errors: +// While the underlying idempotent producer will typically only raise +// fatal errors for unrecoverable cluster errors where the idempotency +// guarantees can't be maintained, most of these are treated as abortable by +// the transactional producer since transactions may be aborted and retried +// in their entirety; +// The transactional producer on the other hand introduces a set of additional +// fatal errors which the application needs to handle by shutting down the +// producer and terminate. There is no way for a producer instance to recover +// from fatal errors. +// Whether an error is fatal or not is detected by calling +// `err.(kafka.Error).IsFatal()` on the returned error object or by checking +// the global `GetFatalError()`. +// +// Handling of other errors: +// For errors that have neither retriable, abortable or the fatal flag set +// it is not always obvious how to handle them. While some of these errors +// may be indicative of bugs in the application code, such as when +// an invalid parameter is passed to a method, other errors might originate +// from the broker and be passed thru as-is to the application. +// The general recommendation is to treat these errors, that have +// neither the retriable or abortable flags set, as fatal. +// +// Error handling example: +// retry: +// +// err := producer.CommitTransaction(...) +// if err == nil { +// return nil +// } else if err.(kafka.Error).TxnRequiresAbort() { +// do_abort_transaction_and_reset_inputs() +// } else if err.(kafka.Error).IsRetriable() { +// goto retry +// } else { // treat all other errors as fatal errors +// panic(err) +// } +// +// +// Events +// +// Apart from emitting messages and delivery reports the client also communicates +// with the application through a number of different event types. +// An application may choose to handle or ignore these events. +// +// Consumer events +// +// * `*kafka.Message` - a fetched message. +// +// * `AssignedPartitions` - The assigned partition set for this client following a rebalance. +// Requires `go.application.rebalance.enable` +// +// * `RevokedPartitions` - The counter part to `AssignedPartitions` following a rebalance. +// `AssignedPartitions` and `RevokedPartitions` are symmetrical. +// Requires `go.application.rebalance.enable` +// +// * `PartitionEOF` - Consumer has reached the end of a partition. +// NOTE: The consumer will keep trying to fetch new messages for the partition. +// +// * `OffsetsCommitted` - Offset commit results (when `enable.auto.commit` is enabled). +// +// +// Producer events +// +// * `*kafka.Message` - delivery report for produced message. +// Check `.TopicPartition.Error` for delivery result. +// +// +// Generic events for both Consumer and Producer +// +// * `KafkaError` - client (error codes are prefixed with _) or broker error. +// These errors are normally just informational since the +// client will try its best to automatically recover (eventually). +// +// * `OAuthBearerTokenRefresh` - retrieval of a new SASL/OAUTHBEARER token is required. +// This event only occurs with sasl.mechanism=OAUTHBEARER. +// Be sure to invoke SetOAuthBearerToken() on the Producer/Consumer/AdminClient +// instance when a successful token retrieval is completed, otherwise be sure to +// invoke SetOAuthBearerTokenFailure() to indicate that retrieval failed (or +// if setting the token failed, which could happen if an extension doesn't meet +// the required regular expression); invoking SetOAuthBearerTokenFailure() will +// schedule a new event for 10 seconds later so another retrieval can be attempted. +// +// +// Hint: If your application registers a signal notification +// (signal.Notify) makes sure the signals channel is buffered to avoid +// possible complications with blocking Poll() calls. +// +// Note: The Confluent Kafka Go client is safe for concurrent use. +package kafka + +import ( + "fmt" + // Make sure librdkafka_vendor/ sub-directory is included in vendor pulls. + _ "github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor" + "unsafe" +) + +/* +#include +#include +#include "select_rdkafka.h" + +static rd_kafka_topic_partition_t *_c_rdkafka_topic_partition_list_entry(rd_kafka_topic_partition_list_t *rktparlist, int idx) { + return idx < rktparlist->cnt ? &rktparlist->elems[idx] : NULL; +} +*/ +import "C" + +// PartitionAny represents any partition (for partitioning), +// or unspecified value (for all other cases) +const PartitionAny = int32(C.RD_KAFKA_PARTITION_UA) + +// TopicPartition is a generic placeholder for a Topic+Partition and optionally Offset. +type TopicPartition struct { + Topic *string + Partition int32 + Offset Offset + Metadata *string + Error error +} + +func (p TopicPartition) String() string { + topic := "" + if p.Topic != nil { + topic = *p.Topic + } + if p.Error != nil { + return fmt.Sprintf("%s[%d]@%s(%s)", + topic, p.Partition, p.Offset, p.Error) + } + return fmt.Sprintf("%s[%d]@%s", + topic, p.Partition, p.Offset) +} + +// TopicPartitions is a slice of TopicPartitions that also implements +// the sort interface +type TopicPartitions []TopicPartition + +func (tps TopicPartitions) Len() int { + return len(tps) +} + +func (tps TopicPartitions) Less(i, j int) bool { + if *tps[i].Topic < *tps[j].Topic { + return true + } else if *tps[i].Topic > *tps[j].Topic { + return false + } + return tps[i].Partition < tps[j].Partition +} + +func (tps TopicPartitions) Swap(i, j int) { + tps[i], tps[j] = tps[j], tps[i] +} + +// new_cparts_from_TopicPartitions creates a new C rd_kafka_topic_partition_list_t +// from a TopicPartition array. +func newCPartsFromTopicPartitions(partitions []TopicPartition) (cparts *C.rd_kafka_topic_partition_list_t) { + cparts = C.rd_kafka_topic_partition_list_new(C.int(len(partitions))) + for _, part := range partitions { + ctopic := C.CString(*part.Topic) + defer C.free(unsafe.Pointer(ctopic)) + rktpar := C.rd_kafka_topic_partition_list_add(cparts, ctopic, C.int32_t(part.Partition)) + rktpar.offset = C.int64_t(part.Offset) + + if part.Metadata != nil { + cmetadata := C.CString(*part.Metadata) + rktpar.metadata = unsafe.Pointer(cmetadata) + rktpar.metadata_size = C.size_t(len(*part.Metadata)) + } + } + + return cparts +} + +func setupTopicPartitionFromCrktpar(partition *TopicPartition, crktpar *C.rd_kafka_topic_partition_t) { + + topic := C.GoString(crktpar.topic) + partition.Topic = &topic + partition.Partition = int32(crktpar.partition) + partition.Offset = Offset(crktpar.offset) + if crktpar.metadata_size > 0 { + size := C.int(crktpar.metadata_size) + cstr := (*C.char)(unsafe.Pointer(crktpar.metadata)) + metadata := C.GoStringN(cstr, size) + partition.Metadata = &metadata + } + if crktpar.err != C.RD_KAFKA_RESP_ERR_NO_ERROR { + partition.Error = newError(crktpar.err) + } +} + +func newTopicPartitionsFromCparts(cparts *C.rd_kafka_topic_partition_list_t) (partitions []TopicPartition) { + + partcnt := int(cparts.cnt) + + partitions = make([]TopicPartition, partcnt) + for i := 0; i < partcnt; i++ { + crktpar := C._c_rdkafka_topic_partition_list_entry(cparts, C.int(i)) + setupTopicPartitionFromCrktpar(&partitions[i], crktpar) + } + + return partitions +} + +// LibraryVersion returns the underlying librdkafka library version as a +// (version_int, version_str) tuple. +func LibraryVersion() (int, string) { + ver := (int)(C.rd_kafka_version()) + verstr := C.GoString(C.rd_kafka_version_str()) + return ver, verstr +} diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/.gitignore b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/.gitignore new file mode 100644 index 0000000..a2f65a7 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/.gitignore @@ -0,0 +1,3 @@ +*.tar.gz +*.tgz +tmp* diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/LICENSES.txt b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/LICENSES.txt new file mode 100644 index 0000000..f2aa57d --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/LICENSES.txt @@ -0,0 +1,366 @@ +LICENSE +-------------------------------------------------------------- +librdkafka - Apache Kafka C driver library + +Copyright (c) 2012-2020, Magnus Edenhill +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +LICENSE.crc32c +-------------------------------------------------------------- +# For src/crc32c.c copied (with modifications) from +# http://stackoverflow.com/a/17646775/1821055 + +/* crc32c.c -- compute CRC-32C using the Intel crc32 instruction + * Copyright (C) 2013 Mark Adler + * Version 1.1 1 Aug 2013 Mark Adler + */ + +/* + This software is provided 'as-is', without any express or implied + warranty. In no event will the author be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Mark Adler + madler@alumni.caltech.edu + */ + + +LICENSE.fnv1a +-------------------------------------------------------------- +parts of src/rdfnv1a.c: http://www.isthe.com/chongo/src/fnv/hash_32a.c + + +Please do not copyright this code. This code is in the public domain. + +LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +By: + chongo /\oo/\ + http://www.isthe.com/chongo/ + +Share and Enjoy! :-) + + +LICENSE.hdrhistogram +-------------------------------------------------------------- +This license covers src/rdhdrhistogram.c which is a C port of +Coda Hale's Golang HdrHistogram https://github.com/codahale/hdrhistogram +at revision 3a0bb77429bd3a61596f5e8a3172445844342120 + +----------------------------------------------------------------------------- + +The MIT License (MIT) + +Copyright (c) 2014 Coda Hale + +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 + + +LICENSE.lz4 +-------------------------------------------------------------- +src/rdxxhash.[ch] src/lz4*.[ch]: git@github.com:lz4/lz4.git e2827775ee80d2ef985858727575df31fc60f1f3 + +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +LICENSE.murmur2 +-------------------------------------------------------------- +parts of src/rdmurmur2.c: git@github.com:abrandoned/murmur2.git + + +MurMurHash2 Library +//----------------------------------------------------------------------------- +// MurmurHash2 was written by Austin Appleby, and is placed in the public +// domain. The author hereby disclaims copyright to this source code. + +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. + + +LICENSE.pycrc +-------------------------------------------------------------- +The following license applies to the files rdcrc32.c and rdcrc32.h which +have been generated by the pycrc tool. +============================================================================ + +Copyright (c) 2006-2012, Thomas Pircher + +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. + + +LICENSE.queue +-------------------------------------------------------------- +For sys/queue.h: + + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + * $FreeBSD$ + +LICENSE.regexp +-------------------------------------------------------------- +regexp.c and regexp.h from https://github.com/ccxvii/minilibs sha 875c33568b5a4aa4fb3dd0c52ea98f7f0e5ca684 + +" +These libraries are in the public domain (or the equivalent where that is not possible). You can do anything you want with them. You have no legal obligation to do anything else, although I appreciate attribution. +" + + +LICENSE.snappy +-------------------------------------------------------------- +###################################################################### +# LICENSE.snappy covers files: snappy.c, snappy.h, snappy_compat.h # +# originally retrieved from http://github.com/andikleen/snappy-c # +# git revision 8015f2d28739b9a6076ebaa6c53fe27bc238d219 # +###################################################################### + +The snappy-c code is under the same license as the original snappy source + +Copyright 2011 Intel Corporation All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Intel Corporation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +LICENSE.tinycthread +-------------------------------------------------------------- +From https://github.com/tinycthread/tinycthread/README.txt c57166cd510ffb5022dd5f127489b131b61441b9 + +License +------- + +Copyright (c) 2012 Marcus Geelnard + 2013-2014 Evan Nemerson + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + + +LICENSE.wingetopt +-------------------------------------------------------------- +For the files wingetopt.c wingetopt.h downloaded from https://github.com/alex85k/wingetopt + +/* + * Copyright (c) 2002 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Sponsored in part by the Defense Advanced Research Projects + * Agency (DARPA) and Air Force Research Laboratory, Air Force + * Materiel Command, USAF, under agreement number F39502-99-1-0512. + */ +/*- + * Copyright (c) 2000 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Dieter Baron and Thomas Klausner. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + + diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/README.md b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/README.md new file mode 100644 index 0000000..b13dfd2 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/README.md @@ -0,0 +1,24 @@ +# Bundling prebuilt librdkafka + +confluent-kafka-go bundles prebuilt statically linked +versions of librdkafka for the following platforms: + + * MacOSX x64 (aka Darwin) + * Linux glibc x64 (Ubuntu, CentOS, etc) + * Linux musl x64 (Alpine) + +## Import static librdkafka bundle + +First create the static librdkafka bundle following the instructions in +librdkafka's packaging/nuget/README.md. + +Then import the new version by using the import.sh script here, this script +will create a branch, import the bundle, create a commit and push the +branch to Github for PR review. This PR must be manually opened, reviewed +and then finally merged (make sure to merge it, DO NOT squash or rebase). + + $ ./import.sh ~/path/to/librdkafka-static-bundle-v1.4.0.tgz + +This will copy the static library and the rdkafka.h header file +to this directory, as well as generate a new ../build_..go file +for this platform + variant. diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/bundle-import.sh b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/bundle-import.sh new file mode 100644 index 0000000..2f7aeda --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/bundle-import.sh @@ -0,0 +1,113 @@ +#!/bin/bash +# +# Updates the bundled prebuilt librdkafka libraries to specified version. +# + +set -e + + +usage() { + echo "Usage: $0 librdkafka-static-bundle-.tgz" + echo "" + echo "This tool must be run from the TOPDIR/kafka/librdkafka_vendor directory" + exit 1 +} + + +parse_dynlibs() { + # Parse dynamic libraries from pkg-config file, + # both the ones specified with Libs: but also through Requires: + local pc=$1 + local libs= + local req= + local n= + for req in $(grep ^Requires: $pc | sed -e 's/^Requires://'); do + n=$(pkg-config --libs $req) + if [[ $n == -l* ]]; then + libs="${libs} $n" + fi + done + for n in $(grep ^Libs: $pc); do + if [[ $n == -l* ]]; then + libs="${libs} $n" + fi + done + + echo "$libs" +} + +setup_build() { + # Copies static library from the temp directory into final location, + # extracts dynamic lib list from the pkg-config file, + # and generates the build_..go file + local btype=$1 + local apath=$2 + local pc=$3 + local srcinfo=$4 + local build_tag= + local gpath="../build_${btype}.go" + local dpath="librdkafka_${btype}.a" + + if [[ $btype == glibc_linux ]]; then + build_tag="// +build !musl" + elif [[ $btype == musl_linux ]]; then + build_tag="// +build musl" + fi + + local dynlibs=$(parse_dynlibs $pc) + + echo "Copying $apath to $dpath" + cp "$apath" "$dpath" + + echo "Generating $gpath (extra build tag: $build_tag)" + + cat >$gpath <.tgz" + echo "" + echo "This tool must be run from the TOPDIR/kafka/librdkafka directory" + echo "" + echo "Options:" + echo " --devel - Development use: No branch checks and does not push to github" + exit 1 +} + +error_cleanup() { + echo "Error occurred, cleaning up" + git checkout $currbranch + git branch -D $import_branch + exit 1 +} + +devel=0 +if [[ $1 == --devel ]]; then + devel=1 + shift +fi + +bundle="$1" +[[ -f $bundle ]] || usage + +# Parse the librdkafka version from the bundle +bundlename=$(basename $bundle) +version=${bundlename#librdkafka-static-bundle-} +version=${version%.tgz} + +if [[ -z $version ]]; then + echo "Error: Could not parse version from bundle $bundle" + exit 1 +fi + +# Verify branch state +curr_branch=$(git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3-) +uncommitted=$(git status --untracked-files=no --porcelain) + +if [[ $devel != 1 ]] && ( [[ $curr_branch != master ]] || [[ ! -z $uncommitted ]] ); then + echo "Error: This script must be run on an up-to-date, clean, master branch" + if [[ ! -z $uncommitted ]]; then + echo "Uncommitted files:" + echo "$uncommitted" + fi + exit 1 +fi + + +# Create import branch, import bundle, commit. +import_branch="import_$version" + +exists=$(git branch -rlq | grep "/$import_branch\$" || true) +if [[ ! -z $exists ]]; then + echo "Error: This version branch already seems to exist: $exists: already imorted?" + [[ $devel != 1 ]] && exit 1 +fi + +echo "Checking for existing commits that match this version (should be none)" +git log --oneline | grep "^librdkafka static bundle $version\$" && exit 1 + + +echo "Creating import branch $import_branch" +git checkout -b $import_branch + +echo "Importing bundle $bundle" +./bundle-import.sh "$bundle" || error_cleanup + +echo "Committing $version" +git commit -a -m "librdkafka static bundle $version" || error_cleanup + +echo "Updating error codes and docs" +pushd ../../ +make -f mk/Makefile docs || error_cleanup +git commit -a -m "Documentation and error code update for librdkafka $version" \ + || error_cleanup +popd + +if [[ $devel != 1 ]]; then + echo "Pushing branch" + git push origin $import_branch || error_cleanup +fi + +git checkout $curr_branch + +if [[ $devel != 1 ]]; then + git branch -D $import_branch +fi + +echo "" +echo "############## IMPORT OF $version COMPLETE ##############" +if [[ $devel != 1 ]]; then + echo "Branch $import_branch has been pushed." + echo "Create a PR, have it reviewed and then merge it (do NOT squash or rebase)." +fi + diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka.go b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka.go new file mode 100644 index 0000000..52e1ad7 --- /dev/null +++ b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka.go @@ -0,0 +1,21 @@ +/** + * Copyright 2020 Confluent Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package librdkafka + +// LibrdkafkaGoSubdir is a dummy variable needed to export something so the +// file is not empty. +var LibrdkafkaGoSubdir = true diff --git a/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_darwin.a b/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_darwin.a new file mode 100644 index 0000000000000000000000000000000000000000..6294180fee4e8b306a19d1f5d059572462c130b9 GIT binary patch literal 9358312 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 z I4Jgd(KPV2a>=L3t0Pw*Vz3O>Q_m{8a}AJ~P1iktiXXqroGWbX3{meTth{ch?pxdReT=bAz@Rh@$^cP1er~ z3}yXJ;yJ=PEW~y=kNRuSR@Zw%Hdon2d>V6Ux>GJ!eU-#KPq;_=XM9e2)+uIwCGb1x zc9l)NGW1)Ad>5>!^R%8Pcn(qZc|xxG=6S*so+rpo^E@F7zGXj!TM&;tPJ~eW}Nhsx2nSstvjy#7vOiq`yhj^Xrm{(vR~@M?KEl zj~*|Tmzm#Ca%G~coMJUWBiCV2TXrktJJ}WQ}ZW6KHy-duAHVOt-pw zw6NF^AZ)=V5CQ~39!r2g9vFgSo(Y7ogni9|Lm)r`gb>z8*h~WNKj-{ab*k>YBR_rm z=I=V^)LwO}>eOJ)hV567kHR*t=K%@IB}&e4qFSz{LZD)@ZBkw_i(qKJlf**Ad@NJpRLG zhq%}Ov3>XNvz}hadiew5>xlRJIp&f0PV5^nzuo@i#n#^dZ+PuuYwVYd;*Z%}~ z%dj=O9pQcX8LdOa7a@J}{luqH?&_an9LDzsKYtDMF80B{%yrT=T<^RLc;9b!T5lx2 zm-u<&H;8|X`IUSx@m=4>{Cww1Yv1kdJ-S8W?-Ku%c#mVu4skZ|YT~nquO+^Z_^-rc z?`Zzs&2T+SWsbf10<`pxPyTF=~u_Vw;(v@R!oC+Lg!d`4?X`~%`^DL16t9}?e3{3gSD zFXg^W{5tFH{}Q)jJ$A;`zt?&^aX@@F@s-3Ih#w~2Li{fAcJHxp?n6A2I7NIsaYTFp z@ifk-|L~sZ_xMiTpW&U5Z++nW){VsTpg*7Y?dP^GBX)`JM1R_Tm*=$(!hOTfp4)mJ z@w@D2w|}MeyL%HahkbF~Umb4U^bm|6FFV}&DDex#KKMWT$l=!e8SkfvUnKqq@mAuo zu+K?4PavL3Jd^n6XJB57?~c5W_%-4@?VJBi_tWV<@!=-Fk$4I5<>bGKcr)=+#IF#q z{|%Ji%a634M1OCgdqDTIi60~V<#hiU@jb-9BmNuZzDIWpZpqIH#C61ri9Z2K{Kr1R z@M_YRh)*Sc9Q-%`%aPXR&A5l~k0-T$AGqf~PilQ+7tTrkDi2p(S3Gptwjep;H z*ezdwYU>Q**~BSghj@_qd&E}~-$cBT_;KPli9aXaZNcLCo5$LI_1^*a{K-kJe<8je z>-%><<`JzMh<`=gw9U?4osN8+`|*=nR{$lS_n5%Wz3%kZ4Dbg#Pj4*~pGEv5;tj;V zC4P-~EAjYM^ZyI%=MU%Z+qx6t6MQ}5k#hXIhu~b>5AWXkFCvyutur3*fYvXGCqK^I z=M!g%&nCWu_$A^UuQd7lKGec}0NtDDJ_F^k{mPSC7ZbOV-y=Sc_*UX4iT_SK<|+&S z!NkW9=ZMcHzLoe%;*W?p+NSwCmv{wnOnf=HY-q2gDo5zw;9;oHK~Kh)*W|KJo2DJe{QZ|1R+} z4Ck098vWtK?~*=6_uU_6_4%8`ZNvrQ?+{-{d@u2zh(9JCf4YUU!f>x6zKi%-;;)GJ zYg@X`C+;NjFPlUE_`)fz!R6?0x7@Gw0^*+$KSaEh z^4A@U{{5(9TQ{D7{`$G&TAv{vIUnKlPHeq^`09Wc;9k^IPi);t{4DXi#Jm5N@!vuD zGw9w;d@}KOiLWL8HSk+EpV<0G;`fNBU1;=O#2)c?h_51E)j|Ki>XgvP2a zBA#?7%kP=Q9mFRR4-#KO{Bz_+sK4h&K^G zK^#3C_m-Z2uhuJx?HmksV@|YmJdk(+aX0ZG z@fF0sB>p||R^kcwv2fNAuOv>0*Ad@LyoLDR#QU6N{?`*PBc9E2TcP_8h&K>FL;N@5 z{}4~QFT*2VLYyZ)lX&@EtzV$oTKy9D5{JYW5^?Q84gxpPYt!Ag{f9 z>w31IcM$)Xc)K&LeVtCcl6Wl3S=1|6Q&8o0d>E{?^vJ zw_q+%`L7eNqJF@#TU6A9!f%JH*?e;KhA1aRYHTu}eHmdBMhs!#$hp@7wydiwrjsuOz;J_%`C-5r0ZNWxM&ifcSXgnD~6+ zn~5JL{uA-1#1nT|I2(u;5uZq$5dVPqe~9;EdG;P_^Vg>lPy0<9$JUYmSmG0iFQXjH zWLh6ElPSUsulRMg!`nT^+T#O=f7wPlx1G}ZJn_fGdq2tO>xq{V`^0AxSI)3;r@6mv||0p7;#nD~N9=evJ5(4)pZ$ zDXo_g-$DF5@q5I(&YIk#h%>}R;xmY^BEFA!3-NozPjDXfE#ezFe%y4K>G7`|H;-LA5FZ9c!>B1 z#69qL&!<1MH6;EX@lT2GC4PnYOX3+A7sTIoVxRaT;tj-iF`iq9w-Qg@&-4+mB#wzM zCf-Q=GVz!t^Y>ulg~TTjuOYsU_)+4Ii6<|c{|ksc;vnwKPGO6o;W2JKm`tLs0$D>LA{F!*K z;J;63eT#VeN1FRo;%^bJA|59G0rBm`PZ7UCywe3}pRgx<yk&b_AtIS@c{8f z#N(mgMNdD3cmZ)Y@qbb72IAA0k2{=d^T`v5>xq{Tf15ZVKA-q1;!VU)65sz2tA{Vs z{axZ69%S*{hjhkD>dIS$=;6`BP87PwNB3Q+DHg@Ez{g zI)}KIxJ-O5@qb}n{M9c$wDmW{eE1@Xn)pWM=hs;dze)US(mybV_6NJzcGBmFH?h2)O81M2Zy|n!_+`Yu z{pSyB{gim(*xZjI?jX(+pG$lj@#DmA6F<##eVe#-731WqPj5Y*I3hlW_&VY@q&^>Y zpVo1YHGDklZ$SJ8)7yf*OV&##5+8*k+_Mh$2;w~Psl-HmZY5qxTqZu7_)hkV&l3NOc*3J>96N`274aFwHxvJs_@BhPtTTU) zBwj{5LVPXp zGx3YWTZtz>+WbG7I76HeUr2lt@pHuQ6Yq4s`F}9+JmS^FKYM`LlRilN3bFM-qn}DV zk9Y-fh4@_J8;Ktzew%m)*rUZ>^$_B35pP^IefxLB9}!PHX!H%lZ*knXQ`g3i2NBOB zUQK)s@y*1)C4Q0k2-zVOFtHt-0MfBH$4{E)i_-W!7iT_Ug3GrC0 zPeuNC;;$3e5vPc|iEZME+c3^z|M@tS^DEwaQtMZjV1Mr|C%66@xbAf)w?0k$D)IZo z(-sil>rZWMAWjkY5}!T=7)(eSmA-P zuXPUb5@MJ5bmAWp-v|8Y!}hg4OZ*q&kBG-T(fFql&mz7Be2M4UX?u_0dg7~zZzcW} z@e{m0yE_kBZ{<0w>&^xL7f)+F4fu*@KCSg5ao_Uv z)>nXUzWnK}dp#QX{A*gL5r5}A+@siZP3z@9#XJt3_SK;O;O*D6-VS{Cd#-7{?PYdf z=V9j~9Nc5Q4tVM**S5~5`weuzgSegaYk}`R=GxZfbibecj}yNl^oy=-{g~Lgz}$Bs zo=kl0N%sBL4-x;J_&*=U`uR&2w0`opShwK&kEg&roV}p+LExSbUeNky;(F5W4mpv3 z1kbw-a&j4=?93{5Pt=H-o6W3Cx6IrALZwXA7cKmp?f3cKFjoMr~667S5odOrt8qR zu|C-H*w&j#e--2X-^4}AT}QbaKLLGuw+maZq5Bhbe}nid;)$O$xd#*9#QNPp_r=6n z;!}ywC%%q&6Y-P8exaoq{KhgbD;{8uF|7Q{R5l6)56E9|dN5of? z{ujhQy9e%njkmR4hode}6MyZOMt=nHQeuzzbmFUs z?<0PV_;cdPzp`-7BmOq=TH+gspCCSf_5LX0Y0THT#9hQG^8beU_zKJ8TMXxai1%*c z{vPu8DB`8W4sn%uJ@IYC4-mgeyp?$0+gW%UiF=3x;`4}aB;HK?C*rNdpEJGx#dRp4)qV>nFrx-)rs%5;qdJ5+6?-5r2pHO5)pye?>g~m3Cj?fzvkb zJe+to@j~L@uQAWxcU|kL#GhV{c_sGerXPcP!THT&ehu>soG1O@nYQ0>>ix_PydLXF zIS)SUBi&eM&)w7ZcTVKG`Nxk%{&Bwij}~p+`Uu!#SBzQMi& zu@nB~ovyq8nZ48XgFEBC>cdxC|3kd<+i|b@PhZeF76)JC-q*+8g7p{P>$(Z|O14j3 z)w(zN&*Z(s7eP+mvHCpa{*CzKw;>+9hjtp}pTTs$^#+9d$rrRf&2`{)q`!jU-0e6^ z&nd)55-%iPN_;=UdGQZl(7K-YBJT)%#{FK{`Z4f~vtHQxCF6ep*O&Lb$?g|U1Lb@6 z!~5ZW5DpzZi}(`aYl-hB-u_AOxAR%8r`&M6R_l1YH$Z$H@h^xUB7TwhpTyh0!~C5< zdsHfV#4iuU5Owa}ZiyS>@f zh4$QFWzsu5@hKK20)W7HuB0F8pxG^VM*G`?`T21#_qQ~dMcnnl@3(ExqAmIe#!TnWJ09*+7eJ`qA29~lFj;Bs%dEvd1#clt}KBcB)+dwYH` zYESyhJzo%mVF#Ve2f8{r&|b>o8FnU%(jL2g-#&`YATb_V*C^UF5ygD2XM)^QRsm|P_f3SznF+_D0#ZfEL&FUtIWW|_>QlEYFc$fFUT=BX& z5!-cH>8u=SuZ}yjOTJv`XLfbI-CH@Zz8VEN?NM*IbmTxif7F|dY7&Azw_*dEZytVKYNB2pc56K~^zdaVOGZnc8~r^a>BVKOl8EcD1|XPqVRs#CDUnRMnB+lv^((9Uau#WXD+4}wqBP>s0M z+x%#-+#c;;u3J$fwMU(m?jS3#LUw-T;QG!QVJZLU!7Q(i@PES^0a4=ULDeRC zJn7HvKaz?fk4P7v^(AerVhw>(HM-2O5b9{qU7hp#EDA_tnD3*ZO4rOIJEB!cAuCN)qV*{n%@NP3rhlMYmEQLBg^ zS|{sS5)_nRfBr~&FhVc&@mI@)l*&q^&dESZ!_t+vAU=-&}~YyfyE^qYGnYE z2DGm4hvdpUs4^UbC(8|+O|ba#D20vLTW>+UON-X}Q5p0Gv&p6S?N=oUm{(wmF<;Z} zBL|A8-JSJ{OMJMrgaCRgvgUq@FUi0v>{Uk2HC&`&gw9MIWcXGdNa#pQm}!@3Q8QRg zLh?z01|lKCMRAlt9;_r>y z`+Ec<1m?~NeAr>(`}%&aaTi0Z1W!M_<%8bUvM8A(zx z`>YS#rlk$c-pWFM1r`T%D#>fR7^Ou^wpb60S#*0nz zYF$JF5u0|COlj_l>3}l9g1NTpMm^XlJ1cW2gIfNYwK^WdEQVGUM&X7apk&4k!NW!~ zm`r3nSBd>lXXIxll9_`TM!Wse)DSq*pK>#&=L|E`vFGHo_`s1VS3_{hst-?EVqsyb zHeXDzyhg!b8Pr!{VMc@N@yBXHigiTiai?*36|)}t^gUuA|O&R3XN8Wl{AfOQ;I3a zYTm6xqqr1P#c(xQWvFGwk<9>KSh0<0^R@P5xlqmILfvJf4#_B$8Vf(F1LSfu#d{G6 z-%OuvA#ZeD!R19etmTL>KFgK+j$BV0z?%|jnemj^HP*;l4m-YeGPz7bs zoC>vsESDmnTJxlx98k^V$R0&BCMz z^^YZsFK9U(fdRKMo64__YdVz3&Ml^Te!*gNna-v4MiF$rlBIHW@7y z#!PbNdpN>V&#FnCpC06CEDuW{_!|Gv%eglYe2uHG0~>OgxZIJ+n`1${X+b*D=5BYl z9Vyv2*mrnkuMGpaz@E5=-y|a@iYZKf`wQcm5aJ$ml{W>`@}!p{Xp-2cR?RARE38A4 z-bHfQr6y+M?(NONZrjLi4thK{>d*EX^R*QRbwr>k_UV;wZHaD!-DGNjBw-5|Q^0Db zwqrgs!J(B&m9+!Q#XV++AMNN?`4(9&ANgW0Yr8#}>c6RCQIaG`I~rkrw@F8Q82VsWiyGgLW+HQF)K>#$qmU>>i^BCh&fwA!jw&y24pn}t z^BP{N*DBN3UK3aAr^+m=!AU^-FjKCE-THY{(LQqvqak*T$NhyBEH?(Gsc4^a0Xwl} zu^$$vGD z-ZGBr<@@30wK-d|eip6h2QBpz8Gh`G6O#o!>=??#Cx$b(b}msf!)OSru%R_c6(!ve zE2P?o`Zx%P^9I>5fu>+Zx7>!@sCsd7sY=n|`YUsowIvf38io_axkMCgd7LIts}r%n z(IcT)3FRj$GVWZlEYF#Ppkhe}(#1i8yIY}cmU~3D##-&jSOY&cnfGz%>RaZeKJ;Q>sYS#q2tJLXjzVA*5qg=#kAQ(0<+w4uuqqsE=>tkxC|taL{UrEZw-*l<1hV*dd)fW+#BTAkN~+?U~9vj3GgR z_D5Lb<;TXW%wqVIID*%T-uKMP9KbWNvF2~C6tS+ZH1cIHykgs@ciBx)t7WxRgoT+} zm0|P8Zf_2oyiMF<1Cp_YnJ4NcJHkUYvR_kjpnB6`lC@)H)fCjvVd)Q*jN_45Yc!lm zlM+W`u1SY%c2lX*LQsv`^bXhlXhy~E0MkGzEse%7s&gDoysKO3HU1MnTS+JH z!_Mlsr>V;Gbym^8|7+FOPJY5(ndw8F2JkF>a&vM#V|K=%?BcDmJ<#n;n&jWb_F+teLI10&`p* zQArFjmAR6P7K_jzkrg$}#T@0ck6JdOSnL%C9f2_^JG8U3;rf~ ztS>B&ooKwl68Vt=L0*%IymV~_(>h!Z$6@{FS2(= zqs|eWFE?)sHq@EgwK>_6gQFczT}DDUylI3`VbLYI(yQuN z+M2~Su_pF*fD*ix^@L(J_oN-Db2sygLYFXK2T&YOqsr2eGQ;1KIs zHv2Quh=+XC1@lACY$J41!ADnWwuw}PC@%`6G{hSSDj$@NI>NydbFe7el5ZPtlomr{yJP9^1<}P14WBF&|0klgUX~fNNkvC~_nV)>gYc;hk^UULOy8b1>+GJSUfI z!~IHg#`+eXDGB){+gWlST7F9yT{-Y#PW!byIUMZ3t+qJKul&L-A1qbmm-=+h(UIi9 zl11f^Q0cz1$=;Ha9dO{xpiYw1)kP1K2T9a{-8V^<{XQ%y(x0-;!=K}&UT?_XJUucQ zLxY6~@LQIG8X10Tv50^cbe3DO=M@Ej6;YLf*hYsWFR47}rp`6ysB8HpZ`2J1K*FI> z#y^D9sjh&ar1N4ydgHa7#opm~Q>{NZh^`(^e`5u=h-3dG$if_I0+(y$$d|UO{N)8< zQqkaNe`Ntn9X=02H!21TDD?^oP9(ZaYv4-aK}AZ$t0Z)5(~Uz4iJ`Y8C#KF(OM{Bk zXtZ{x#!e?~cBeY3>n)Qh&u^?Pw@*)TG|6n$mNUi8vx{U;Z#Or5We%8~1+&=Ahf2yF zr!{1F24roaqa`mp57HDA=36)hBQ2q>OdDT+u?$6hfwttUqBJ9zv{Ge;p>Jta>d)8> z3CV4z79P*ywRLQ*1Q)n-VvcX*7RS~t;MkXZo+`$Fla;+Q)B0Z6=E89?QHj3bmvQ7A9=NJjrOBPcFmW&8LI68;ux6bV;* z@|$}VHgE6OfLf|eGZ!sl4&!Gp)6?|=VM|kmC#@H*-nTB~juxq&d9Il9ia=CI zPZ!YYhed9Fxg>f>B_bw5HvG;(+-$QG>DmIst!s68$0Sl>6A(5nzL@}L)V-x;Z-E=* z{9Rk#+bWM=DT4EjqnX8OdExnAL7hT3OdrnkWOqWg|-TK&jagEMi zKPq-xNDPJ~>*XZo^O!^|-r8`CXhF-uah5PouUL{Tpt_zIIC;@*?&9$6ZryIG^OUjI z@F`VmqrEGv%(F3AHJED8cMqR10@63q>a+b6Oge;G>N3s}V#2GdJq2rteKy zMO;-CQ7=%jeH3D)A*PO9wfz)QwZ$ECl=rN{tE$bTlv!csun=anA?levU)pN8-BY)d z-C)_PF7-`tpPKe6K^vL2vZ~)^lb;KzStwh}m?}KFaHWdZ@RHZX8iFG=KH4<{-&)O! zS|}S6n{gXbXEJrkG3#fgxQr|XZzDdQl*kSMyMzVPX;bQHJFP?!Y^v41Wq}v`hMWbd zy1WG*OSgLR&?3@C)>yn5w;>TGQl#-%f0jBG!4YF!gSdxS#`;%E9B^}Rh%3viX=md5Lj#D>xv z4sdU~I9=xjP-59bF`kFCqpV$nHzrOrEcF)_!~KzBEl@9mV=*=1b)gaq7xDK#(ti= z%JDJyz?-4v$uTK`ru_{oALGJOh1E<|)nqaU``KZeiJt+CJr zTwWusl4HlI&G%^kY*zbmw|vw+*oj8~85nI5jjDww)Byc%0kz)Qk|1Qkb)v2BS+sh5Q;N<~TXq^Q(NM)X`A9F8&qlW%F2* z$ru5>oA>J~R7`>J6n0olXY3lzFnsdD1jQK+aAs68VH1fJ zV$MU*CODMi8YL=9BUhNFNQG%#2)#5Q>K`ROy!Nz^5;I;!XF;^g~*FeY|GDnsBv@j3*@3jP3 z-RtP*KJXIt6GfC@%*y zrW_K>&+#xg42|}Diwv}7l4wUR_v@vJ=uMZbC6%7zpkJOx*O(JmUUaJ5z%OK^smHsftuqikdiyr89&UF29kZTw6(Cs~K;D zLw9C3Nu0o1yt=xvV0AwnmlF4*6O>sriJ$^q+c$=!x?E9ddXN>i`urOYs(Iw84qLvI z^K$j8?_V@^Iq_SU74=k;PNnk#fJ~e-n{kRRNMsk!k3=-LuyFkqD;Ty498Ah)=iKnlY zfgzWr`f*}sEysKnt7H;0B^YVdlYSb$ss6?YeXV^x8CJSLnW1KhN-70=8lY3arD^VWr!PmRe@se?*wYj zR45nryUwyZ*AXWi%5Vwxk8f*n$hYVGGObo1OlFz{ar>)>!^*NPT71h+Q|H4>IY?=g zGdfPjB^O^w8{$m{EUj^wA-m{RaN@+=S~0m|2*NtUw;*z4mbf;jon3{cwBYiTjCR(%%YWmy*^4;yB?qfq6 zbs-S5=ZZofbB{L~QqL6QkX&lWZ4e?IR~c+?Ah~Z<=A*R87eTmpcO{PEL!|}RMhTbP zoG&W|eLSvF0ww3WK<>RbQ?c}vjdhJh$iA&ydF6Jwr=tLK47Ob5YkJ%8BEWXNKR^c7 za5M6o}k^eDwh~r?VVR|Y~!6P`Oa1sMkveyI`WR2kW(M_ zt}Sv)Fc*L%I?IaeXM0Ih6!-57>Uc7vpXbQPazwoFucyWv!d4z`#Ty#WT2y_hO&!G*uxD3xvMC|U?f-bOJc7C9)q;2JN&O(j&aB?o(O zGQNL!(?+b>LwXqgxHIn(>4?pdiWhkbqo^4duS)2WOYURU#JEP9)o)Fjty`tCPVTL) zq(#@xOp??RJ{OpZMmwBmJA$iZM|G7l#tR@RC=4SOkdJ+gE;E>SAq9dY$dhq0r?+DT z4cD53l~Ee3OE-oky{BM}JvAOKFTI{132D=LDaw8uYSQX;i|j~f*agk1V=Cs(v7;tQ zG`tI21hP$D)32i?MU=d&aC3~8^ZSum%AxXh;tmX6G?vMPu~4RyUY2H~FthM7Wgn@| zJVotj6i`f{#+R4nhw=s}4(-8-tG6U@zLPLZQjU1h+ z$2I^mb-vUqCRg>GFi_V;nRu09Tsvg+qb^gLfi~YcI2dJ3ZU$QroVrL?iGn)ULkP=( zk~Dpw1YIB8PL0=+oNjlbs-}Z{(D~8bn@pvitt!b{_&90)C`*zgIuEqa{^9}ah_0X9 z!yz9{35;=e^l`Yf3Pr9qA^ku_t1aIjon2kvN5{9#Oh>I@Dncl+vx@_X>h7Adn~=G? zJ-ggTw-sVByllU`)I36o!HPqImAt}mnmOBt_K&d@GQD?iOjsD9B%;~X{!(}AJ~J;B z1Z*|Ho?ao!vacjsBto@Gx(_kwa`Ttm)a@>I$4fyLL|06z(&>HA?%g}>6ovi@7F_25 z_n>@842@i=;+sFw3U$t{bZb%MV0(JA*fOu4*|*geQvP?{>Lp2{i^r9fr=qSVVg2Oj zVKL)Kl0?p49JOXy+MUz1*q^3cXVAWBgrX}3V%8N&O#LPdFxKsYiy9_4T>=7$Genn?$Z>&d1Mta} zdiL&>!Dtx=;h%!fAn3Jk$>RW51VGfFcgh=_HAGl#V29CHE`+Nm4uZnmzGG$|TBL@T zes9yoaqgzxOGG@Kfveo1RDJex}kL>NiK7lW(qm8D3U_RgqC!?8Jp%64; zZDa^$pB|6gGmvNceOPLiO@yX0@bvNJV)#e}=K~Zuy&c(|8O>SyNrA(tnX+dS(j6;a z$Y@w?J7TB%Wa#xNYYmJ_JEX4HAY2y2@{ali1{#D3@?!>%1n;(GpmZ%+ja^s;pde zW|W#paOS>b_T(CY3T2_-(;sqOu~&9BQFF;~r4<8GuICa#cWKI^FW4>_;D~F-R((g> zClDMpd*Kf50*2EuMmn|}aI&nyjWo~TW_=jhWOSa&GUq5|)p=H$8frd0Yn+WXo>Nh< z^~|;6)gWB4NC>hn>(4n|;E462MUKPtXm4*Q7RI3PWa==*QH>=E+iTYG^h%aiI<7IP z?M@B{X_4R_ZYGL>-zF8<%h6eN*?e>=lvjq5iYilDoS^o)*5qv0P$RZiE0i4OkMh(4 zc?b3ld>+SYp=rCq3lvv!fs_^7WUx&Pz`Nu)riQH(%AHsNOfL^7M>KxVnc3gR{R^CR zr=?u|gkgFoR$!yfQYgDX-V4P?jt_4ISum4b;4&h&Iv{0kG#HOrhg15!D2*3mBr3YB zf%$O{6Kf}CML8|Pm}bevq!4TvS66X!*(WWeTxmE#x+)pgRZ*7TlCAdSOFQ^jnl~~u z1tyz@u6ppe($ZFqX*+g*xmv7=PIefJ^jkWFaa&TLa@Dxkj&*jj)OpI0I5vifoG8jR zdAB9*Aeu*?mk`unPhNJZ$-A*&BJAq7D|AC_2H)tDhZFz5#M^oneGM;A(nqPtkd{pH zXyG0`-=S3;Eu^LlNHx_KMsxis=QbB=qjY16=_4zs<|G!)=qRDCRiG9xC5{r#TE+SQ zRWxUhjVC+o z5nJtWDC*q&xYS+7WI-0CI?oZiL>NMZH7iOc3>Az)=%O%7r6u&HiJkG#tq<>-#hBqj z!i-Awt((S*@EBv=-p-*ga&I}JU(3-v1a>+0{0|Lo1#wmaM&?1iJh4!as5yUu`c2UfZ znB42HTwg1T>$97+}{i};3+OO6>@zbEMF(R!3AP7_pNs5j2dpM%$Zeb>8Y5| zyW5HG)VS=nDWfv7m?~0UP@PD`q-VjTtxcOFI#$&d6pSJ2)kQ8E%|`%*CTZv5-*eJZ z*HfvjJV}&@D8`tbP$)vL9gEdR&M9=Sb<;wmnoA7`%il_JK+DYML9pI@PHwW2D*?`J zvcDBZ%Rt0n{W#1a28Ud+241BMY|zOJ;9HHB8^E$F7DXxF!+F7Tww$HNAQBh1`kS8c)-OT{`Xf!cx&N{^wjd zEw~*TF`R=nKho_}5vdl)N=NiSeRPF}NcqkgKJnl%f!O9{LZagyikIYQ$u*}g$4Vg{)uw>)=a zvzxiv3Y08)YLMDCGo2Y_boa}4bo!I9N4fAo&HqoED=<%p*vNj+qQ@dPiAWfc4Th56Atk^2VtLRZ-h z$VV1dC%tKT*993fVi#>;MxWk=DVwJ=YdG6<`B1~y5sq{kk5d6{V5G=5Chg~;&S+)# z$_$P|AcZ5`5l5A8-7&S#4oIMq_sPREVyicei**XlmINWJp6Zz0{=wNpC=}p$b>1GR zTsu^;tWB*Iazy}70kc_a+d`ucNeqcY?dhox(T{OoT=RxjAjC}nc*c&cAq+@r1@QEZ z3dI8&mZhQ$g3p4?&l~AElY{Hdt{itOXz`d$h0c>ULg)C&zJ*>U#MCWfT#1xVTPZDr(`cju(_ToP2Md8%ssZPayD=?_P-^wtBDUhx-}Ai2M~ z1w|=Q7vIJ!>*LFdiiwCtMYo@%$GkWqBD{Lb<=eEtSgWS`12I*hn_E*M3TPMT;FRv054^BPi zG&iHGVX$qe(yQ^Cjw0lKUFlXLOk-W{XYHtriy8e8UkvN!VZ=F-j7D;5f2V!}E#=nL z4wF+oEIN9id!)uuXCwW+GAJSp$o zOiD#nZIT6o)6kTQ`KG&~s(eiBke-xORYA>DrM)|s2&$u?9>rf$Ro-8{s>&tm;;UCx zoAgwiorjK^I3p%46f4YY1|PBOC)VLTGt)vPqecsDQVS-#MhGsiSL&Qiu0;nyuV@M_ zB)Ll}s?b8nqnJ3H#wl{GUB)Lr^h;06v`~e?YIj;F6Y*NeGhFFb5|Jl3Y529HGH#s~ zLg9y%TD=y^YKO@wDko8Ew2-ee3LZrZZK`Uab856uMsr%IphqoqPMsDyr>ccKDet$c zP0q2_>L*O+)M=q}Qd_0JiWc%QQ44ue(n19_**p)fD_PY!Q7#b_MnP>3vToXwdv5ld z7oVz2?=`8tg4z^fy++JE*JV&NqIH~_G#o91Fc~-c4c6kC+6(8O!wnS1oOc}(<9J24 zn;M##SL)djQyzsVMAs@Qe%APTum^QR!Qw8OIw4 zCAUS3U?`y03^HgacvEI%=MPgY#C{c$-5<*_EN38-h>kKGos$hmTXyVjXV>MY zJX^W$w;aYi^8n5TWUHqIxdqs>xWZ+FJ z*m|5pI+%W@hndcqcpC)o&1q>w#$<$&vJiN3SCc%D2OEqm?IQe^Ofn&X#1{?=DxRYf z$_U3XZ>vKQ{TDuyi~p>pq4xfHH3ysT*I8w?T?3YObzc-qPYb* zJ^Cjv*;x(E+IfeWnVs#aeOJnxUu_gLOswc*z4mxC!97S}N^VVE<7plt%acqvoPpwq zY)6HT7jkWI+8+3cEqp(1aexw0TISGi&5z_m@G2n9s_-Ku&n|pONwsJ3wl$1^rB~r; z`zwNs^bl?&)C7(I>b)193$GS+#cv=7&%s^mdqWv>$WQKj11ex7+0V&m)%!lHB3A3W z$g{ zsC-s9NeCr8Q{|;5V&v94a;jMZtFIO*?-JiBIN|GC-u=0pfmikBc>Athx_dXqC&Mai`c zmDDW7!W`nfFHUHwPPE^u!-h~_t9Wt+!!Bg#Fd=i;_!oJ4YFIxZM`0g|40ut}p8utk ze#M->#S|12oXo3mKYg}8k!Nnh6vhfro_yN?pR?B;59*%1(^I?mZf)<}d=++C z_;jx-rHo;Dtv86~d8^z?OqT0+=359MF zdZh2UOs9T28~Qo0FpFKn+x{|nwh!VCa1Rl$C`)ZFcW}s3f6dL#=@PLZ@k6mgY&dHB zQCYMFEHsB`*P%>6@sBsD6z1Iw+b3U@rbJeTtPJ&|zcgj?>nxekyF}X41~GRr@s?fe zy2=ZA7{!J|{q`Vz>Vy@kmIukq3ue{}c<#PGT*PcfJ4xW6HDK=0-rqZ7XNXB>$ojzq zrvWuIj7%8+@fSPht^}(D3|b+H_7!LK9*!Qvt9~{D4}{`jR>rH71Pcj@Db<*@HaT&6CL9_QJfE}4MONiEU1mRPO(zaA(}bF zR7%U5aY&nB;p3@hd^R~mo-<@gSOkE92KCkDM}i^~kK@{BO(uF#N9pmk$4qVM(5ifl zO-w{+$TlBPrp&QwQz%`Zslq++-ojwghl;II!fZf8lU|*Yvxp$%Ac3*sQdga-L6imS z>_{JY2EE-~l+T?EQQyYXDePhoZ*0K&i=%E>w~E*rO)2rP8;2K5^+QC3uM~a^NJzOX zuJkW04DfEo;_?RbuU}VZVOhJDuDf0q@OT_mI-R&TIJaiCTu&Mi+9mItL;0w?^7QHV zu=w22*I{dBdS+(F?p>{Re?vDXphM^q6v}J86yDTk)r~gV$=Vc*uyC2$oXBW`>#D-q zFzqwWm4HyYH9n-yxwgrC)TXBBsyPDB4v_YLZK}m*wgUuOZdEB<}F2!9Jm(Y>T8fh(5Iiek7n9K427rynefY-6TKwCc&+_qVlyle0=? ziffIy^?~-(TVZpG(mHz$u5M=qO+f?jg@y=~W4@X3KwOqQLt&ylWx zENF9mHXEkG@%Rvid5l3WT~)Ri|3|hQ_i~&=X?MpHBRNk z%vGuxY|LofJSC(@8AYQ8P0hj;hD$`6 zT2+WeHxQSL|iHuC^ePkp~#axiCXF zwK_VAP)%R-UkpuSR_$ zsc!1K${W{dA>qg-g0;4$rj;Zxt?MGsll~a?o3e&i2J#V}@#?Y+Poal3)O4+Slhjny zn-GV1@Wf48WJaAA=5Q=u&Fjmyb$!bc0hyg2C0QcI{ki6Fbnln@{0&m8BP7|4Z<2{7 z9WA^D9i3;gK`2+`46Rv_i$GLn^~sOyLXn%-aKHgmQrx$a4JhA0L&LSPtI|ef96$qd z3kFrj*jLBY8Fr!i1WoW2r6L~dd3oIIjm3C@B`+qGNm8m$>RG;8Il+PvAHI=!v}A(z z7hOHlei>&Tfrmm^AB>xk*_oTeAZ39-1Fvr{>JvQ@rfw!CyStEdOGu0#*@RsT#AjWNK1nWMjjfReb{co zq;aVsZwzap3qxqhiojNa;|Gi7loYoPo7qW;Ym#$2Q{%YhFa5>sEU zGSP%O+IbQyOkUzFX$@8}fs*6|?{NnuWXnx?WtU3sC`Oii6~j5r9-9dBsfoxqj=d?@ zAYllZhceC95Rwpd3vSMGO&?;bn<$Bg%B)0)*^ER8+9JKVFa#SJl@_6#YPz{8T&XzP z1mf_bvAQ8El}p1wCLZeM8$ut=_VHDbkY?Td?U=FX;_C#p3R zS#G8w{y7IL8@iFRo=;Js6_t!{qsf;EvvE$t&Q{4vDHf+f<6NSeuK^xNbdf z%wjDs#8}_zs4m=vYzl^pd?l1ahZ60aa+xGdRvH)E;w`A?Lc`ax3JotZWw~NZOvMp* zTSIk)8I<^xd9j=P2&qPS3%O25E4{Li73ytSd#YS%Ruf{T;f2t+-c%+OG3T(kb_mQh z)|o-1c8wXB&Ff2*@M}vU)aiMlmzv#ZwVFLu-ci?>45fa3sZ8G%Vo$7=RAf2TFaA@j z$rqT)%T%{g3e_#N+NGp2(lSzUrO>-Mv7 zE(&@>&M-w&t}N%}6nQZ1id#<=ao9B*p;C3#IvyRwN&h*V&k}nn_5(4mh80=`Ouh9n zVlU_0V#CP@i*-lV-yFs-ag8j*H@Q{Na+EfW|pX9QyU1)84Ek&OGS$Q6*tw{2XB+NbMq{cJHt) zCd`}eoTLL)X0?-TSv^Q$$0DUHwCkrw0gZ%Hy>mU8H!uy-ieco~k12x)Xyx`-WX6Pr zG?u711t+H3lG{W-I6xg0O#S?yH3$nPJW#FMM-r>GyOdOEp<+Wt8s_`lpTN3UQ;5mc zYPeDn_!0)HyFEUF(`GmU<-AES(&zTr7Sbhh+9(8{)7zV8cHzOo24-&D6`y-&Ha7*D zv1-E2`PHCfzld}HkPYEv>xvpiO@z*yt$z#4y5z^pRFh;4-x|9wqC}7L#*ie(O5x>Y zZpEF`T=EM>9!ge-DWHs8gq8F1;HqU_6iSN1msDyrg?Oc$OTIs8Xo$COF$@Xk^G`zO+~G0z^!9?mM0m^2}_7;~8Nw z<7stE70-{Sr?Od`m*8&6Qh&ZDmC~>!A*@P9^;)Ce!t_-n=7GABfngwS(d9u!n?Ohx z+T8lJYFYX9m8q<rh(QFl05)++K$i&8yLz48F3>PI-s<;k~VqdJV0%xVz(%~R=P&P zX9KEJl$xit6{U&Pbcr&S*e&!HT1A;zI8mrc=c!ogKS}2mhc01a(#%|{%j9Zu;etYCZd?Ps`)t`N5Gfm z@Jf;R##e}Vk}ac!_i!+s92}C>zUSIC1`AC?F4(fvC`jRPB_9lrGSx;wo;B=RiFw=! z$GImTpcDzpA)4QFE;v0qbK?ETV#?0Q(PYvch<&FNX%1Eb0M|;p^p-WsjET3b+y*k1 z6IK~&qqBSRvR2iHD}3_ul!XB?E-aR@0PQRk>8BKWDt2v@&$m;2f+(bYGeo>rXexMU zFv3*0E|^iTy#~|rwN~)DpMi(CaZbs$Bx)it)2J6ht3C_1Sh-{qO}z28udRdS`hQ{T z(?Qi}qUXW}jO__qF7k2L1rY7?wGvu$jFc;{vOY=+pg+(qS zg3oF(1df<+>&ENA50gc|OX3qvzV+uC1}n#&eBsL@u}K*tlbK zsLYB?krmZ**nY*TdOxgBB6(YZx?kis+wg=lm$7F%M* z(#C?460Mvuq%x=?qT;uM01}ySLpo;d3pPRyr2OTO_F-IZ$C$T)j}D-|@FEGU!E#M5 z4U^$b4>?OPT*S#;larU4))qoK>-&c^j8xI8TaZFr`!e<5SbAI+I#Etzz^<6TlHBSvaL8OCbsU$cu8j>6Md13>#Oe*RSmSdOFi+0cKYhQ9@`%*jx zvH7BDDuR+KYt)jaCj2hmk|-FQL8O9?O-b(FMSG6+;8EvLJ_Cwud6S|Nupfwn3XTdg zYJwW6wdWrU>ge+iFIb&o1a9s8BQn>Re^6%4`3Gfc<{vU}OY5l}EK_Z`(YDefL_ygI z?FQo9>rp~)8aPuR%z#U2nG8y#!L#C-!)M+r>CLNl3t3t_u81Y$b5_w_-I^M(?2dwA%@SH3X!{&!7M+{1}LY!M?w<_#(Jl4r8m{y|S z>26JYXF`JGxon7-1v)NYYY4T094-C!d@im9#piRY59%7lKQU#LWTCq8|vfXM(x|YcM?Wyw$D6N$&^?Z`t^9m)NXpoOEy+ok)aoq zLU~DTZ_vSQ7zW4A3I zo9roHYrD>l0r}AYqaODAZI6=a;D)6<)t~|BfTq7f56d&CladiSI#L5fxDK)1y7 zc9MoCbZ1zR&DucVbTx|U-3?x3^VOhUWVkF6AQfpVoEnC&GYx<;S)_JxL6fK1VEve= zJhXEVYkH(FOg4={l5lP2DvJe?!i(Z!H;(54geFzP?e=+maEo(HlNZa9+abUtu~cKS ztgd-;PKxX-L?azDTHN2o%3Q8cvCW<(wTh6r#ee>?ai{U)xoZ(C_&i| zQ4Y|$R!L1pJdu?qJ01WdbYi7>1h5tfvXtkvE;J%b9Llfg|oH3{>x>o=TR zrBx_}3^juVl7%Qm5cGz2Pl;EEl(Kd##2%Vo=5@B;#>164twM-bE+mLSP4ZV)4vp|a zaf~~;I=%5qzrBnrReddqn2C}RQ)LV(HOxJ9UeLnxR1ykl8_wP&>Gjmo^W5^Ljj=>@ zLIo2A15qA5*kmj5CZn_TA%E4txxXUeSwULJMIr_$>cW$d3aLufSy+|IGxA|vE-%6q zQVjFp5OR5oGg9Y%p zF38gN@z7e8foN)pCOwB$bP<%i$_R~}htD8n(XE%dlr1hfMWhaW20Z6Sk_dIiE9=|B z*F~laL|=c+0`U|*UgaW?3*zd$XnNQ5-pxCATs^&Y-;PVCvETjV298b-8+be&RU2X| zxiT)Px^Tuz^JR)~2@jBW^;{!n&9a|p>4rTaWml{Vd6@~t@nv%=6Pn(2`K8F|zUi$p zn_-|i5&JNcO&hDMlmjO(iEofcvbSKs(PZz~wQu?&dAnI|sbrK?B|#>o%TcmOJbl&2 z9vCU9j#3+hq`x)@rhdyVxhA41PPxWcN)nkd!1Nkge@3yuC2km$g2d%fB=(Ms;yr2H z%d^%(U=oxw6gh3h5%I9vG`?SJW?%}EX0s#pN{X%&I%qMD=<;DwF4=+5-_XguNE6G# z=x>WNKZw%o(gK}j49H~_ia13)z&vscWs7h(KKoZRa(Wr zWfaGO^7xD_kC*62E_@LfEA=5JL^OI>kJ@V4dy-y&w+?s7r+-WO+P*v&S{bte^nhZC!4(az+Ff(3%g3CA5QGqQgv4lX8pphZAg|gp?KJ5=ai$7ar|hy} zPJj)wmARO4k#qT^6L+{Q0&%ad)cL%8-<0M*jf#Qd>on5JY7Gou=z*5f<0!G{wZK*< zxKbw%6<7gDf0FE?sp(H_NrhIYT{`TNXr_W=`ied6J(o;hWmSOww64{z(6D0fcQ6Uf z8Kzuw8kWoGkyV-`yh7JU&~sTNzmforPcVQY6~ypiLbc`1taRE;p)dsf{wpl0L2(s~(imoP0@&p4F-GxjMVlM=NOJGzS`O zj`pr_H2_WV8ik4O)0CRhy~}PH2AWii=?k?&3cu9z2T_c-r99 z`Hp?K9)}pnRcEjjY6u(+_|U1g%#0q#FQ1nFObdNzp9Y^&ua4u#{J6PAf5p zq{B%-F*8$%fG*_25~F#QBG=eR)s7)uObjEk)()epZp>I4sbfn&80h2c49FZj0i;Qg zeevEP=pk_h530hfZreS42}dqE%NO6wn_OD(zuVo_SOt^L!UokRa=Xzs$}qDxkD&L| z0(PmaR^~=a^PCyZC_z_65(BI+O5l@o`rCpsZk)JD$RSWonjArv%gN#Xa3o@5OS0Bh%!gb831o))>>5T@Fv-96$q8=8X-k zYMQffi}V$|JzJ*tY~H*1Qg-#|l=z}UW7u=a)XdrK;jFy;DNOH_+oJf&2AeN~w1`6> z8r+5=F1i^RT^8GxOSWz+#1q9lBzK-b`S71lp}O0$D-jY6qdtYSzipYem_qtvz%dJf zuWd0UErr;#NbuPJHQHK4_;!~OWZuy~h=CGHP8)4o3u1<)p3@|AIVIL`Mz+KiB#HRk zHWr>&v}F#tW7jr(1y!|p9Y@Qt#z!pAbM-4Oa;E}&-4ndi5td#Sntg9YXNUzsr7=Tr zWK;@h*nFCS$Te0?Hn374%h{E>|--~ zF4+-?Dx?DiQt!tNxkVf)G6*J1q>6)&7UO*sPJM8tpuv+HcQqVy>mX#|y3tvw$PG>k z>b9I#wh}R^#hW0QK9s>B2Cd(e2eN_;}BONY>F(;IiB|2)IWQt?UrF%GO^}Zu9d5$FKclYj{)0=mt zw4{lEZ%~dJgLAYL-nK1efTcOwrLknipi4#ypPXubb4D2wmiXEW1oSgHxt>nX?->Ei5NX5Qi^n6rPbm*B7jJRaD&}jeip^%h(li+=AJGYu+v00Jo{6<>xe#MTN9k6m&L&zC1kesaHY~6uR zO5(d*S7m{eR0*M^(fiCEe7$zx^p*SAP`2(!6!Vtc>P03Zh03(qi4lW>bF`$T9I?(`x0;3mI8;G&uY?4^1G?|o_l@@8f(ju`^X(cBVU8K88OSDjFkz$n=oq452va7Tz ztrBxyY0*Qhv`BH4mS|dO(OIdq#0iz=D5=sSv8XhmS1QejuF`ZeiVGT@E*?V)4tW%n zE*SpVX_YBXI}a3{yu{$-@9+Xr6UhyMEjup4rn+Wv%KcUuw^U4SO&ca4IO8Iz#xI57<6%&j9gmbdVt?hkBNY~VX9 z3s!)erx=r87J?`t79uEbIrJf{WQpuhMG0oZ)o5LJ2 zI%7cyFE0pCTtTR7^UPJdkX0NG>I}t>Dji7Q$M55rXJ*b*mT|WV=4rFv8biL)gey~N z^H)L)A2PxjK3TK~i4yI}qL_mNRXaAHxPS5hy2FHpEDxfF&2LR5%;bgdVMornI)AVR z0Q|GVVe0jpRAZv3dXrg$u zq($Dc846zRm4U09eTZYrw)WioEc!c-a497_@CJ!^CQzjP5l6V=X*2xxVc_Us5voM1 z+jwGa-@J7z&RD?41q&5YBq{OK`Ob2G30C!-s1}lpB==TkbJb80O{Z}L^Dsuvt-uap+P%Y3K^3KaSF zhznc}s_MAOC%a-i)k0|p5+3f>Eh`@ki_n!-*!YtWc}GCbt%wslt?0&501~~?Z0AY1 z@(XP#k@Z+gM+qTi2QRqpawmIo$=50D|sRbEb&KYp@@|;< z*ZZ522(gZfBx+^_PnVfP?sbTPI>lta=i}ST!kNcKhLxV(NDh2SP#fP)WkB=z%*GOv z+=ZzBE?L}1)>yP1vCoDR?9l4+@pnz0Tu=#CJtfGs7`=mq$MZ%kRVNRh={p1JK`4jf z*A9e)=^EyL`h8|`%JB%E&QfR84Wf5N$68WUsm3$*BIzl1JikH>H6Wt4#~eh^#Bzd- z9)Yd7lOjlw8wsQ1SYB)ng6VB?QdpS2-OE;ADkFQyo8QS5Pb4G-6;()5iui2GEbb`T z*esq%knP#nW`={IB}|_4P7w}Qh_R1F5+1Rej0Wsek&4h+XOWbu zF_Kb!W~5lLk?P7Kr{$ut3968ke2sQUyfTOCA;jtcZ<1I%%-6JlkY1Kg*M7+bDu`I-e zRopQ&;DG!8rRK}=0W%K3`?#L863E}yu_fz1pu#&)DzWTtlS+9d~k zQ&$L-SicfqHV9#{;m4%z0xnNs3bBG265jvugQs{^wj~Ic93Ua$=AOrA$m_g;&Zj)x z5F%m86jxG>w*~l1sd$ouITjgeIC*~{(8s7tTu#zLfygpWv14=$VZj-G;`o+xr6E$H z@q;qH?Bj-Loio(tL^(xXc5c38dc$mco7^Twymao+2k(OGa(%QvaL2juxb20Mw)T{!rTG$EtA@KT^m5qGs$17S5#w(Q)oYpY%_K`+$ny$~yj z*3CT~T>;BN9uM?B*w~${DCjWqIC8%xI-^x$lO;Hp!C`^yqcmOODQHrf-Ix#2LTd#f z{F*ebu2jPguW%qf$=PUrZo|fP=gCevcIDTv+kpD4Wu3DL)s;ABoxNdG@O1WBXhF5C z4eK^G`8sReIcSHqzL1`#05`4Qm?h99$T#)b1L9t=JfG7f?yC}ugUcYIb+-|I)Lfh0({~u}Z17!Jil?S$n35sKO z1XKb^k)W!~Qg(KWOwVX!c|#Vx>3&kbRrhq$-6Kl@=eei<%si&2yWOvQG}f9#uF;ru z#!Z~;Qt?&@p=v|QRbWb6!4+YU7_Gg?-b#WN64tC!!K4USW!RYAlra!I`+et}d+xdS zcV7#$Q&PX*{m!}Po_p^9|G0E1qcqU)ETj|?94#a`+K_wGVw|UyYH|u5tn3!sTHvJyb8W?Tvxnd-(UTWy?`}6mL#?u}h9Rk}5a`y&r$< zEOxJ0m8A~c=CijeGZ;pOAJIn06tK3xUjkyRB#j)biaT7%MlOf8=x{;1QaFGv7b@?P zORD=?ukr3SPL00@RdC6i@vdal?G-aB`;M02(n9HxAyV?uif6?q49{~Lhp4}wx!A)t zOaU;k%#8>uwhdfhBQ!cByMd42nT@q3XW^dR+{aFMkO^>(5O-OXT;@WmT-(QmgBXEZ zys+`_Lh2wPg~iE0*7n(_NJy$^l#WmWjbZL?t4-G~hk7IPR9{uttMw4#?P#2xzJMxpvlSze%%vemYbPm zObHBXBP3cdIdNGmEXh?KhyZ!l3I;!UXQQIDZ2H!804@ig~0)F+~MzG05M5E0t&Sj7BAWy zyDZ&B#B-+e*rY)4l?tD;AU!3z5s(2L@8f`UIWSeFEj44U7-1;vtaU_;wSq0rL=@qn zXkXvMwnTj5*Rwqe4!3TaL#gI^j$Pfw(yh@!V9T;%iQ7YWbIQV6@d`6Og3a-$k8snFwp4&_7Fb>^y7X8W;K8wgV`f%&mTs=+7abb=)?ryV1B{VQx7$qwbjn>?dMd=*vMFk^ZVX zHN(48x=8VnT&GA*7ne;0%ePMK%4eF@6$jP=4mt5Lv#>Jk;fT-ZGKR+E;R?W|1l#1llhG9^)1+x#tosm}M@_ zA2@H$*ND-x(6eQ2)K8o-#M%pqINvbY=K=Ti1fRB_i>eg36eg}9wIqTl$JuHh<%zfu zO7d`$FwC6DJqh%7h<6WKw&>!8HQHpiN1N;xadO8dPH9^ul7n43a9h`=ZMuHVI_uZR z!=iFXw*_?w7>!^r2fGp-62}yntic=|jqPPdY9-X$)7pN~o6}~vj}hZ09ga*Ssnmk3 zbzK!=tg=!JsEZd$DKWXN>yS|F^k8Y%mn4!jDDo_Nm*Lvxwf&Kf!1-k7BnH0C$^-ok zI?AmcyE}|<@8g-JED zpIQNljtUa3iiAL~PLnhyTh2tJZE_x*7rW_>3qm3XxVBCzBAt&N!houx_i3rCFIt$v zV%@LVg#8$`M5LvjfMlRZ5FKRtkUi6`N9!4gm8O~df@ilzm%!*5Gv6MNoBh=aYzz`f zqkMgQWo2|l%dFJxx{;b|=$G*t?Ak}D+q?QEgAi#rw^(M=DPv%z5y(;!?= z!7UCdOE04c(zyE`VztO~({;0YL@p%}^&${Kog{O6NFCDc*{U^#*y=6?GSfIZxucQlNhMSeQG+BRyC2?RUy=PR z1KGJjpOPNy+A66mK{hQGt8$@?Gv?|LTnGZ{SQ@E&f7_f`Oxf5x;Jd+AA4_}Kl?pg8 zG8v?uOKq6|(ueQy9td2Ri__oSSt%xMQOoMoB9@y|Ty7N#3I(9zXA6axXl5cN%E~=h z?h>|K<%C4e^-TfNW?oPw-)Mfce!8byY*g}{$_%&ky@x6TX)3osP&O( znZV*z2eF}x8PGB_TS$3~m6O<|?S~yTK$_KZFA^K%BCkf#FwtW77&H#b>qU3WpY>LV{AuEJ8T9LgpHjgs{-_bWovy- zuLJP~aXj*zd<(Pe#!m=TF2vF8;x0;%?;Kp@1eZGOa?QeoP&AkjE;+5C12M)zoLrgm z7}%%8UZ!vY;Gqk5)L4M+U2bUbPaE$s7*b>bOo+(JXvwzLaJ_g)JE}^PqdLOgO^XuG zmWZ~&O?B0&-HZHf=29TXV2G);jCmviWOi3XqmjR(0v-`1ORid6>R;qN`Gbo%NTwE51ZvcgMX;5OH^wc#Y5Qi|w#`EY~_+_9jryK%V9oR*S}t3Yag(?a*s z3VEd5Qm|~xLkCwDlNUXt@`ALC@Zoqr)pyJdktBtnlEm1zf+k*xGG$R1O-9hZ%{oy? zdeN*9#I41isa3W@=v#5anV2Tw+^gx#dT7d@<=aZBAUQ;2i(4UaV_Kng%sFI{NB*oq}OlSMj%v2NhSZP;rqSs!^L<*oI-Lv-?BCEj+P zz>N{&njE9CokGhH_CP;l&%@5F&M(RlUtPMoyf)tC_29TUhZ}!NFptDnvmz>B1s75D ztu#dhQ9Z-$-kjNz{*eTy+>+^2&bIWa$z52Arv_oe74hQ%=RB$~lH>LSnSIH~DNs3&N}a&6CEh5Rx}lxdfe zByHB9TLz+l__gE)a95DlompopZFyf#|c*yct}HWbC8B) z7IPq^sbP}e(L>*Vuk~sY?yT6?lSSb0!r?x*kt8$hc$1dK5fz|~X{!00I&2=^*J=Rg}}iU zbXT?@gg$DHu!q=;5-BNFOBd<%ywnx_@+9h^q+%Ofu zvxm3@$X>}=zlO!j?DP=?>6;syP^vsX9`U@IEYiA+@LTe%EXkX^8lH`U&Z$cSi_6y% zlup}Y`8l}IXAUm&zf-LH3w{0axia`-y__t*m_suT z=cob)md#{gF~Zm+?18aH#^b%3SCT3wK{_71ru{5}LY5V=4tnr6%Q(*=9&4Bokd4i= z$z^r+#?`pYzj5_ubUHH&1Y73>Bo{X3QnWg`V-Etf<<6XPvCf=x(&?PDbE$BpFWKMX zjwHSUDyDQfc;-?>*u298s`uRR?R&Q*3{=+pSRaA%AmJj_;ZyGzKEy0Pmx{K0vts8K zd^I(c&u%2(#)c$nke&F@mihRB8z{IRnEJF~-Qf+o?OxY=C*jt{5g*z%?qDS!ZA@}w z-aLJVaL@2GO2YTv6PS<#?B;nV2TMv2*wv;qn8t=9=1zBw!zq=x{`%MyP7E3kS$;4U zWc4aYS|>}6qz?@dL!jG+Gs=q1@%jp=IinHfNWHX%UU^70+owC0=+>%0)xaRvQ zlMjKl^BN%8Z>D?HBvwg6%nT&~lR_gNCyzpM?A*WS$dr0rN+=Ib(oT-ut+l3J!B%AIe#2GbFm_Ry4Rsq~SZC<1ggl|}oBPDTigRv}_GI(aq>8_x>g-rzEj7lU6t*QWIU;8O92VW z_mCUHSXf1!vZFilmW~YQkBE)$(+64MZyq;e$c)C4hWy@);5t8D99^bYkWYa*!^Vq)gdeFRY*ia0AbH_wswu#lv8aPES63%I!M@ zQC2GdSGIRA;|7RyQxutW!joS(L&t+D{Is0Mi=z&%#&BrhQl(U^`?F`ypP$AVcAZR< zUGMDD$-OCwsCG-PWT>aaCvMz3LBbVGzjE)t{yyWo{RF|LcldsYCp7rCtpmD$H#SM- zgeDRZdg882oN-y(=capJ4}rQ77g}K2HL>pP%Gdxm@?nS0_UIZOk=c+&7->aMXqfjo zyVUT428$QL)S@KV4!ntKz2Y3n(&s@}L=1PxBS9Fim+Ez7o#^GJ*sTg(W=f(QtpDlY z0yE3WW>Z7@MS(*y;~s}Fiz>LxhG)4!0#hIee`aS5_hSjxpPiU~N=iA1Y$^W;We=CM zNuMUU5_O%dn;ZO_3YFzc)@B^OngudnBSt}r22%m3G&ZlUv0EJo4HXp1+{n+e^nqVo ztt0!cr3HnXnF2poM{-0KU!yUyIet-y*~i9L>48~p=L(i~Hx4;@NIFk}dJ<^DX?Qh= zi5S_E+{O{)4!Sg5Vx7w^2+fjR4_DW4e7y@Je|AAR)l-MqjF28#-dxwS|9X=EU*Ey0 zf60RtMbNXLPvKeS!VhaVW^=CbV^j6|F7}vncRE+z`ZEP&vvRGZf{b>ctu3#19IoNz zD$a6L{%uz5 z2{@GNhScgOlCDi8qN|A=T)WqCf`^Uj$m%Zl%n8~y70ST?n0%fPbfnke<2v>y@yaxl zSv#PJOTZ-Fn8bYe>~Lld=Ee)a%UFCH%nVoGnYyeK$-y%=YOMAyE-no6z04vs;=<19 z3r}^On?NFlqzG6rvwF)p*tx1{kRoDHCWpWGO>IZnk^rHCt7ddW|U4Q>b~0wI4T$%{~+v*)SI7l$KG-jsN30jfd(u#OnD^glo5wEoJ2`1B$7OLlx0x1mu z3}P);K@4Mp0FnZ?Hu|l;I;0y>t2gN+XOJ60vMbeg>LXQU>he6GPN}8VcemEoar8FG z(AsNLZeHmUFdX9U0uNER$D3ScjF@)jys&$SNZM9_+B#GsQo~TR7)+8xh%wK&PL&nP zq@hIt@^%JWhAQwz42Rlr*0}?2GszWJjv0->MZpk@t9V?6LCDc;aHT5RhXsrky~D7S0|j3zJ|qUXfpjzmeg{XebW`%i^PX-~5 zCM4Wn%DhTrvi;F)L(Xp0B~NBiU545=Z84Q?$W#nyllGlKtVSC!r>4M#awjd5jc(BV z>bwc&`^DgxQbu`|##{+$8j4k>6=HbOB7w*2F>f2Piv&S(3MJ*ch-vNvVv}r8ZMe-{ z9;lLm@*c)vyV6NiiA-{|Y7#ZLbU}3LEZIjD_imo@Nn~^)&G~3y)_4=9&~l2lnOdnj zkrO2hkqK)%t_80766HcJ;vHW#rV-%fj_y+-xg$)vRkr!&;j;`2tN+P;&fKXtn0MaT zUOeGWb-(nmtl!4<1MQMj0INDK3U=TTI?Vx0{gw_yv5X3*K75g?aH1wn45?Q{W`0+s zq>Ot{p(>DF7*qTBm16-p0mPAZh05|72B~d0&kq?N3oaHG(MqR&5|Y|6n<}+A>n7^crpK1P{Mp(flFc2*-vC(>aN%9 z*@~!XESOp>Ml--MA_7}PqM`v0!D6OJ!h9ANm}}EpBD~m3FS{B(gIj(IA}>J0T!fUY zAjR*?s@RhlTqRV9Nq8-u)nh}v!BT!hsD$;(u0lBOAgzK!Eg$apDws)vDO+-+T4@-_ zaccsrz?7_Ol{LwGmeT5ksGxb^t!u+)YD+nxHq`{BWwE7*A=*wgQpj$S^r?^nXGRgM z)0lNB-lQ?_rWUhWxN(A3%`&lIIoo_lew^Iq1ldW=(tlpG@vs^#bm=EA>bRf0rsI&7 zx>)C!%H85v5MqHe!W(urOZ}__%QRVI`NuUpp~^}D%XNr)A8{*;s@f`i`M`{sS1PCu zIStQR^rGG?d=^zu6r6g$rMS8a+@a=va7ohs6?#9M7HyOE(`u00)I8xODD9!d4A@yi za$j238%szvN3502DC)PJ5=v_iFzPrdZ_DgTq1n4#@wOE57Jco~d?K*wc9$F!aN-bR zbN#0781X%k)WopREd<83{gR7FtND;_)V@6b3^9tz5hq#V>so0~(18gSJRql(A4=(m)Q;^T~>jXEa^pyzh z(8b5W#dM0%aGY4=xrEJ|*l8{I2f7cv-zTy0(H%M6SOI=CO9NCTHr|T~2V4cO{mSKK zMa^ekCQ!}xH?Q#hHQX(V3+37O)>BW$?bHs1In8G3T<3tfVkRh+Gjm#Tku9Lum&E%n zF&UJYEHaKOcao$N6RN#bmari-;rTLS5tJt5-Y`9g9w_!4Q=6ElO>zLLR+~S~uxD;r z`3X*}nYX>#tWajP8~pi$`q4DjDFS7peVJp**b3T=t)_?UH|eTCVjWvzlVU40-2-Z> z5ecysXEU~>XlyaW@|-Gf5W+YzCc~oPBoell4N*yHUSVCogVhBVsIAeyG%;PuHZHdA zc+q_=%FIsG@bF;79VLn|3))1vA=H|MLSIa>I7>BS-{>ia=rhxqMn)&1ngl?fdkX-% zd|WWn6yD#wzRQgn=JaKhq$AEf*}h0C-8uKjIbg1MVBp+MZPA7I5nvT%B7+>u-j?gj zN0yjB|SvK_Cqv*!2T*O{*rW&+j)d#~X@DMMZX>IH_V!BCF8Cv3)d1y8# zSzbQDGppqj$hiv5VWK{eJ3ri8(oqUW=Hoaa`*)^E476`r={bpK5-r=RvJZ5y1gN~G zO%^%b^%7f;7;SC$+Ny*Gr4d7EI7fT9c(p-Pd6~dyx3FZ2niis2lc+AwR)p-3qy*R# zqJ>fQfK$23*^n4i3e407=WcQ2y3|N-+iBQSnX_eFQ7Sc&SQBD4YSJY997<5WW*2*| z^h)*Z#t_W-Iqr%!K{09I7MoUXH)_CxVo@%Y>f^EXMj{8;Rcc|>DBx76awdHO9MlOY zwUJWA!d@ul=)^i`Lj6GP+;dJRk5Pjb(|iKC0f!hxYOE_n#cnmR+`BkiL^j#0Ah^bD zl<_Pmj70}%N)DPA9+(=qT)(Yaz_Vs8P!tOU(W`R1S^SCjpbpuE73zaa0rr-#HF6)X{t#4AI%4S}L#{!9i@lTvE3Fd(aHqT@tv*XE=uCn< z_pBP==C1uUK9i|`##-oU{NuXv*)8h_sEcON20l@Fmyz=A zV=9Ah3t&ad?oMKvV!5?0fvQ&%t$j1y@s8@uU}>(uEQ>?7X|DoxYMD>2MpkBc@9#E= z7EcZo(0ymZn<&f>FcDr*QKC0_ zFN3q;-O@6i1d6~3l<_pAh^JyPo6OzrFkZj+CkfCsiuO3nuJOK!J<{dDQX4kN)>2BJ*HubTIMC% zP|x75dP?Z1N4TpV(1vKUO{PvDMvM7!z{4eE^#&PTI}GiQo* z493n!A#`TnS8;heo}1DPgimo{)pz^7)921$8wFb>EVbkS#NqKZSIU9rw8+ur+SB2| z3T4B3N9H(}153A|)kqO+zMrkj78T%~WrY^vu~y|=sO?RmGS2W7%Ua^8CFeNe7(1@U zPWeS$Ia$Q*p2g)V@f3(HSHSxF>t}}#;XSY7c1`AWyKTOi?jWz+Zw>!D-EFcOe4mN1F1w`E+Gh7DG;<$AZw-Wq}Aq) zJv(@+?s`YiyV?QF5euM4EMT&>qN_q>SfM{2*f}KO z@*aD|2Arp*JyyLKP%#Vp~kTxPR1+FWURc0RJ<(fs+|EXb0E&!;Rca3 z=~X6vW7a@2ZE;|+^n#K=o967IvmNv%qi?@Mt;%O4YH(@FtCTCp`D$oVrp5NmNl`i> ztLtgeG7PzGv{IFi+HinAZ0IBd{7G>n@uWDC-krUm=}2j*5^t&sTFMjy<_cv($BM0{ z!-R~`4b`Vgsz^?r9f8psb;tyJ*R~c-IlW2M3ysC1Jc3y%Vuxp#Tv7q4r!-kn=TO5r zn@2mjGh{ZyWK}}mtqF`($`~uriR_1am~F+)=T<(=OPyc_cbV&i0%J%dxVTD^=MNK* zTZx3kQkN@$NG)a+3xb|6QhP~wQcAsbio9ES%Bp~Et4bwfY(D0+f5$S~0wBv#gt zY?_M<%u&QXQIR&c zyWu*;-m|2z>l@Z{_f9%K!c5ckjddI>P|i4v80~Fd-;kR)Ny{@+_&R&mMDjb$JmLG? zBN@lj-zpV2p8=14#2x(=)N`Cdalhw=QR=y2lzVM6k1VcYzp(q$S?m?P2Lak=ckJ!S zJUE$h)>FnO?a@I-JR%*>%9y=Bb9J=8y|=qtE{tFS0X;R1k#&+3!tM3@2XZDD0ildU zMt2rW?A~jWuHxw42=n>O07}2i?VvVdCaPQsCEQPaAmHC_EcGKoE3q!1cAjzrqI$XotQh2{@iePI~8N1*2}9@pr~ zW9mi*r5mzcy;RP(d}$`sD|(|kxEqi|5xE1=b{K~EDm891Ohnm;nH<;g-T=k{?S%7| zSquXg9!SJX=*WRVRl<`sacWBwT@Q{cni7z~8nY0R;UX!(V>t=$2md0ayp-FGhqkv$ zOGSz#5~!1wf|hA1P$$a?dO`|=jtY)%D28^O#g>E#5C@qtdcO84W~)4<4Y7?lH_O<#bsG4f1k@qP@WxWZp;6tjTI%=_r zWw0|Nn!xI~AR*Oym58d+qq7bLQv&j8u177Ss`H_T(XGD%i4{~MD%MxTT_||<%4V%g^|T$Y zDxxe{I;5RC$m!jh&Pi2O=eX7cEnVB?-aV$$-t?*sd0l6?-%0T!?lU%}VJ1hqtWsO* zC`UtZS)xQeKQU5d1gWcdkhK;sgm!Kdl20|{*a%)$ZW1!_37JYstxP2p$rTeaRc2@z zJyYBEC4EAsBB_bz z7URAdeHsx>5EdJ(S~ZM~&_ocGC2z4RYpp=Maw@@O<9 zB_?#_=-7B|Ym=jYy?u$!&P{f_lH2Fn5`a4wuc37taj0HkC_eJYb_wop63?tG zmimksdWwnFH}&rBSwah&!&vr0@?P86%Et##*`-x4-Z|r|UfP$Bd>F$_W0+a^O##p2 z0U2Hn&uzlkUDt$hJ5f+I`8XV}U76@F5IerRK?%~~(<#G3Cp&W%v=n5xwvT1gfXW8t z0@2JKSeV`MZrP6PQ!iLYJGeDHWB^8(ox9)}i$ufG!6si43nS3J9Ae5X1_CM-7`LuPF7R05a~vB zuRImP;_Eh6O&!&A3ia#t&Fg-?5#~0^_0m@@g+`~xjm^u4$QkA-q3NV&7WZr^j$XCT z?>=!s9`5#DKRCpKq}E{-iLpS{fjXfiG-56<>|o7Gdf6p+6))pd6xo#*i?=*jTR)M6 zC3DO)baXq!CHA$zWD4vh-WhR&U8+0r;-o`f1zU)y%DHLIJ4hwm;aqwhaP6}ce!%-^6C@jRhIrUin~j=)M|hl`BHFk_xD zsLoU+T$#y;b?_zJ_Je`2yn1H_H!np_F-%&6k`1R;a4sm9PU9@|l!20`@IAc3>VNo< zzSZIGwHxSQX7c*B+~Oesz78V4xHG>v13z^iI$2ysHRZ9lyEeK(-svehWraX`)g@l1 zkx8kO!Qjf$h8C7KELz&2(xe8)Vu~&xBUOh@>~Kf-s+;l|!pJ9AgoHbM1PU(fW-o$C zP5$g)8DT?O1h~a$YWUb-X@xt~kWKuP6GHi@(-yk|*=u1EG)gjKX3C?dP&s$Ror1-N zqqCU10$Y{`H#V;BpOxW6VpJx*xiMh~OV*5%8&bB>x@AcM>|qfhaO}wSwy84%4(WyQ z`Gv%EjG1|h#w^&{tUc}Q2x+d-}&z+8>CBzEwMMTHZ?F(Ynz)nPV zLrW?nJjc?M0|72O?q23?t}5g57`>YHtGKX()a1gTO#!?WB{Qca>bLo3w-Fe0Ib&l_ zI@7iu`QFi6_4!S$WFwC_a0mZ3vj_?JhC10XHUhxxoeo)xrgs?e?1~-@#8hQL^b2#g9gHgp0l3BQP9oJjSUv-0Ad3{#>Jm?iWX;9uywDuGMHKJ zr&sJu}{7PioOJhzE+klJiW?i zuCoo97zzfT2`c^0_EvkfSHTLOf|MRhBQiuFg(tX6FN+sfumh%4Q?SCDAkpKKi%;}t zy9Uj0@SedeVWq$P>E52*VOSnxi0{33GOa-ljNwJ|Vzb}0J2`1m~XPgyor z295^bj)`}^Um|(HOP9W2;+dU$eVmDfM00usnUjNC^JxGq50(h?SAkf*sW9e<3Mv9) zoSBjZkEc#Rv&|!zY*}E*Li$WgZ5_U^Qdp+|l65ku)^T^TjstF;h^Tb};?^lJwN3%i zIt8HC2~e<(qtQAU%+?85wvJdKWHM>Lq^@T*Eb9qFc^6O~&JynZ&G#JQmJ~J&XJj#~ zMyH3od(YiPDRuB`*733>srfcUP8$GQhUQWr0E48cb~+vhmR%08{bWEqZjg zqR!@#d&l{H9uB2vy%PqzH3H`I`cz(SAV!R0aAOf-a*C+x+Ik->clGV?nv zk2Yb(#N#6r&Y^iMxgi9PS4sjUg3lI;KXlK)lj7@@0TT)X+?!ZEIGX}5h@@H28Mn=S zEfQ2vd8ku5{y=QXGu*cTipDv(Kt?ZPl2rP}qjm=)yhb^ZC*~k)ZyOfKl%TGGowys` zhB09sPM}qhtvtt=q6(7cz7f?x3Q8ul6WK&)#5Rx`lA7_Yyp$1c z5UUv195KqF+G@nQqy}{Zp%eE&Yec`Kwna9L(Dhi_p-rz$(O`@=%d#pUh zp+m(1jl5NHc(A*LGb=Ll%^HhO#jR`ofTwWzeyHR_t@aCq+XxF_f4k_jrD|RhA~GIw z2g!|f%%p~Jk*czKCEQmrkmjVe1f3{F*H4*Y*)uW&tVOgmkF zgxE8x{AL3sztVakj>b5~Yye!gyun}-5(06^%?&Bo?sJpd&n1oW@Q@;G^r8bV0&<1n zXd~E75ZTytYP)~k1uy61XSD|JM>r`lBkO(=7QccLNJ;${F#chjRl+--Hhp4rk z;R;4Vk(w9*^R}D}dUQJM*44khcCe16OiLf>{nHev%w_Gaf$N4}A%r{{x)lLUjbY$s z%WUB(BLPeiVir!gU@6H>y0uFn%)>K96;9?&xf-X`D1kHU!klpP6pLX+qCEFxsqS+K zOf=Omt&11ZD=_s(L=z;)jdN%Vw})3{f3Z1m6E@Gz2yu5EKGtw8FUoud;Dxyd{6fcJ zFWqI40jUR)6U$~dM(dlhoU_zlVB&9Zd+n0$1AT&T%0I`~xWHh67MH``GJmM1#XvCHgmDCRB4UI|9wLt}|jY@Em zVH2%kTqCu$YZ#gQrJHE4oZ~-2`^%(;7P_; zj$nBMg4q>m*gO+TgFD{Pr8Kp2w(Oj+;l=(tHKQvp)1{RLiZ{|h2$Rynhz&iB(oGW* zCZ~&0n`xu831Pi)8qs?vodoQp714?5m58l0Gui|lTWLohDXr>sO1P$>k0n`Q`cRS% z;gd-w4JEVVn!lI!WU#X&Tbuf)*pTF1JEl5oc(-i+Pe zzP!d=gH&b%cMxh5FRtBT>T1%7mRV2b>+xR3Pkmu7VBPlmlP||v+CJALxiAb+e<3y@ z?l^j8(FW@c?Vb?OUg=m=(P_fxL_?`s#ow5fOdr?yqTnn z7BoxnIXNU(CRm6uRt>Y*Hz3!cx`aApPIA^7gIQ+=YXWaI84o1Xs{W zeoT)uGrn{VWLrjZr7c8m4c0BeI1C^|s!r`LdBiAEL-j5_)sQrFI7_RsBvJ9p%tTK< zp-C!^V87BGcye_uEXkQN#^o$>bQTU585l}G%$7K8nszykWvFBz_o-p!8W;X^@91T2 zXfcX_YlpbW90Yc`Rf@oSZ`Wze62qc;0Uz#6kYR*Mileoh-lf&KmEL1mZQ{a(g?XX( zcv^jmNX;PwaAV+3S6NfiDS;XdUY#>~rwS5kU^L8@cuZmf8+=h-p+(>oo>c$vz;OP? zs^{Y?1&}l?KvN)BN|chS6yyYz5`ZivfG(wqmJDq1Mi}pSHxg!Fh8Tig#Nk?89)a2C zfNx>fVAOv+{p&|oIjf+h{wpbdun*=F_semHA-KP+k zD86IGeC%DuRa$y3FUipQQ7r^@XobSy35#}iESeX6VeVEkxfCNuYu(M+GoH0IfalKm zVyA3xHcTg|G7sF?O&@*PHvI@8=kMYCvI-6x1}QV_*-`Ii{v~GQKfw-!n>rA*CZ7=uLJVihrQL+AnNZILrCR*$Lj%0Ne>_VK81gR)NpYG2FUfQ8fW%Dy(d9#~3FIKj zB%2*78V3Tia&cthCXz;UQsEM?F`c`gv@`k|fZdECPx^Z3);)N;H#UV%jH@kOt#NxH zzr+}$f zj<&Fap-d92%OuI+Y(cB2O`AlZS<>ugQjsT-Sb?#e-vH0s#V4eW-R`a?sP>@MSUpv&D>fD_qg zWfFj<3R#M8IC$vcNUCGuSn9_9Wkm!e>1@FdEYvEp|PvT(M(v)^=lO;W!I;fLB;Xl@Q7LnTsPMuJ>ld4sKO^$h9RC z^1e+%BQ2wEo><*l!*P!e-cXW-K~)eJH1RS;e5$OBU+nkB)AiA}Cr7S1+FENCD0<-&t5$@bu60!?s& zNRk`k2uD%85sqR^;p7}%#=DQG2_-lO<;+Zg4i0e1dSt?ZmMs?X%%kf&JIDqsd^L`P z8*8XwJX=Xf8=JM*G9JQY5ROi*jkfhIqAWZSyTNK@l{wRSj*Likkez6XIP|k2ydneq1I8tu=3Uzd`Qa8ljZxJ{!rf@@f=8D?ZwU8i3Qk#nJv{ z0N!-c;SHxa;)#9&EFv=1Mu$AxP` zak*n^6M8mrkc zI%Of340_X|d~IX%IR|^Pg{nkQ+Yzw)GWcmdlTa`MmG^d!Gtu`7|1gE#y_CO(7wYB`yOFM(`C z{rmbJuF4F~_e3Xal*H+6WCFHu03Q#}1(wl!cm~aVxR#A3Hl5yef>QA^ZYr6sHRLz>yrNQ<_4yM~ z%%87Bb5DX>lN5M|m$8(wi~iM3OEL)o%p9M|`R*tos_l&0HWq9!3`&Kjhx4_AiB@ZR zlkOqf!%CXK+K9#Ip!Boo*UUh>ygI-v6i)+62R%1QG$frH#s!`Z;J8mFYty(Sbc`!t zt|U@uX~>tNNVblZ2zHGtXec>NZw=$pU&FWpcZ{3R(zrw`;}S~7WxFoPjuT01+gvH* z0U`F&BLVp_xVhEHCfQr4RK_*I)6QNBkqHEJ`K-=NsPD)J&e@3R;lksOSsj~r*q2lq z`vRJ~+O*;ID_fOk4PcV@ni>R{mo#u>)?&#_5AHIPq(#STQYb+%@4GM=xY=%{-^T^xdb_r{yw@Z&<|{B8 ztr)lnoo}ke>m&rkGfa6GTaQ0A%WCn@(6<= z`VpRo z>h(AJKmgeX9HoK`KgqEB@tf+%)%OsN-yobW7fweK1x~phUw?xSUbyc*=qS}8l4O`V zjO9pXB@+OZ6<8VV&GEh#Tj5AflW)W%E>ZL3XhI~{Yri}}%z^

&@kHn3$kYyR0mn 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%0D*2l<#5XpHTia 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

0dY|tjuq{>0QEE`GiyRt z_So@R6FldPndLb*bC${|tErMwO8-%sg9g`sl;-}UG{-N#|F2V;JAvy99KGqNmGUl% zhpnGAMeA{K+dyCZKZMIakJa?U!}d3|_Q)HRa+h{?`d_J?58Ho;iSe-G&#yh|#v>ae zDLCWjU5Ywv|Chx3PlGWw|C7XfB!1yee@kqCeGCzn(+*C5r`Z1N^t*}g%5MBQ%j3iP zRULMGz37ufhi`JM5bPXCVho#ngiF!OyR9#edqd=GM#)6ve(d>rg1A5MQow!f;l zX5${+xPEY!vmPA%*pB8u_`kCTI3M<;GZsd*9D8(MyBBwatL%*k^OX~RBTl$)5L?z#hX5I#50Zy~ z_XnN^>;pU%co2~^!A>1E;s-$dh&t*G;O#(u-SJ)^pM%^CTnhXya2gO#CPwio6glTp za)eR(B_@#W3&oxD=sn;U02x2GC*BL(i+nKuzXaly&eT@m>A)5s_Wq@EzZZV67*!Aa z9r4CDC}M!%R33^0j2_PfxQ#{Eg*Hy=$}84GyWDJzOBKM!~-ko!&X1m?nFK<4X6aep7L43Iwsq`&V9=YD7M6v5Z}Y5sE{{og8l zq;T$ir2hjL&$RCWl0Pc^HsQ;J7YYAD%KZ?K<*o%XpH{Li|9T+HcP)_RTLEPG3V}a_ z|4BgB?^!_BUmqaj$?mWF&qyG$mO31WBvVfZCIOR<*7h$4Xg#SFK z9Uz|1jd})%s8b&YB8t>4K=zZ(KoeL6WIvh=Y(W0U0z=@R!}I;XHXz-pr^bFwJvH|0 z?*rMdZvnDj-zfGl5Np=dYk{xCMLy@D89aMVI4zAi7d& z77#^F9R*}Q&l3BoK-T~9K-T|2vG)VAe!q0<`h6eB`rQje5~KVAW3`7aeb7kDH1qllO8n}Mv4YlT+}&J%Z^Akw66o6=`0K~s6afyKm? zsG>X|?Zi^p4UI~l={nehVkeftUZb&?i2sAoM^t#?T-dj2EGAw9`#WMMmczbRV=?hs z*tybS`owv#^Tz>TG4XoXM~a!o9@bb) zTnqdCVka(yeXGV|Vjb-7h@H3y_PrXFJ`>u1P+weMRQ`ci!=9|Mn79u1EU^<8!=A0N zn20(Z#Opf46PLiw^&zmBxE^-?9!)!ODePR|0E>yMVSiTa#AUGadI>Bhu7dqzu@fs{ z->96MZg;1rNAm+A#fqE09Xo~4xA0l2NnVYKm#}pm;<~7m<{v;Gl1x` zO8;pp&;vdNI2h;yrU3JR$-rEo3pg2g2!-z=$crGvpcn%P0Djg_*$j0j2?yfoB2%N(YMWD}>)5 z$oaqncaHlUAo8g4!*Lu2=Xh-bUJq;mhJkIsS|ICnEs*ukagzh&_$UQ(9E5@F?@hq< zz!o6;ZyS*P)Fu7V1H>_i`{j8rPu)!(d%*ePguQ?09pUp>P#k-OuM^G})9L>q;cdd7 z6aKOAPlWFm&PkugC&EVvKOlUxaIUi$|1{xW3BOu6^@3@?S@;osHGfbzzl=%yQK#zk zs54A{s_^54Um*Ns;WLB}5grsiRCq}ES;8&h=L&yVc!uzu!p8~!TKFX415eZWyIA<~ z!t;cmE!;1BqVVa$^M%h4zDW3N;nc_EF-Lg4@VUZ&Bz%Ez>TU8^BK%R|%Y{>ylgCQo zEyAx8{+jTx@Lvh97yhB}8-)K^_$J|B3;&+*lp#93JA|hSzgzeS;r9ujD158%T;Y!h z&lk>hKKsLL;ZF*mEBsmE%Z2X{PMt;`FA2Xv_^ZNi70&w!#{Wa%zY_j4;qMB6PWb!6 zUlabZ@DGHy3;#m+pN03u%@vQ&g&!^aknq!le=Yo6;eGn){ACM2N_ejDfx@Q?KUR3L z@RNiu7Ji!Wb;3QuHwmZy1nZ+o_&LIVF8n;KWP|5iICD&&P82dmMYgnOK$ z73CU5an014Oz}M@XqT(S-quI+HNs2LW<0jwKjUjVN>OSoD_$!8UliVg`#&DP#ee$W zbE2ZIPlcEE*Ze5hXm2@2^RtET;lc&SB;nhnJky157JHfS9EmR^yhZp8;P@9gwmA4! z2Y=eZxpfKuB8O9t=@W2e2Rl#;ovJAyw1V-ws>rMKX&kD2WLY@ zcl`4O6TH|^ULvogbTz4uNjjW+l1GWYh7zBOLpFs8!-+47gz!6Zh9d=P)r zp%n|Ap7rZ8@ySKsPKk5JTPc;x@CCW}Se2{#kYeOzAx9{_?BsL`EsfO&LV=b;)TWEK zh;B*bg`4Fi`pu^?Um7bVd9p%6w)n>clNx~lHzmzdDw)YnL3V{}OGKssh_8NMQE%K*is zQd#BH|A9+2J|l_Ri@Y5bc_ArAKWGWQ@fR0gRMn#m0 z$(KN|gaRg%FQIq|B~O&93Q*~t05g@^iSn(qPL$M%QaYjUOnT3xKuRV9WKtky3`2}z zh%pQ?h9Sl<#2AJc!w_Q_Vhlr!VTiE|F_t05s_ZbtScVwO5Mvo)EJKWCh_MWj#SmEx zk;M>Msss#?#SmExk;M>M43WhU;}~KbLyTjHaSZW)hhWYB|8g_)L(9rXS1fcnG1{?X zv}O)NhDMM5m@pXoQRSF3GtV27;fWp*-Ixg;&$x_C7_>PvBV&A47TDPF*#I1+1L9u= ztW;~0M7l9*P3BQ%^>`y4*Xr($ZQ0t=Bz_(i&Sf6|V~MGb!_|#B2@kD!Fg~tH1Lx!U zA}`c^U19u<9KGqr*zqireEk9s$6^m>k$TgOX^`;LE#{G)p>*Ud9=_uFpeqj#bJNiQ(r~Vp;0~P^`a7J1@9jtS8MUe<8@5b$ z-A6K`5Yim`8KYt8z1@(TsOMcr_`VctfL83Y$)bS`ZU$ysG{{y=ef_NkU z4=Nkj@zCEJzA=sY?n}`EwFx5IE@7Va5Nndc3^#4YiMP?$Wn;tZ!AgH?UYe>ZNPPq+ z*n1_gD}jL{wD#Gw25{Hf6y7t@9a~>jF7mOxw~F~X3HeH}TQ%M(A_>y5F;Z9RW-);p zOxOORRZUX7CR+9HMyqcRvlM8o!0zRWy{c~P!UwGD&~ZA0p-2hh3l!&BX%Eoj_t1!5 zbC(^)XFaKF@Syvq-ytP#4S`xjT*Y+$(p|qz*NCc)_WMAL#@rgix(+)nI)iBea{)Gs zuGxdVr(xR6{JrR%H8{n2EuA_BMaqJ5V3(6+ZKV|(F8aRY9n8Hcju5T2sx|1TwU&*` z1KVKjPK^!SzRZuA{K?b}Fsw6F=DeM|uulfQLVwCL+t4y8_U4eNR6@6{;T*r0VNcGl z*$ymhe1Q^X&mNLSGkXxH9u%K-X_${S5wsix&Unf?<$+Vy1rK}Umpx*!fxHFIkRIaX z61$Jq-ZwM@8Wh-T+xh%%_)|4tDD4S%-JNjwmopAQiYCU>d&VOTqqHk>R93>4nsB5P z(EEviLHO@nk?!DJq{m+g$>ioZFvm8JFkW68sca|K4T2Guw689ZC3Ru5giE1XJC_3 z&cqsQNqUJ}lBiq(1q&0K=+**ucbp%ap6s9Vo14NaQw25LJ=B5iXkW&g4D*);w)vTE zN`3gPfoUvBeLjc1-fQIwUDA;)`?R3rVeiI?KMTnF9nZ+f)4uCdxm)t zyCe0Q-~)S=B&M)JB;$83?m6LCpy{C4?6m0zMR=&?|o)Y`o1)I zu**B*Ms?-%kEl!IL~UQZDO$n7cS7v^ER*wrZ#gsTeW;gvFY~JPg4cXQtB?83uOUMb zOtBYFwz!VpT2tk>R#tH+^gj@qfDP+wukzMDrzVQfRer19?ve%4f!uZXpe>-y(xmEx zoBuk-BKsK6U!!6H2lLDi^USaIFGpK)62Ur-ZwAEiJ^9T~R~+zjDnr}>b3i`!MjGaCI?l6G)@k|8S(tn-N$$8I-`wpqy@?&TeiK_o zuSsrSfQrI!Jwd8ONgrW*>VD(_6}@3AATlXPEB-|p?bfs}7`8UZPCcUUz?R8GBYHjD z?eP#9&!Q7&1RxR@Fn!w~nddcsg^MPx>ngFBRXj6hFRQMxuOW_gqCF&GMp>YVm1lks zfP`DX%5UDk0VVdEFGYe{_wedpzt4RWpG!C9I@ea6ue$56fW;2b9stQRE8YoM70v#} zDM`@(N?J82V1`;S5$$IFI+kLG_!fJiQ0{9o7VYMb{>Ib$vVQTK>)$&qmvVn!{?X9F z0>+NN9cLuHU@Uq;?Ib^9))oxz7XOHs{EJ>v!IE}kTH9@0=z8V*=dV5%Kj)3FfT$Q; zI-&9epXU4i+P{RckjR1S*7mQF1&(LziSIaFEpyu6htp=eTH3jagpL`+WSsLp?{aGV z){%bdNog%9jH*_34bqNgQm55`@Z2eEj8GR7J6^-m3lS=_eP-pqgDDU-zD>1YqtRLW zRg!x{4Qd}Uo9?=KIBCX@O0JG6c7L$cz0cO<&}o>KwsIP5oYkU2W5aO@a+}%GaY}95 zm!|S(r>Y7Fqq!se!BOt|A0kRw^t$U#MIzSJA(Soo3pyTdLh{V^;K>tryBoQux8q!{ zSfcyLtpd!?SX1m|CxtqIS%b-eo*#vSVI8H!tm10LcC>57D4%NAipsd;#Je52!Up6j zk%hnN7d#3VTgX6QD>!FbgKOY94voidSHVj6i{s}hbVf8}i!bwKeQOv~p7`;l zb+VvOLCueVS$_y%Hugo1a3S?7g*3xrgP{5_bNTkEDnZ8zUtI>xoA}bE(*m3AAjKuQYhE>l{28X3eY|+aM;2rUXchMVK4B}-Y z=}l;WFbl@|uQ+a_xmZ2eSieILVeO%_MdFeC)xC*s2PvI=^J{M9--_Hu=3qK7`$l7a z7}HG{r>L9!hE^XhAy~KhIGX|MInvbWQ;1D&bn=@xLBLasvb6e|1-B6cx;8k_&?&X* z25N}A=5=S*LM(`4w^h&TN1dPYR{s~MB^0?4kFG2(WSpHRw-V59v%>0HdK-uuvXWX% ze>JQDSRzpdz-aVC&TdTuF0*f_)wVX6gF5p!dm$!TJ{hCTx5coO_6XK*y0_(<`~Bu` zRbI^<9LU)ydgR(s`xO+EW`*5#e@7N97bb;z{xXcET@rE@T5mMorJ7YbXSm}2ukDVi zZq03Cqcx|ASB<|S4qP=%Uz7AEm44@|q3T%PG0)%lowS@l;}h(iTE~t$G`#u3jCTei zjZyK!d^cEkhTyyHpFsfyv!2(~zPoe@yT;LOF#{N~OQ8vQm|D6h)2U`~vjaCi!2-*p z6ulg7KZxu}YpVt{Y+WTaHEjO|HF~(RUH1GlqYyKU(rDog0iPV{6x5xcm5T-7S4RIG zp~Ze`I9RxA!pdj7Vcil&-54gCUOln!TbHXPjo(tYSB9xwTc_5*n|(thw}rt1b)SYu z0)7+mNd)@7%rJk;MPrNM_U(m`k6Jx;dfh(c@V)(h)Q7tDyq#%B6osK#@|7qc8|L~j zY?0fo6Xni!ZLB)RvL5caoR?f&wh!yU1+!JR2>C&Tjh$VJ4rIdTPgvD+(%uR&ctd|T~n$Lrojug6|H^0&!_!+m2h z(v4g);Lhs>mU&a*i~^%B_XMk;^D+dv!7^ypvxe38Q^TssQ7fO|==!(JH$%r^?ZU-P z@Qj#+&6?v3GZfaN-3o=RShYqA#5!$gIt8jHHEDoIrCuiEoe*gAA1jNyp9 zjD83azYfKJTGZRQsevIWTQg!KFM)O@yw((~`zXdfU6p%GY`KSv+KXZNny3*& zgxCw#@J;P^AQG9MYuBcXao26ZjA$>j3~SA9l);wsHFq?6aTV-Sy&%$iaFub_Z9p9Q z3bPt#-rBVuS11#Zk`y{eN1^YqwA0DjLyGs{hPU7ywRJDA5u5D__DbcOeSez=k=^s> zw79RQ3RuT5by-k#?5sPx8j#u+-rygP^}hZ5HFAG%&DmZ1j2Xj*NC zrj@bL;@E+3Gp3z|-)fo4<#pHjh0jC3@mXteUyEmB@2k$>t?hIL)8zLS+cDu~H@awC zJ2v5hF?bv*&N)L$G94fP6VLmZUkC_)qXmQqqlxs8(E`FF1Lpa5Z9DEm1Llh4!+D~5 ztsP|#_0{#^F=Yr3_u|p*Q*S)?Z9?k*+QVbRUKrN4ATCEW`9;2cBTRmi3msK^@mC0l zHKC@oC3+!P8%lT)2%hAHD3jX1lc}gX+9Hjd_`!8zbEFj_=I(C4Vssz9 zc;2P@bG~(vqu|E>r~LyDYf9N6IOhed8Y6LLFva!MSv&ebmC$~oqw6%`PXLjsN;tmx z`W#yzNfs~bZ5X@O&YhJRIFW6K;RlxO$vPUUK^^NQ_;j334JG)U|7Se@`zEi$N| zVf*0`;@XQ6&f1|BtTy$y^T+n&6c0<0%J> zU26Qeu@z3d+G<@nf2)$qqd%44QGW9t`al3(9{Yh$JG~_CfMHlvO1OTrJZK-?a@}yu zMz~U`5MFD8y1Rrt;f;vJZxyRw=C8Et+1Yk_HAm}XTyRDjF8WId$64YTd6N41vvzkf zG^UxTzj1Aj&P46@25=X}1MR2Dp}`oW44}(RZ9w~6ekgMLt?f++r3L;v_V6wy^h$y| zn2skR)z)oyh&Y@X176&pqfL>4)3u zj69~%?WySSnman*U_RBllL71EfA{?2U7GTjj710dK#cd;(+_06WiOubj8a!Ju2IKW zvpt5{s(44gXLv6o*ByRFK;I8U+DrYO1jS=0(%YTe?#=V;e%fts)?aVf|1+eJ@NRSM zH3_?PsL+nNV+wwy!d2`~oJfbo%$J6BIyy2w4dLy4$D8z`T2{XoYL9kweH&w6k@NyO zMn?Ux-gbydFRngte?C}=K!1)Zff8sHo@+LvkLFwRar5S?X%Q-F+OV(XCbe34-+&R)iph{#cr)9Igv%bnGkdD zbi9=k>syuIZ{5C)vEa83L9E4izm+I3a<@|R3T+qv~s9;{~o8c*X7`hPi^fmHZsjz+zfaqY40-^;9(7l7`Z)XjUyC)@7)5Z-?#Qk_50oi zGTYesYL^clz;xIb=;3|sOGj_(lE{@x^+x-xyhqW)RVEXgAM4rtq-~B}pGK}1Sn25U z|3{}d^6I2LVf-)FDHb7G=bnl9SG>!qF)Na;^HZJ_l8D8ZXHhje} zPr8<_RVu$));6PNc+E&^{Z>{%<(F!|p1IcqD^`pc;PPDRFYwH#Ofb%8Fw35D(cMLa zBN3tu8=-It^OVZ!RoLBAG0!vVB8FtDD$Yq@Or8qFD=97U$kHWw1g|jpj=$RuaMiiy*g(Rzp_~EzT^LeDxUoX0nbx!}&;&nlt z`M6oVx`b zarx;*-?F>*bLJz=Lh!Kj(TjfPkDTS~rv5H<#@kDNf24B}&4Ce$`oawJ~`tPRPYJo|=b~{NpXMATm%3=C@(&?|8_T~$h>ag?Y z=+Dl4s%;PqVEfmhyNuVv^>>o9y=DA6+vj0PCz7tCeZH-KXSvi$JGNYtsl=zWeB$N{ zzR0Q$yZny&a^~Y3@gB*yV>~(iFZ`DAKm0BI|4-=MdUToWldP%>x@SA&yzYX@D+NZbp^@_>WZT&0(c5E8;1c015X2<3_Jn281?}`gh@RDcqH&22;UF554aNcUkkFnmV^Ho zcpdN_;9B5j;N`$;gkJ_+0}eenh1B|GKE?x?kMn@c2iK6y#~HwU*pq>bZ$I*ZV-&SZ z$obPfI&d$AhnEGf7CoW3F%A&V%?gW2gH3!>QEs4p9rLXYTu%cMm>khHi1_I znV++P*qb|wT0+dn)%|sOih(T8_as3KrK_+%i%QG=HDuO&Z!75qJr?$oAb|9(mMr$`rl zZq(}Ib^fY=%-lZ*(9w75uBkorLnXehZ%YjqGeUiBM2Qt5h@Eb4dAq*tH2FQ4q17|QikogG!tHE=C z>^CD*bUi)q*8cATGQBF{3k9zfcSA4>xD;}bspym@{QoyPCDZ!>%E$0)P)Tgh&d$$nq2eH-LYI!1Q+~ko6S=GQDyj<4G4> zjzLoco(W|5KO>(E_g_HP?`y)Tam(<0dzAKi!ByfuUvSK+x;$qAk=4{QfXGtnU?7rA zbpshMwF_4Q4@i050y6$rfR_WG6Zfs+{!{p04EOti$ZG0cKqQ%Z8xa3e*WeHHwG7C3 zt^!s9XARN$@dFW6>SQ4Eb3Tyy$pSLobAXKZOd#VO0%W`=iv4J@_Z2&}{LqxCUjSL2 zH-Sw5F(A|bvG6;DUk_w{mH-DJTrrUSs|dIn_%;%|2KY-!ZhBHpr;VuFqs?-TUhRXmVYpEl| zeg=^74i@{dK*swO;@OCJegj+!q{iJE;Nw8Xe;cp?_$vIfo_7El&(lDr^B9ov+zMO^ z`$izc2Z0R#Cm_}Uqs}-(V>Yl4_~$^5n?C^Au5CcJ>u-T<*Ihuy_ZX1v^CRI6K*k>u zP7ONxD-rkUf-ie?exC<2zs*4A_vb*i`-4D+TMb+ZTnuEqCBSQeX93xszXcWn+kv?B zjp{Q@=lkGLo$tQ@neY8T=KFmh=ZT*JneQJ0nNAp31uPft1v0%%;Uff36ZgL(J=&X* z9_#(5K$hdjK$fEk$a35PWc<}YmZJ>FaOVM;|AlAj@WnuezZ}T$g+PY)0~vl8kl~L7 zGW`1z{(kW5!M_K*47fc_m;X^9+wCDB%YQ$R<+p&0FBi!2j~6}|$ap&u5A9zHwgc(D zSMZhLI{xiIT*6YH1Rf3C2ITc67s&jadA8Qz{^Bg9DLbkSh)YE3Z-JPaQ(p$Ig1;w$ zxCEsB1juwZihBr%OG4@bUe)p&AdVLRws!IJ0 zkmcV4L>EkbS?tdP(WI%(V*k0=9~65N5KWzWhuCixy9Hc_bk+e`&ow~S^Ku~5xf;lR zQ3^aA{0ea|0;b~MG$8AL7?9=e2V}m#M!od~z6WG`{~CB5@P|P9D+1Erap&svj|4LP z&U1A7hk#7~H6Z)>ML?!A8dwiJ1;}`g73>(H*Jaf}x)%Z&|0LmK1k=R5pCINkY8ET) za&(=6s3SfXDkd&M)8qkZC!$G|b~#XKmm@!eum(|fBARX>#vZYlSP1(M#7;z!2R3Oe zCSDHvYe2?NMAZ%4qp_HHDePZ}oro+CJfyLhI1~0ENs@mcs$!r=V=)oOpn%wksN#Wz z8jFduVW(y}(9a2)K(8jFc#u#XfwaXjo9 z8jFdgu+IdZiTn{Kz&=}JF>x;Jb-*)WCuYOmps|=(0{g?jGhruAgngUFV&X#B-vOQp zJ8=^1do>mli(&r<@J!f==floH2`nbggFOvMJMjY8(=`?oQ3ZnnVkce*d!fc+BCc11 zR*Ri@5$s`&#l&*h?-x7qV%Vuk3@j!tfc-VG6LVmvW-zdrh%68KLhM8@?9}uH783)o zr}dNk11H0tuCbW-9oT1zotO*zY>malt6*O(c48jvVU5MaX|O*mcA^jVZ5oS-1+f1P z$oeBrfxS&*F>yNV1CP{p;#AoAZ5CiL@eV6=`GBx)Va$fR) zbN9D~~MhvVIaLB(-ZL|H%QC151JI z4`Cqw4Qj$4wr>lN?brrnd$Cg3E*>E3KL^NqE(Nka!$ABS^auVyo=edVJpL}6-xA@G z0(aVT&d}T={D4REF*Z-v+}2jMHNvLCemV+r9wt>De4aplvG4-n(}m9vULxGqTCNp- zmDq0+ULyPv;pM`2311+*Q}`0$M`IG_v0V5$!dD8PDEvC%Q-z0xo5JgbTf%P;eyi|J z!hazAd&2J)euwaF!tWNoOZa`l+k|fw{zu`D2>(j>qr#8D#fQg}!p|1|tni7#cL<*; z{3YR~!e14>T=*VvYDL?cZMJrElh|$T=H0?=?dAi*ZS7{yXq`V>ySY$!AB<5Abhs)n}vske_!}k;Xf39}3S9{zu`Z!aozfS@_?Cw+QcZ6xtts zELL-mTGTmb>-Y)eEoW+uYrWzr!!*Ynt++>1-t#KHXSj9<+dNJ4Ey8mUCyz()pYd}Z z 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 z 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 z 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

^o3YNxE2DPssOy;&gX3 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

I8x&so*SnzciF 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®j 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.TSc=eNxnyL0v)3mJ&eRB3b{+vy^OW3O4WOs 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

*n@HgkxQyd4m@ei1%0Yi{k7_|HriNJyIR@! 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%0D3fJiA6NuS;gKzwA96)-T8lW+rErC$nWk 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